|
6 | 6 |
|
7 | 7 | declare(strict_types=1); |
8 | 8 |
|
9 | | -namespace A |
| 9 | +use Nette\DI\Attributes\Inject; |
| 10 | +use Nette\DI\Extensions\InjectExtension; |
| 11 | +use Tester\Assert; |
| 12 | + |
| 13 | + |
| 14 | +class AClass |
10 | 15 | { |
11 | | - class AClass |
12 | | - { |
13 | | - /** @var Different @inject */ |
14 | | - public AInjected $varA; |
15 | | - |
16 | | - /** @var B\BInjected @inject */ |
17 | | - public $varB; |
18 | | - |
19 | | - /** @inject */ |
20 | | - public AInjected $varC; |
21 | | - |
22 | | - /** @var AInjected */ |
23 | | - public $varD; |
24 | | - } |
25 | | - |
26 | | - class AInjected |
27 | | - { |
28 | | - } |
29 | | - |
30 | | - class BadClass |
31 | | - { |
32 | | - /** @inject */ |
33 | | - public AClass|\stdClass $var; |
34 | | - } |
| 16 | + #[Inject] |
| 17 | + public AInjected $varA; |
| 18 | + |
| 19 | + #[Inject] |
| 20 | + public BInjected $varB; |
| 21 | + |
| 22 | + public $varD; |
| 23 | + |
| 24 | + #[Inject] |
| 25 | + public stdClass $varF; |
35 | 26 | } |
36 | 27 |
|
37 | | -namespace A\B |
| 28 | +class BadClass |
38 | 29 | { |
39 | | - use A; |
40 | | - use Nette\DI\Attributes\Inject; |
41 | | - |
42 | | - class BClass extends A\AClass |
43 | | - { |
44 | | - #[Inject] |
45 | | - public BInjected $varF; |
46 | | - } |
47 | | - |
48 | | - class BInjected |
49 | | - { |
50 | | - } |
| 30 | + #[Inject] |
| 31 | + public AClass|stdClass $var; |
51 | 32 | } |
52 | 33 |
|
53 | | -namespace C |
| 34 | +class AInjected |
54 | 35 | { |
55 | | - use A\AInjected; |
56 | | - use A\B; |
57 | | - use C\CInjected as CAlias; |
| 36 | +} |
58 | 37 |
|
59 | | - class CClass |
60 | | - { |
61 | | - /** @var AInjected @inject */ |
62 | | - public $var1; |
| 38 | +class BInjected |
| 39 | +{ |
| 40 | +} |
63 | 41 |
|
64 | | - /** @var B\BInjected @inject */ |
65 | | - public $var2; |
66 | 42 |
|
67 | | - /** @var CAlias @inject */ |
68 | | - public $var3; |
| 43 | +require __DIR__ . '/../bootstrap.php'; |
69 | 44 |
|
70 | | - /** @var CInjected @inject */ |
71 | | - public $var4; |
72 | | - } |
73 | 45 |
|
74 | | - class CInjected |
75 | | - { |
76 | | - } |
77 | | -} |
| 46 | +Assert::same([ |
| 47 | + 'varA' => AInjected::class, |
| 48 | + 'varB' => BInjected::class, |
| 49 | + 'varF' => stdClass::class, |
| 50 | +], InjectExtension::getInjectProperties(AClass::class)); |
78 | 51 |
|
79 | | -namespace { |
80 | | - use Nette\DI\Extensions\InjectExtension; |
81 | | - use Tester\Assert; |
82 | | - |
83 | | - require __DIR__ . '/../bootstrap.php'; |
84 | | - |
85 | | - |
86 | | - Assert::same([ |
87 | | - 'varA' => A\AInjected::class, |
88 | | - 'varB' => A\B\BInjected::class, |
89 | | - 'varC' => A\AInjected::class, |
90 | | - ], InjectExtension::getInjectProperties(A\AClass::class)); |
91 | | - |
92 | | - Assert::same([ |
93 | | - 'varA' => A\AInjected::class, |
94 | | - 'varB' => A\B\BInjected::class, |
95 | | - 'varC' => A\AInjected::class, |
96 | | - 'varF' => A\B\BInjected::class, |
97 | | - ], InjectExtension::getInjectProperties(A\B\BClass::class)); |
98 | | - |
99 | | - Assert::same([ |
100 | | - 'var1' => A\AInjected::class, |
101 | | - 'var2' => A\B\BInjected::class, |
102 | | - 'var3' => C\CInjected::class, |
103 | | - 'var4' => C\CInjected::class, |
104 | | - ], InjectExtension::getInjectProperties(C\CClass::class)); |
105 | | - |
106 | | - Assert::exception( |
107 | | - fn() => InjectExtension::getInjectProperties(A\BadClass::class), |
108 | | - Nette\InvalidStateException::class, |
109 | | - "Type of property A\\BadClass::\$var is expected to not be nullable/built-in/complex, 'A\\AClass|stdClass' given.", |
110 | | - ); |
111 | | -} |
| 52 | +Assert::exception( |
| 53 | + fn() => InjectExtension::getInjectProperties(BadClass::class), |
| 54 | + Nette\InvalidStateException::class, |
| 55 | + "Type of property BadClass::\$var is expected to not be nullable/built-in/complex, 'AClass|stdClass' given.", |
| 56 | +); |
0 commit comments