@@ -15,6 +15,7 @@ use Symfony\Component\Console\Command\Command;
1515use Tester \Assert ;
1616use Tester \FileMock ;
1717use Tests \Fixtures \FooCommand ;
18+ use Tests \Fixtures \FooRequestFactory ;
1819
1920require_once __DIR__ . '/../../bootstrap.php ' ;
2021
@@ -52,7 +53,7 @@ Toolkit::test(function (): void {
5253 Assert::type (FooCommand::class, $ container ->getByType (Command::class));
5354});
5455
55- // Provide URL
56+ // Provide URL using default request factory
5657Toolkit::test (function (): void {
5758 $ loader = new ContainerLoader (Environment::getTestDir (), true );
5859 $ class = $ loader ->load (function (Compiler $ compiler ): void {
@@ -209,3 +210,39 @@ Toolkit::test(function (): void {
209210 $ application = $ container ->getByType (Application::class);
210211 Assert::equal ('Hello world ' , $ application ->getName ());
211212});
213+
214+ // Use custom request Factory
215+ Toolkit::test (function (): void {
216+ $ loader = new ContainerLoader (Environment::getTestDir (), true );
217+ $ class = $ loader ->load (function (Compiler $ compiler ): void {
218+ $ compiler ->addExtension ('console ' , new ConsoleExtension (true ));
219+ $ compiler ->addExtension ('http ' , new HttpExtension (true ));
220+ $ compiler ->loadConfig (FileMock::create ('
221+ services:
222+ http.requestFactory: Tests\Fixtures\FooRequestFactory
223+ ' , 'neon ' ));
224+ }, [getmypid (), 11 ]);
225+
226+ /** @var Container $container */
227+ $ container = new $ class ();
228+
229+ Assert::equal (FooRequestFactory::CUSTOM_URL , (string ) $ container ->getService ('http.request ' )->getUrl ());
230+ });
231+
232+ // Throw error on custom factory and console.url set
233+ Toolkit::test (function (): void {
234+ Assert::exception (function (): void {
235+ $ loader = new ContainerLoader (Environment::getTestDir (), true );
236+ $ class = $ loader ->load (function (Compiler $ compiler ): void {
237+ $ compiler ->addExtension ('console ' , new ConsoleExtension (true ));
238+ $ compiler ->addExtension ('http ' , new HttpExtension (true ));
239+ $ compiler ->loadConfig (FileMock::create ('
240+ services:
241+ http.requestFactory: Tests\Fixtures\FooRequestFactory
242+ console:
243+ url: https://contributte.org/
244+ ' , 'neon ' ));
245+ }, [getmypid (), 12 ]);
246+ new $ class ();
247+ }, ServiceCreationException::class, 'Custom http.requestFactory is used, argument console.url should be removed. ' );
248+ });
0 commit comments