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

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-
)));
57AE 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