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

Skip to content

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 65bab99

Browse files
minor #26087 do not mock the container builder in tests (xabbuh)
This PR was merged into the 2.7 branch. Discussion ---------- do not mock the container builder in tests | Q | A | ------------- | --- | Branch? | 2.7 | Bug fix? | no | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | | License | MIT | Doc PR | Commits ------- dab4222 do not mock the container builder in tests
2 parents 6b0109f + dab4222 commit 65bab99

File tree

14 files changed

+289
-654
lines changed

14 files changed

+289
-654
lines changed

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

Lines changed: 21 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -12,80 +12,52 @@
1212
namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\DependencyInjection\ContainerBuilder;
1516
use Symfony\Component\DependencyInjection\Reference;
1617
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddCacheWarmerPass;
1718

1819
class AddCacheWarmerPassTest extends TestCase
1920
{
2021
public function testThatCacheWarmersAreProcessedInPriorityOrder()
2122
{
22-
$services = array(
23-
'my_cache_warmer_service1' => array(0 => array('priority' => 100)),
24-
'my_cache_warmer_service2' => array(0 => array('priority' => 200)),
25-
'my_cache_warmer_service3' => array(),
26-
);
27-
28-
$definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
29-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('findTaggedServiceIds', 'getDefinition', 'hasDefinition'))->getMock();
23+
$container = new ContainerBuilder();
24+
$cacheWarmerDefinition = $container->register('cache_warmer')->addArgument(array());
25+
$container->register('my_cache_warmer_service1')->addTag('kernel.cache_warmer', array('priority' => 100));
26+
$container->register('my_cache_warmer_service2')->addTag('kernel.cache_warmer', array('priority' => 200));
27+
$container->register('my_cache_warmer_service3')->addTag('kernel.cache_warmer');
3028

31-
$container->expects($this->atLeastOnce())
32-
->method('findTaggedServiceIds')
33-
->will($this->returnValue($services));
34-
$container->expects($this->atLeastOnce())
35-
->method('getDefinition')
36-
->with('cache_warmer')
37-
->will($this->returnValue($definition));
38-
$container->expects($this->atLeastOnce())
39-
->method('hasDefinition')
40-
->with('cache_warmer')
41-
->will($this->returnValue(true));
29+
$addCacheWarmerPass = new AddCacheWarmerPass();
30+
$addCacheWarmerPass->process($container);
4231

43-
$definition->expects($this->once())
44-
->method('replaceArgument')
45-
->with(0, array(
32+
$this->assertEquals(
33+
array(
4634
new Reference('my_cache_warmer_service2'),
4735
new Reference('my_cache_warmer_service1'),
4836
new Reference('my_cache_warmer_service3'),
49-
));
50-
51-
$addCacheWarmerPass = new AddCacheWarmerPass();
52-
$addCacheWarmerPass->process($container);
37+
),
38+
$cacheWarmerDefinition->getArgument(0)
39+
);
5340
}
5441

5542
public function testThatCompilerPassIsIgnoredIfThereIsNoCacheWarmerDefinition()
5643
{
57-
$definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
58-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
59-
60-
$container->expects($this->never())->method('findTaggedServiceIds');
61-
$container->expects($this->never())->method('getDefinition');
62-
$container->expects($this->atLeastOnce())
63-
->method('hasDefinition')
64-
->with('cache_warmer')
65-
->will($this->returnValue(false));
66-
$definition->expects($this->never())->method('replaceArgument');
44+
$container = new ContainerBuilder();
6745

6846
$addCacheWarmerPass = new AddCacheWarmerPass();
6947
$addCacheWarmerPass->process($container);
48+
49+
// we just check that the pass does not break if no cache warmer is registered
50+
$this->addToAssertionCount(1);
7051
}
7152

7253
public function testThatCacheWarmersMightBeNotDefined()
7354
{
74-
$definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
75-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
76-
77-
$container->expects($this->atLeastOnce())
78-
->method('findTaggedServiceIds')
79-
->will($this->returnValue(array()));
80-
$container->expects($this->never())->method('getDefinition');
81-
$container->expects($this->atLeastOnce())
82-
->method('hasDefinition')
83-
->with('cache_warmer')
84-
->will($this->returnValue(true));
85-
86-
$definition->expects($this->never())->method('replaceArgument');
55+
$container = new ContainerBuilder();
56+
$cacheWarmerDefinition = $container->register('cache_warmer')->addArgument(array());
8757

8858
$addCacheWarmerPass = new AddCacheWarmerPass();
8959
$addCacheWarmerPass->process($container);
60+
61+
$this->assertSame(array(), $cacheWarmerDefinition->getArgument(0));
9062
}
9163
}

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

