|
13 | 13 |
|
14 | 14 | use PHPUnit\Framework\TestCase;
|
15 | 15 | use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConstraintValidatorsPass;
|
| 16 | +use Symfony\Component\DependencyInjection\ContainerBuilder; |
| 17 | +use Symfony\Component\DependencyInjection\Reference; |
16 | 18 |
|
17 | 19 | class AddConstraintValidatorsPassTest extends TestCase
|
18 | 20 | {
|
19 | 21 | public function testThatConstraintValidatorServicesAreProcessed()
|
20 | 22 | {
|
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 | + $validatorFactoryDefinition = $container->register('validator.validator_factory') |
| 25 | + ->setArguments(array(new Reference('service_container'), array())); |
38 | 26 |
|
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 |
| - ))); |
| 27 | + $container->register('my_constraint_validator_service1', 'My\Fully\Qualified\Class\Named\Validator1') |
| 28 | + ->addTag('validator.constraint_validator', array('alias' => 'my_constraint_validator_alias1')); |
| 29 | + $container->register('my_constraint_validator_service2', 'My\Fully\Qualified\Class\Named\Validator2') |
| 30 | + ->addTag('validator.constraint_validator'); |
47 | 31 |
|
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)); |
| 32 | + $addConstraintValidatorsPass = new AddConstraintValidatorsPass(); |
| 33 | + $addConstraintValidatorsPass->process($container); |
55 | 34 |
|
56 |
| - $validatorFactoryDefinition->expects($this->once()) |
57 |
| - ->method('replaceArgument') |
58 |
| - ->with(1, array( |
| 35 | + $this->assertEquals( |
| 36 | + array( |
59 | 37 | 'My\Fully\Qualified\Class\Named\Validator1' => 'my_constraint_validator_service1',
|
60 | 38 | 'my_constraint_validator_alias1' => 'my_constraint_validator_service1',
|
61 | 39 | 'My\Fully\Qualified\Class\Named\Validator2' => 'my_constraint_validator_service2',
|
62 |
| - )); |
63 |
| - |
64 |
| - $addConstraintValidatorsPass = new AddConstraintValidatorsPass(); |
65 |
| - $addConstraintValidatorsPass->process($container); |
| 40 | + ), |
| 41 | + $validatorFactoryDefinition->getArgument(1) |
| 42 | + ); |
66 | 43 | }
|
67 | 44 |
|
68 | 45 | public function testThatCompilerPassIsIgnoredIfThereIsNoConstraintValidatorFactoryDefinition()
|
69 | 46 | {
|
70 | 47 | $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
|
71 |
| - $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock(); |
| 48 | + $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('has', 'findTaggedServiceIds', 'getDefinition'))->getMock(); |
72 | 49 |
|
73 | 50 | $container->expects($this->never())->method('findTaggedServiceIds');
|
74 | 51 | $container->expects($this->never())->method('getDefinition');
|
75 | 52 | $container->expects($this->atLeastOnce())
|
76 |
| - ->method('hasDefinition') |
| 53 | + ->method('has') |
77 | 54 | ->with('validator.validator_factory')
|
78 | 55 | ->will($this->returnValue(false));
|
79 | 56 | $definition->expects($this->never())->method('replaceArgument');
|
|
0 commit comments