9
9
10
10
class ArgumentValidatorTest extends \PHPUnit_Framework_TestCase
11
11
{
12
- public function testFailsWhenParameterHasTypeHintButNoReferenceWasProvidedAsArgument ()
12
+ private $ containerBuilder ;
13
+
14
+ protected function setUp ()
15
+ {
16
+ $ this ->containerBuilder = new ContainerBuilder ();
17
+ }
18
+
19
+ public function testFailsWhenParameterHasTypeHintButNoReferenceOrDefinitionWasProvidedAsArgument ()
20
+ {
21
+ $ class = 'Matthias\SymfonyServiceDefinitionValidator\Tests\Fixtures\ClassWithTypeHintedConstructorArgument ' ;
22
+
23
+ $ validator = new ArgumentValidator ($ this ->containerBuilder , $ this ->createMockResultingClassResolver ());
24
+
25
+ $ this ->setExpectedException ('Matthias\SymfonyServiceDefinitionValidator\Exception\TypeHintMismatchException ' , 'reference ' );
26
+ $ validator ->validate (new \ReflectionParameter (array ($ class , '__construct ' ), 'expected ' ), new \stdClass ());
27
+ }
28
+
29
+ public function testFailsWhenParameterHasTypeHintForObjectButArgumentIsDefinitionForServiceOfWrongType ()
13
30
{
14
- $ class = 'Matthias\SymfonyServiceDefinitionValidator\Tests\Fixtures\ClassWithTypeHintedDateTimeConstructorArgument ' ;
15
- $ containerBuilder = new ContainerBuilder ();
31
+ $ class = 'Matthias\SymfonyServiceDefinitionValidator\Tests\Fixtures\ClassWithTypeHintedConstructorArgument ' ;
32
+ $ this -> containerBuilder = new ContainerBuilder ();
16
33
17
- $ validator = new ArgumentValidator ($ containerBuilder , $ this ->createMockResultingClassResolver ());
34
+ $ inlineDefinition = new Definition ();
35
+
36
+ $ resultingClassResolver = $ this ->createMockResultingClassResolver ();
37
+ $ resultingClassResolver
38
+ ->expects ($ this ->once ())
39
+ ->method ('resolve ' )
40
+ ->with ($ inlineDefinition )
41
+ ->will ($ this ->returnValue ('Matthias\SymfonyServiceDefinitionValidator\Tests\Fixtures\WrongClass ' ));
42
+ $ validator = new ArgumentValidator ($ this ->containerBuilder , $ resultingClassResolver );
18
43
19
- $ this ->setExpectedException ('Matthias\SymfonyServiceDefinitionValidator\Exception\TypeHintMismatchException ' , 'Reference ' );
20
- $ validator ->validate (new \ReflectionParameter (array ($ class , '__construct ' ), 'date ' ), new \ stdClass () );
44
+ $ this ->setExpectedException ('Matthias\SymfonyServiceDefinitionValidator\Exception\TypeHintMismatchException ' , 'ExpectedClass ' );
45
+ $ validator ->validate (new \ReflectionParameter (array ($ class , '__construct ' ), 'expected ' ), $ inlineDefinition );
21
46
}
22
47
23
- public function testFailsWhenParameterHasTypeHintButArgumentIsReferenceToServiceOfWrongTypeWasProvided ()
48
+ public function testFailsWhenParameterHasTypeHintForObjectButArgumentIsReferenceToServiceOfWrongType ()
24
49
{
25
- $ class = 'Matthias\SymfonyServiceDefinitionValidator\Tests\Fixtures\ClassWithTypeHintedDateTimeConstructorArgument ' ;
26
- $ containerBuilder = new ContainerBuilder ();
50
+ $ class = 'Matthias\SymfonyServiceDefinitionValidator\Tests\Fixtures\ClassWithTypeHintedConstructorArgument ' ;
51
+ $ this -> containerBuilder = new ContainerBuilder ();
27
52
$ definition = new Definition ();
28
- $ containerBuilder ->setDefinition ('referenced_service ' , $ definition );
53
+ $ this -> containerBuilder ->setDefinition ('referenced_service ' , $ definition );
29
54
30
- $ parameter = new \ReflectionParameter (array ($ class , '__construct ' ), 'date ' );
55
+ $ parameter = new \ReflectionParameter (array ($ class , '__construct ' ), 'expected ' );
31
56
$ argument = new Reference ('referenced_service ' );
32
57
33
58
$ resultingClassResolver = $ this ->createMockResultingClassResolver ();
@@ -36,16 +61,16 @@ public function testFailsWhenParameterHasTypeHintButArgumentIsReferenceToService
36
61
->method ('resolve ' )
37
62
->with ($ definition )
38
63
->will ($ this ->returnValue ('stdClass ' ));
39
- $ validator = new ArgumentValidator ($ containerBuilder , $ resultingClassResolver );
64
+ $ validator = new ArgumentValidator ($ this -> containerBuilder , $ resultingClassResolver );
40
65
41
- $ this ->setExpectedException ('Matthias\SymfonyServiceDefinitionValidator\Exception\TypeHintMismatchException ' , 'DateTime ' );
66
+ $ this ->setExpectedException ('Matthias\SymfonyServiceDefinitionValidator\Exception\TypeHintMismatchException ' , 'ExpectedClass ' );
42
67
43
68
$ validator ->validate ($ parameter , $ argument );
44
69
}
45
70
46
71
public function testFailsWhenParameterHasArrayTypeHintButArgumentIsNotArray ()
47
72
{
48
- $ class = 'Matthias\SymfonyServiceDefinitionValidator\Tests\Fixtures\ClassWithArrayConstructorArgument ' ;
73
+ $ class = 'Matthias\SymfonyServiceDefinitionValidator\Tests\Fixtures\ClassWithRequiredArrayConstructorArgument ' ;
49
74
50
75
$ parameter = new \ReflectionParameter (array ($ class , '__construct ' ), 'options ' );
51
76
$ argument = 'string ' ;
0 commit comments