Lines changed: 20 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -13,72 +13,40 @@
1313

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

1719
class AddConstraintValidatorsPassTest extends TestCase
1820
{
1921
public function testThatConstraintValidatorServicesAreProcessed()
2022
{
21-
$services = array(
22-
'my_constraint_validator_service1' => array(0 => array('alias' => 'my_constraint_validator_alias1')),
23-
'my_constraint_validator_service2' => array(),
24-
);
25-
26-
$validatorFactoryDefinition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
27-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('findTaggedServiceIds', 'getDefinition', 'hasDefinition'))->getMock();
28-
29-
$validatorDefinition1 = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->setMethods(array('getClass'))->getMock();
30-
$validatorDefinition2 = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->setMethods(array('getClass'))->getMock();
31-
32-
$validatorDefinition1->expects($this->atLeastOnce())
33-
->method('getClass')
34-
->willReturn('My\Fully\Qualified\Class\Named\Validator1');
35-
$validatorDefinition2->expects($this->atLeastOnce())
36-
->method('getClass')
37-
->willReturn('My\Fully\Qualified\Class\Named\Validator2');
23+
$container = new ContainerBuilder();
24+
$constraintValidatorFactoryDefinition = $container->register('validator.validator_factory')
25+
->setArguments(array(new Reference('service_container'), array()));
26+
$container->register('my_constraint_validator_service1', 'My\Fully\Qualified\Class\Named\Validator1')
27+
->addTag('validator.constraint_validator', array('alias' => 'my_constraint_validator_alias1'));
28+
$container->register('my_constraint_validator_service2', 'My\Fully\Qualified\Class\Named\Validator2')
29+
->addTag('validator.constraint_validator');
3830

39-
$container->expects($this->any())
40-
->method('getDefinition')
41-
->with($this->anything())
42-
->will($this->returnValueMap(array(
43-
array('my_constraint_validator_service1', $validatorDefinition1),
44-
array('my_constraint_validator_service2', $validatorDefinition2),
45-
array('validator.validator_factory', $validatorFactoryDefinition),
46-
)));
47-
48-
$container->expects($this->atLeastOnce())
49-
->method('findTaggedServiceIds')
50-
->will($this->returnValue($services));
51-
$container->expects($this->atLeastOnce())
52-
->method('hasDefinition')
53-
->with('validator.validator_factory')
54-
->will($this->returnValue(true));
31+
$addConstraintValidatorsPass = new AddConstraintValidatorsPass();
32+
$addConstraintValidatorsPass->process($container);
5533

56-
$validatorFactoryDefinition->expects($this->once())
57-
->method('replaceArgument')
58-
->with(1, array(
34+
$this->assertEquals(
35+
array(
5936
'My\Fully\Qualified\Class\Named\Validator1' => 'my_constraint_validator_service1',
6037
'my_constraint_validator_alias1' => 'my_constraint_validator_service1',
6138
'My\Fully\Qualified\Class\Named\Validator2' => 'my_constraint_validator_service2',
62-
));
63-
64-
$addConstraintValidatorsPass = new AddConstraintValidatorsPass();
65-
$addConstraintValidatorsPass->process($container);
39+
),
40+
$constraintValidatorFactoryDefinition->getArgument(1)
41+
);
6642
}
6743

6844
public function testThatCompilerPassIsIgnoredIfThereIsNoConstraintValidatorFactoryDefinition()
6945
{
70-
$definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
71-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
72-
73-
$container->expects($this->never())->method('findTaggedServiceIds');
74-
$container->expects($this->never())->method('getDefinition');
75-
$container->expects($this->atLeastOnce())
76-
->method('hasDefinition')
77-
->with('validator.validator_factory')
78-
->will($this->returnValue(false));
79-
$definition->expects($this->never())->method('replaceArgument');
80-
8146
$addConstraintValidatorsPass = new AddConstraintValidatorsPass();
82-
$addConstraintValidatorsPass->process($container);
47+
$addConstraintValidatorsPass->process(new ContainerBuilder());
48+
49+
// we just check that the pass does not fail if no constraint validator factory is registered
50+
$this->addToAssertionCount(1);
8351
}
8452
}

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

