Skip to content

Commit 445eb96

Browse files
committed
minor symfony#61003 [Messenger][Translation] do not mock final classes (xabbuh)
This PR was merged into the 7.4 branch. Discussion ---------- [Messenger][Translation] do not mock final classes | Q | A | ------------- | --- | Branch? | 7.4 | Bug fix? | no | New feature? | no | Deprecations? | no | Issues | Fix symfony#60991 | License | MIT Commits ------- 50ffbe4 do not mock final classes
2 parents 79cd71d + 50ffbe4 commit 445eb96

File tree

2 files changed

+30
-77
lines changed

2 files changed

+30
-77
lines changed

src/Symfony/Component/Messenger/Tests/EventListener/ResetServicesListenerTest.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Symfony\Component\Messenger\Event\WorkerStoppedEvent;
1818
use Symfony\Component\Messenger\EventListener\ResetServicesListener;
1919
use Symfony\Component\Messenger\Worker;
20+
use Symfony\Contracts\Service\ResetInterface;
2021

2122
class ResetServicesListenerTest extends TestCase
2223
{
@@ -31,8 +32,9 @@ public static function provideResetServices(): iterable
3132
*/
3233
public function testResetServices(bool $shouldReset)
3334
{
34-
$servicesResetter = $this->createMock(ServicesResetter::class);
35-
$servicesResetter->expects($shouldReset ? $this->once() : $this->never())->method('reset');
35+
$resettableService = $this->createMock(ResetInterface::class);
36+
$resettableService->expects($shouldReset ? $this->once() : $this->never())->method('reset');
37+
$servicesResetter = new ServicesResetter(new \ArrayIterator(['foo' => $resettableService]), ['foo' => 'reset']);
3638

3739
$event = new WorkerRunningEvent($this->createMock(Worker::class), !$shouldReset);
3840

@@ -42,8 +44,9 @@ public function testResetServices(bool $shouldReset)
4244

4345
public function testResetServicesAtStop()
4446
{
45-
$servicesResetter = $this->createMock(ServicesResetter::class);
46-
$servicesResetter->expects($this->once())->method('reset');
47+
$resettableService = $this->createMock(ResetInterface::class);
48+
$resettableService->expects($this->once())->method('reset');
49+
$servicesResetter = new ServicesResetter(new \ArrayIterator(['foo' => $resettableService]), ['foo' => 'reset']);
4750

4851
$event = new WorkerStoppedEvent($this->createMock(Worker::class));
4952

src/Symfony/Component/Translation/Tests/DataCollector/TranslationDataCollectorTest.php

Lines changed: 23 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,14 @@
1616
use Symfony\Component\HttpFoundation\Response;
1717
use Symfony\Component\Translation\DataCollector\TranslationDataCollector;
1818
use Symfony\Component\Translation\DataCollectorTranslator;
19+
use Symfony\Component\Translation\Loader\ArrayLoader;
20+
use Symfony\Component\Translation\Translator;
1921

2022
class TranslationDataCollectorTest extends TestCase
2123
{
2224
public function testCollectEmptyMessages()
2325
{
24-
$translator = $this->getTranslator();
25-
$translator->expects($this->any())->method('getCollectedMessages')->willReturn([]);
26-
27-
$dataCollector = new TranslationDataCollector($translator);
26+
$dataCollector = new TranslationDataCollector(new DataCollectorTranslator($this->createMock(Translator::class)));
2827
$dataCollector->lateCollect();
2928

3029
$this->assertEquals(0, $dataCollector->getCountMissings());
@@ -35,53 +34,6 @@ public function testCollectEmptyMessages()
3534

3635
public function testCollect()
3736
{
38-
$collectedMessages = [
39-
[
40-
'id' => 'foo',
41-
'translation' => 'foo (en)',
42-
'locale' => 'en',
43-
'domain' => 'messages',
44-
'state' => DataCollectorTranslator::MESSAGE_DEFINED,
45-
'parameters' => [],
46-
'transChoiceNumber' => null,
47-
],
48-
[
49-
'id' => 'bar',
50-
'translation' => 'bar (fr)',
51-
'locale' => 'fr',
52-
'domain' => 'messages',
53-
'state' => DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK,
54-
'parameters' => [],
55-
'transChoiceNumber' => null,
56-
],
57-
[
58-
'id' => 'choice',
59-
'translation' => 'choice',
60-
'locale' => 'en',
61-
'domain' => 'messages',
62-
'state' => DataCollectorTranslator::MESSAGE_MISSING,
63-
'parameters' => ['%count%' => 3],
64-
'transChoiceNumber' => 3,
65-
],
66-
[
67-
'id' => 'choice',
68-
'translation' => 'choice',
69-
'locale' => 'en',
70-
'domain' => 'messages',
71-
'state' => DataCollectorTranslator::MESSAGE_MISSING,
72-
'parameters' => ['%count%' => 3],
73-
'transChoiceNumber' => 3,
74-
],
75-
[
76-
'id' => 'choice',
77-
'translation' => 'choice',
78-
'locale' => 'en',
79-
'domain' => 'messages',
80-
'state' => DataCollectorTranslator::MESSAGE_MISSING,
81-
'parameters' => ['%count%' => 4, '%foo%' => 'bar'],
82-
'transChoiceNumber' => 4,
83-
],
84-
];
8537
$expectedMessages = [
8638
[
8739
'id' => 'foo',
@@ -92,16 +44,18 @@ public function testCollect()
9244
'count' => 1,
9345
'parameters' => [],
9446
'transChoiceNumber' => null,
47+
'fallbackLocale' => null,
9548
],
9649
[
9750
'id' => 'bar',
9851
'translation' => 'bar (fr)',
99-
'locale' => 'fr',
52+
'locale' => 'en',
10053
'domain' => 'messages',
10154
'state' => DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK,
10255
'count' => 1,
10356
'parameters' => [],
10457
'transChoiceNumber' => null,
58+
'fallbackLocale' => 'fr',
10559
],
10660
[
10761
'id' => 'choice',
@@ -116,13 +70,22 @@ public function testCollect()
11670
['%count%' => 4, '%foo%' => 'bar'],
11771
],
11872
'transChoiceNumber' => 3,
73+
'fallbackLocale' => null,
11974
],
12075
];
12176

122-
$translator = $this->getTranslator();
123-
$translator->expects($this->any())->method('getCollectedMessages')->willReturn($collectedMessages);
124-
125-
$dataCollector = new TranslationDataCollector($translator);
77+
$translator = new Translator('en');
78+
$translator->setFallbackLocales(['fr']);
79+
$translator->addLoader('memory', new ArrayLoader());
80+
$translator->addResource('memory', ['foo' => 'foo (en)'], 'en');
81+
$translator->addResource('memory', ['bar' => 'bar (fr)'], 'fr');
82+
$dataCollectorTranslator = new DataCollectorTranslator($translator);
83+
$dataCollectorTranslator->trans('foo');
84+
$dataCollectorTranslator->trans('bar');
85+
$dataCollectorTranslator->trans('choice', ['%count%' => 3]);
86+
$dataCollectorTranslator->trans('choice', ['%count%' => 3]);
87+
$dataCollectorTranslator->trans('choice', ['%count%' => 4, '%foo%' => 'bar']);
88+
$dataCollector = new TranslationDataCollector($dataCollectorTranslator);
12689
$dataCollector->lateCollect();
12790

12891
$this->assertEquals(1, $dataCollector->getCountMissings());
@@ -134,12 +97,10 @@ public function testCollect()
13497

13598
public function testCollectAndReset()
13699
{
137-
$translator = $this->getTranslator();
138-
$translator->method('getLocale')->willReturn('fr');
139-
$translator->method('getFallbackLocales')->willReturn(['en']);
140-
$translator->method('getGlobalParameters')->willReturn(['welcome' => 'Welcome {name}!']);
141-
142-
$dataCollector = new TranslationDataCollector($translator);
100+
$translator = new Translator('fr');
101+
$translator->setFallbackLocales(['en']);
102+
$translator->addGlobalParameter('welcome', 'Welcome {name}!');
103+
$dataCollector = new TranslationDataCollector(new DataCollectorTranslator($translator));
143104
$dataCollector->collect($this->createMock(Request::class), $this->createMock(Response::class));
144105

145106
$this->assertSame('fr', $dataCollector->getLocale());
@@ -152,15 +113,4 @@ public function testCollectAndReset()
152113
$this->assertSame([], $dataCollector->getFallbackLocales());
153114
$this->assertSame([], $dataCollector->getGlobalParameters());
154115
}
155-
156-
private function getTranslator()
157-
{
158-
$translator = $this
159-
->getMockBuilder(DataCollectorTranslator::class)
160-
->disableOriginalConstructor()
161-
->getMock()
162-
;
163-
164-
return $translator;
165-
}
166116
}

0 commit comments

Comments
 (0)