|
13 | 13 |
|
14 | 14 | use PHPUnit\Framework\TestCase; |
15 | 15 | use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConstraintValidatorsPass; |
| 16 | +use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument; |
| 17 | +use Symfony\Component\DependencyInjection\ContainerBuilder; |
| 18 | +use Symfony\Component\DependencyInjection\Reference; |
16 | 19 |
|
17 | 20 | class AddConstraintValidatorsPassTest extends TestCase |
18 | 21 | { |
19 | 22 | public function testThatConstraintValidatorServicesAreProcessed() |
20 | 23 | { |
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'); |
38 | | - |
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)); |
55 | | - |
56 | | - $validatorFactoryDefinition->expects($this->once()) |
57 | | - ->method('replaceArgument') |
58 | | - ->with(1, array( |
59 | | - 'My\Fully\Qualified\Class\Named\Validator1' => 'my_constraint_validator_service1', |
60 | | - 'my_constraint_validator_alias1' => 'my_constraint_validator_service1', |
61 | | - 'My\Fully\Qualified\Class\Named\Validator2' => 'my_constraint_validator_service2', |
62 | | - )); |
| 24 | + $container = new ContainerBuilder(); |
| 25 | + $validatorFactory = $container->register('validator.validator_factory') |
| 26 | + ->setArguments(array(new ServiceLocatorArgument())); |
| 27 | + |
| 28 | + $container->register('my_constraint_validator_service1', Validator1::class) |
| 29 | + ->addTag('validator.constraint_validator', array('alias' => 'my_constraint_validator_alias1')); |
| 30 | + $container->register('my_constraint_validator_service2', Validator2::class) |
| 31 | + ->addTag('validator.constraint_validator'); |
| 32 | + $container->register('my_abstract_constraint_validator') |
| 33 | + ->setAbstract(true) |
| 34 | + ->addTag('validator.constraint_validator'); |
63 | 35 |
|
64 | 36 | $addConstraintValidatorsPass = new AddConstraintValidatorsPass(); |
65 | 37 | $addConstraintValidatorsPass->process($container); |
| 38 | + |
| 39 | + $this->assertEquals(new ServiceLocatorArgument(array( |
| 40 | + Validator1::class => new Reference('my_constraint_validator_service1'), |
| 41 | + 'my_constraint_validator_alias1' => new Reference('my_constraint_validator_service1'), |
| 42 | + Validator2::class => new Reference('my_constraint_validator_service2'), |
| 43 | + )), $validatorFactory->getArgument(0)); |
66 | 44 | } |
67 | 45 |
|
68 | 46 | public function testThatCompilerPassIsIgnoredIfThereIsNoConstraintValidatorFactoryDefinition() |
|
0 commit comments