8000 minor #26165 do not mock the container builder in tests (xabbuh) · mssimi/symfony@6b51add · GitHub
[go: up one dir, main page]

Skip to content

Commit 6b51add

Browse files
minor symfony#26165 do not mock the container builder in tests (xabbuh)
This PR was merged into the 3.4 branch. Discussion ---------- do not mock the container builder in tests | Q | A | ------------- | --- | Branch? | 3.4 | Bug fix? | no | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | | License | MIT | Doc PR | Commits ------- 777acfb do not mock the container builder in tests
2 parents b4cdb19 + 777acfb commit 6b51add

File tree

19 files changed

+306
-511
lines changed

19 files changed

+306
-511
lines changed

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/CachePoolPrunerPassTest.php

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -44,27 +44,17 @@ public function testCompilerPassReplacesCommandArgument()
4444

4545
public function testCompilePassIsIgnoredIfCommandDoesNotExist()
4646
{
47-
$container = $this
48-
->getMockBuilder(ContainerBuilder::class)
49-
->setMethods(array('hasDefinition', 'getDefinition', 'findTaggedServiceIds'))
50-
->getMock();
51-
52-
$container
53-
->expects($this->atLeastOnce())
54-
->method('hasDefinition')
55-
->with(CachePoolPruneCommand::class)
56-
->will($this->returnValue(false));
57-
58-
$container
59-
->expects($this->never())
60-
->method('getDefinition');
47+
$container = new ContainerBuilder();
6148

62-
$container
63-
->expects($this->never())
64-
->method('findTaggedServiceIds');
49+
$definitionsBefore = count($container->getDefinitions());
50+
$aliasesBefore = count($container->getAliases());
6551

6652
$pass = new CachePoolPrunerPass();
6753
$pass->process($container);
54+
55+
// the container is untouched (i.e. no new definitions or aliases)
56+
$this->assertCount($definitionsBefore, $container->getDefinitions());
57+
$this->assertCount($aliasesBefore, $container->getAliases());
6858
}
6959