Lines changed: 11 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\DependencyInjection\ContainerBuilder;
1516
use Symfony\Component\DependencyInjection\Reference;
1617
use Symfony\Component\HttpFoundation\Request;
1718
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\FragmentRendererPass;
@@ -29,68 +30,26 @@ class LegacyFragmentRendererPassTest extends TestCase
2930
*/
3031
public function testContentRendererWithoutInterface()
3132
{
32-
// one service, not implementing any interface
33-
$services = array(
34-
'my_content_renderer' => array(),
35-
);
36-
37-
$definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
38-
$definition->expects($this->atLeastOnce())
39-
->method('getClass')
40-
->will($this->returnValue('stdClass'));
41-
42-
$builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
43-
$builder->expects($this->any())
44-
->method('hasDefinition')
45-
->will($this->returnValue(true));
46-
47-
// We don't test kernel.fragment_renderer here
48-
$builder->expects($this->atLeastOnce())
49-
->method('findTaggedServiceIds')
50-
->will($this->returnValue($services));
51-
52-
$builder->expects($this->atLeastOnce())
53-
->method('getDefinition')
54-
->will($this->returnValue($definition));
33+
$builder = new ContainerBuilder();
34+
$builder->register('fragment.handler');
35+
$builder->register('my_content_renderer', 'stdClass')
36+
->addTag('kernel.fragment_renderer');
5537

5638
$pass = new FragmentRendererPass();
5739
$pass->process($builder);
5840
}
5941

6042
public function testValidContentRenderer()
6143
{
62-
$services = array(
63-
'my_content_renderer' => array(),
64-
);
65-
66-
$renderer = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
67-
$renderer
68-
->expects($this->once())
69-
->method('addMethodCall')
70-
->with('addRenderer', array(new Reference('my_content_renderer')))
71-
;
72-
73-
$definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
74-
$definition->expects($this->atLeastOnce())
75-
->method('getClass')
76-
->will($this->returnValue('Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\RendererService'));
77-
78-
$builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
79-
$builder->expects($this->any())
80-
->method('hasDefinition')
81-
->will($this->returnValue(true));
82-
83-
// We don't test kernel.fragment_renderer here
84-
$builder->expects($this->atLeastOnce())
85-
->method('findTaggedServiceIds')
86-
->will($this->returnValue($services));
87-
88-
$builder->expects($this->atLeastOnce())
89-
->method('getDefinition')
90-
->will($this->onConsecutiveCalls($renderer, $definition));
44+
$builder = new ContainerBuilder();
45+
$fragmentHandlerDefinition = $builder->register('fragment.handler');
46+
$builder->register('my_content_renderer', 'Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\RendererService')
47+
->addTag('kernel.fragment_renderer');
9148

9249
$pass = new FragmentRendererPass();
9350
$pass->process($builder);
51+
52+
$this->assertEquals(array(array('addRenderer', array(new Reference('my_content_renderer')))), $fragmentHandlerDefinition->getMethodCalls());
9453
}
9554
}
9655

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

Lines changed: 25 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -13,75 +13,52 @@
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('%translator.class%'));
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));
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')->addArgument(new Reference('translator'));
5732

5833
$pass = new LoggingTranslatorPass();
5934
$pass->process($container);
35+
36+
$this->assertEquals(new Reference('translator.logging.inner'), $translationWarmerDefinition->getArgument(0));
6037
}
6138

6239
public function testThatCompilerPassIsIgnoredIfThereIsNotLoggerDefinition()
6340
{
64-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->getMock();
65-
$container->expects($this->once())
66-
->method('hasAlias')
67-
->will($this->returnValue(false));
41+
$container = new ContainerBuilder();
42+
$container->register('identity_translator');
43+
$container->setAlias('translator', 'identity_translator');
6844

6945
$pass = new LoggingTranslatorPass();
7046
$pass->process($container);
47+
48+
// we just check that the compiler pass does not break if a logger is not registered
49+
$this->addToAssertionCount(1);
7150
}
7251

7352
public function testThatCompilerPassIsIgnoredIfThereIsNotTranslatorDefinition()
7453
{
75-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->getMock();
76-
$container->expects($this->at(0))
77-
->method('hasAlias')
78-
->will($this->returnValue(true));
79-
80-
$container->expects($this->at(0))
81-
->method('hasAlias')
82-
->will($this->returnValue(false));
54+
$container = new ContainerBuilder();
55+
$container->register('monolog.logger');
56+
$container->setAlias('logger', 'monolog.logger');
8357

8458
$pass = new LoggingTranslatorPass();
8559
$pass->process($container);
60+
61+
// we just check that the compiler pass does not break if a translator is not registered
62+
$this->addToAssertionCount(1);
8663
}
8764
}

0 commit comments

Comments
 (0)
0