|
2 | 2 |
|
3 | 3 | namespace BulkGate\Plugin\DI\Test; |
4 | 4 |
|
5 | | -/** |
6 | | - * @author Lukáš Piják 2023 TOPefekt s.r.o. |
7 | | - * @link https://www.bulkgate.com/ |
8 | | - */ |
| 5 | +require __DIR__ . '/../bootstrap.php'; |
| 6 | +require_once __DIR__ . '/Assets/TestClass.php'; |
9 | 7 |
|
| 8 | +use DateTime; |
10 | 9 | use Tester\{Assert, TestCase}; |
11 | | -use Connection, TestClassEntity, ConnectionTest; |
| 10 | +use Connection, TestClassEntity, ConnectionTest, TestExternalService; |
12 | 11 | use BulkGate\Plugin\DI\{AutoWiringException, Container, InvalidStateException, MissingParameterException, MissingServiceException}; |
13 | 12 |
|
14 | | -require __DIR__ . '/../bootstrap.php'; |
15 | | -require_once __DIR__ . '/Assets/TestClass.php'; |
16 | | - |
17 | 13 | /** |
| 14 | + * @author Lukáš Piják 2023 TOPefekt s.r.o. |
| 15 | + * @link https://www.bulkgate.com/ |
18 | 16 | * @testCase |
19 | 17 | */ |
20 | 18 | class ContainerTest extends TestCase |
@@ -96,6 +94,9 @@ class ContainerTest extends TestCase |
96 | 94 | $container['entity'] = TestClassEntity::class; |
97 | 95 |
|
98 | 96 | Assert::exception(fn() => $container->getByClass(TestClassEntity::class), MissingParameterException::class, 'Missing \'string\' parameter \'TestClassEntity::$name\''); |
| 97 | + |
| 98 | + $container['external'] = ['factory' => \TestExternalService::class]; |
| 99 | + Assert::exception(fn () => $container->getByClass(\TestExternalService::class), MissingServiceException::class, "Service 'DateTime' not found"); |
99 | 100 | } |
100 | 101 |
|
101 | 102 |
|
@@ -134,8 +135,11 @@ class ContainerTest extends TestCase |
134 | 135 | { |
135 | 136 | $container = new Container('rewrite'); |
136 | 137 | $container['production'] = ['factory' => \ConnectionTest::class, 'factory_method' => fn () => new \ConnectionProduction()]; |
| 138 | + $container['external'] = ['factory' => \TestExternalService::class, 'factory_method' => fn () => new TestExternalService(new DateTime())]; |
137 | 139 |
|
138 | 140 | Assert::exception(fn () => $container->getByClass(\Connection::class), MissingParameterException::class, 'Factory method must return instance of \'ConnectionTest\''); |
| 141 | + |
| 142 | + Assert::type(TestExternalService::class, $container->getByClass(\TestExternalService::class)); |
139 | 143 | } |
140 | 144 |
|
141 | 145 |
|
|
0 commit comments