7060
/**

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/ConfigCachePassTest.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,16 @@ public function testThatCheckersAreProcessedInPriorityOrder()
4444

4545
public function testThatCheckersCanBeMissing()
4646
{
47-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('findTaggedServiceIds'))->getMock();
47+
$container = new ContainerBuilder();
4848

49-
$container->expects($this->atLeastOnce())
50-
->method('findTaggedServiceIds')
51-
->will($this->returnValue(array()));
49+
$definitionsBefore = count($container->getDefinitions());
50+
$aliasesBefore = count($container->getAliases());
5251

5352
$pass = new ConfigCachePass();
5453
$pass->process($container);
54+
55+
// the container is untouched (i.e. no new definitions or aliases)
56+
$this->assertCount($definitionsBefore, $container->getDefinitions());
57+
$this->assertCount($aliasesBefore, $container->getAliases());
5558
}
5659
}

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/LoggingTranslatorPassTest.php

Lines changed: 41 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -13,96 +13,69 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\LoggingTranslatorPass;
16+
use Symfony\Component\DependencyInjection\ContainerBuilder;
17+
use Symfony\Component\DependencyInjection\Reference;
1618

1719
class LoggingTranslatorPassTest extends TestCase
1820
{
1921
public function testProcess()
2022
{
21-
$definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
22-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->getMock();
23-
$parameterBag = $this->getMockBuilder('Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface')->getMock();
24-
25-
$container->expects($this->exactly(2))
26-
->method('hasAlias')
27-
->will($this->returnValue(true));
28-
29-
$container->expects($this->once())
30-
->method('getParameter')
31-
->will($this->returnValue(true));
32-
33-
$container->expects($this->once())
34-
->method('getAlias')
35-
->will($this->returnValue('translation.default'));
36-
37-
$container->expects($this->exactly(3))
38-
->method('getDefinition')
39-
->will($this->returnValue($definition));
40-
41-
$container->expects($this->once())
42-
->method('hasParameter')
43-
->with('translator.logging')
44-
->will($this->returnValue(true));
45-
46-
$definition->expects($this->once())
47-
->method('getClass')
48-
->will($this->returnValue('Symfony\Bundle\FrameworkBundle\Translation\Translator'));
49-
50-
$parameterBag->expects($this->once())
51-
->method('resolveValue')
52-
->will($this->returnValue("Symfony\Bundle\FrameworkBundle\Translation\Translator"));
53-
54-
$container->expects($this->once())
55-
->method('getParameterBag')
56-
->will($this->returnValue($parameterBag));
57-
58-
$container->expects($this->once())
59-
->method('getReflectionClass')
60-
->with('Symfony\Bundle\FrameworkBundle\Translation\Translator')
61-
->will($this->returnValue(new \ReflectionClass('Symfony\Bundle\FrameworkBundle\Translation\Translator')));
62-
63-
$definition->expects($this->once())
64-
->method('getTag')
65-
->with('container.service_subscriber')
66-
->willReturn(array(array('id' => 'translator'), array('id' => 'foo')));
67-
68-
$definition->expects($this->once())
69-
->method('clearTag')
70-
->with('container.service_subscriber');
71-
72-
$definition->expects($this->any())
73-
->method('addTag')
74-
->withConsecutive(
75-
array('container.service_subscriber', array('id' => 'foo')),
76-
array('container.service_subscriber', array('key' => 'translator', 'id' => 'translator.logging.inner'))
77-
);
23+
$container = new ContainerBuilder();
24+
$container->setParameter('translator.logging', true);
25+
$container->setParameter('translator.class', 'Symfony\Component\Translation\Translator');
26+
$container->register('monolog.logger');
27+
$container->setAlias('logger', 'monolog.logger');
28+
$container->register('translator.default', '%translator.class%');
29+
$container->register('translator.logging', '%translator.class%');
30+
$container->setAlias('translator', 'translator.default');
31+
$translationWarmerDefinition = $container->register('translation.warmer')
32+
->addArgument(new Reference('translator'))
33+
->addTag('container.service_subscriber', array('id' => 'translator'))
34+
->addTag('container.service_subscriber', array('id' => 'foo'));
7835

7936
$pass = new LoggingTranslatorPass();
8037
$pass->process($container);
38+
39+
$this->assertEquals(
40+
array('container.service_subscriber' => array(
41+
array('id' => 'foo'),
42+
array('key' => 'translator', 'id' => 'translator.logging.inner'),
43+
)),
44+
$translationWarmerDefinition->getTags()
45+
);
8146
}
8247

8348
public function testThatCompilerPassIsIgnoredIfThereIsNotLoggerDefinition()
8449
{
85-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->getMock();
86-
$container->expects($this->once())
87-
->method('hasAlias')
88-
->will($this->returnValue(false));
50+
$container = new ContainerBuilder();
51+
$container->register('identity_translator');
52+
$container->setAlias('translator', 'identity_translator');
53+
54+
$definitionsBefore = count($container->getDefinitions());
55+
$aliasesBefore = count($container->getAliases());
8956

9057
$pass = new LoggingTranslatorPass();
9158
$pass->process($container);
59+
60+
// the container is untouched (i.e. no new definitions or aliases)
61+
$this->assertCount($definitionsBefore, $container->getDefinitions());
62+
$this->assertCount($aliasesBefore, $container->getAliases());
9263
}
9364

9465
public function testThatCompilerPassIsIgnoredIfThereIsNotTranslatorDefinition()
9566
{
96-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->getMock();
97-
$container->expects($this->at(0))
98-
->method('hasAlias')
99-
->will($this->returnValue(true));
67+
$container = new ContainerBuilder();
68+
$container->register('monolog.logger');
69+
$container->setAlias('logger', 'monolog.logger');
10070

101-
$container->expects($this->at(0))
102-
->method('hasAlias')
103-
->will($this->returnValue(false));
71+
$definitionsBefore = count($container->getDefinitions());
72+
$aliasesBefore = count($container->getAliases());
10473

10574
$pass = new LoggingTranslatorPass();
10675
$pass->process($container);
76+
77+
// the container is untouched (i.e. no new definitions or aliases)
78+
$this->assertCount($definitionsBefore, $container->getDefinitions());
79+
$this->assertCount($aliasesBefore, $container->getAliases());
10780
}
10881
}

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/PropertyInfoPassTest.php

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -57,24 +57,16 @@ public function provideTags()
5757

5858
public function testReturningEmptyArrayWhenNoService()
5959
{
60-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('findTaggedServiceIds'))->getMock();
61-
62-
$container
63-
->expects($this->any())
64-
->method('findTaggedServiceIds')
65-
->will($this->returnValue(array()))
66-
;
60+
$container = new ContainerBuilder();
61+
$propertyInfoExtractorDefinition = $container->register('property_info')
62+
->setArguments(array(array(), array(), array(), array()));
6763

6864
$propertyInfoPass = new PropertyInfoPass();
65+
$propertyInfoPass->process($container);
6966

70-
$method = new \ReflectionMethod(
71-
'Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\PropertyInfoPass',
72-
'findAndSortTaggedServices'
73-
);
74-
$method->setAccessible(true);
75-
76-
$actual = $method->invoke($propertyInfoPass, 'tag', $container);
77-
78-
$this->assertEquals(array(), $actual);
67+
$this->assertEquals(new IteratorArgument(array()), $propertyInfoExtractorDefinition->getArgument(0));
68+
$this->assertEquals(new IteratorArgument(array()), $propertyInfoExtractorDefinition->getArgument(1));
69+
$this->assertEquals(new IteratorArgument(array()), $propertyInfoExtractorDefinition->getArgument(2));
70+
$this->assertEquals(new IteratorArgument(array()), $propertyInfoExtractorDefinition->getArgument(3));
7971
}
8072
}

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/SerializerPassTest.php

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -25,48 +25,30 @@
2525
*/
2626
class SerializerPassTest extends TestCase
2727
{
28+
/**
29+
* @expectedException \RuntimeException
30+
* @expectedExceptionMessage You must tag at least one service as "serializer.normalizer" to use the "serializer" service
31+
*/
2832
public function testThrowExceptionWhenNoNormalizers()
2933
{
30-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds'))->getMock();
31-
32-
$container->expects($this->once())
33-
->method('hasDefinition')
34-
->with('serializer')
35-
->will($this->returnValue(true));
36-
37-
$container->expects($this->once())
38-
->method('findTaggedServiceIds')
39-
->with('serializer.normalizer')
40-
->will($this->returnValue(array()));
41-
42-
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('RuntimeException');
34+
$container = new ContainerBuilder();
35+
$container->register('serializer');
4336

4437
$serializerPass = new SerializerPass();
4538
$serializerPass->process($container);
4639
}
4740

41+
/**
42+
* @expectedException \RuntimeException
43+
* @expectedExceptionMessage You must tag at least one service as "serializer.encoder" to use the "serializer" service
44+
*/
4845
public function testThrowExceptionWhenNoEncoders()
4946
{
50-
$definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
51-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
52-
53-
$container->expects($this->once())
54-
->method('hasDefinition')
55-
->with('serializer')
56-
->will($this->returnValue(true));
57-
58-
$container->expects($this->any())
59-
->method('findTaggedServiceIds')
60-
->will($this->onConsecutiveCalls(
61-
array('n' => array('serializer.normalizer')),
62-
array()
63-
));
64-
65-
$container->expects($this->any())
66-
->method('getDefinition')
67-
->will($this->returnValue($definition));
68-
69-
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('RuntimeException');
47+
$container = new ContainerBuilder();
48+
$container->register('serializer')
49+
->addArgument(array())
50+
->addArgument(array());
51+
$container->register('normalizer')->addTag('serializer.normalizer');
7052

7153
$serializerPass = new SerializerPass();
7254
$serializerPass->process($container);

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/UnusedTagsPassTest.php

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,22 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass;
16+
use Symfony\Component\DependencyInjection\ContainerBuilder;
1617

1718
class UnusedTagsPassTest extends TestCase
1819
{
1920
public function testProcess()
2021
{
2122
$pass = new UnusedTagsPass();
2223

23-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('findTaggedServiceIds', 'findUnusedTags', 'findTags', 'log'))->getMock();
24-
$container->expects($this->once())
25-
->method('log')
26-
->with($pass, 'Tag "kenrel.event_subscriber" was defined on service(s) "foo", "bar", but was never used. Did you mean "kernel.event_subscriber"?');
27-
$container->expects($this->once())
28-
->method('findTags')
29-
->will($this->returnValue(array('kenrel.event_subscriber')));
30-
$container->expects($this->once())
31-
->method('findUnusedTags')
32-
->will($this->returnValue(array('kenrel.event_subscriber', 'form.type')));
33-
$container->expects($this->once())
34-
->method('findTaggedServiceIds')
35-
->with('kenrel.event_subscriber')
36-
->will($this->returnValue(array(
37-
'foo' => array(),
38-
'bar' => array(),
39-
)));
24+
$container = new ContainerBuilder();
25+
$container->register('foo')
26+
->addTag('kenrel.event_subscriber');
27+
$container->register('bar')
28+
->addTag('kenrel.event_subscriber');
4029

4130
$pass->process($container);
31+
32+
$this->assertSame(array(sprintf('%s: Tag "kenrel.event_subscriber" was defined on service(s) "foo", "bar", but was never used. Did you mean "kernel.event_subscriber"?', UnusedTagsPass::class)), $container->getCompiler()->getLog());
4233
}
4334
}

0 commit comments

Comments
 (0)
0