diff options
Diffstat (limited to 'tests/lib/AppFramework/Bootstrap/FunctionInjectorTest.php')
-rw-r--r-- | tests/lib/AppFramework/Bootstrap/FunctionInjectorTest.php | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/lib/AppFramework/Bootstrap/FunctionInjectorTest.php b/tests/lib/AppFramework/Bootstrap/FunctionInjectorTest.php new file mode 100644 index 00000000000..8f6944ce34f --- /dev/null +++ b/tests/lib/AppFramework/Bootstrap/FunctionInjectorTest.php @@ -0,0 +1,68 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace lib\AppFramework\Bootstrap; + +use OC\AppFramework\Bootstrap\FunctionInjector; +use OC\AppFramework\Utility\SimpleContainer; +use OCP\AppFramework\QueryException; +use Test\TestCase; + +interface Foo { +} + +class FunctionInjectorTest extends TestCase { + /** @var SimpleContainer */ + private $container; + + protected function setUp(): void { + parent::setUp(); + + $this->container = new SimpleContainer(); + } + + public function testInjectFnNotRegistered(): void { + $this->expectException(QueryException::class); + + (new FunctionInjector($this->container))->injectFn(static function (Foo $p1): void { + }); + } + + public function testInjectFnNotRegisteredButNullable(): void { + (new FunctionInjector($this->container))->injectFn(static function (?Foo $p1): void { + }); + + // Nothing to assert. No errors means everything is fine. + $this->addToAssertionCount(1); + } + + public function testInjectFnByType(): void { + $this->container->registerService(Foo::class, function () { + $this->addToAssertionCount(1); + return new class implements Foo { + }; + }); + + (new FunctionInjector($this->container))->injectFn(static function (Foo $p1): void { + }); + + // Nothing to assert. No errors means everything is fine. + $this->addToAssertionCount(1); + } + + public function testInjectFnByName(): void { + $this->container->registerParameter('test', 'abc'); + + (new FunctionInjector($this->container))->injectFn(static function ($test): void { + }); + + // Nothing to assert. No errors means everything is fine. + $this->addToAssertionCount(1); + } +} |