3
3
4
4
namespace Lookyman \PHPStan \Symfony ;
5
5
6
- use PHPUnit \Framework \TestCase ;
6
+ use Lookyman \PHPStan \Symfony \Rules \data \ExampleController ;
7
+ use PHPStan \Analyser \Scope ;
8
+ use PHPStan \Analyser \TypeSpecifier ;
9
+ use PHPStan \Testing \TestCase ;
10
+ use PhpParser \Node \Expr \BinaryOp \Concat ;
7
11
use PhpParser \Node \Expr \ClassConstFetch ;
8
12
use PhpParser \Node \Name ;
9
13
use PhpParser \Node \Scalar \String_ ;
14
+ use PhpParser \PrettyPrinter \Standard ;
10
15
11
16
/**
12
17
* @covers \Lookyman\PHPStan\Symfony\ServiceMap
@@ -19,8 +24,13 @@ final class ServiceMapTest extends TestCase
19
24
*/
20
25
public function testGetServiceFromNode (array $ service ): void
21
26
{
27
+ $ printer = new Standard ();
28
+
22
29
$ serviceMap = new ServiceMap (__DIR__ . '/container.xml ' );
23
- self ::assertEquals ($ service , $ serviceMap ->getServiceFromNode (new String_ ($ service ['id ' ])));
30
+ self ::assertSame ($ service , $ serviceMap ->getServiceFromNode (
31
+ new String_ ($ service ['id ' ]),
32
+ new Scope ($ this ->createBroker (), $ printer , new TypeSpecifier ($ printer ), '' )
33
+ ));
24
34
}
25
35
26
36
/**
@@ -46,8 +56,16 @@ public function getServiceFromNodeProvider(): array
46
56
47
57
public function testGetServiceIdFromNode (): void
48
58
{
49
- self ::assertEquals ('foo ' , ServiceMap::getServiceIdFromNode (new String_ ('foo ' )));
50
- self ::assertEquals ('bar ' , ServiceMap::getServiceIdFromNode (new ClassConstFetch (new Name ('bar ' ), '' )));
59
+ $ broker = $ this ->createBroker ();
60
+ $ printer = new Standard ();
61
+ $ scope = new Scope ($ broker , $ printer , new TypeSpecifier ($ printer ), '' );
62
+
63
+ self ::assertSame ('foo ' , ServiceMap::getServiceIdFromNode (new String_ ('foo ' ), $ scope ));
64
+ self ::assertSame ('bar ' , ServiceMap::getServiceIdFromNode (new ClassConstFetch (new Name ('bar ' ), '' ), $ scope ));
65
+ self ::assertSame ('foobar ' , ServiceMap::getServiceIdFromNode (new Concat (new String_ ('foo ' ), new ClassConstFetch (new Name ('bar ' ), '' )), $ scope ));
66
+
67
+ $ scope = $ scope ->enterClass ($ broker ->getClass (ExampleController::class));
68
+ self ::assertEquals (ExampleController::class, ServiceMap::getServiceIdFromNode (new ClassConstFetch (new Name ('static ' ), ExampleController::class), $ scope ));
51
69
}
52
70
53
71
}
0 commit comments