. */ namespace SPT\Domain\Plugin\Services; use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\MockObject\Exception; use SP\Domain\Core\Exceptions\ConstraintException; use SP\Domain\Core\Exceptions\QueryException; use SP\Domain\Plugin\Models\Plugin as PluginModel; use SP\Domain\Plugin\Ports\Plugin; use SP\Domain\Plugin\Ports\PluginManagerService; use SP\Domain\Plugin\Services\PluginRegister; use SP\Infrastructure\Common\Repositories\NoSuchItemException; use SPT\UnitaryTestCase; /** * Class PluginRegisterTest */ #[Group('unitary')] class PluginRegisterTest extends UnitaryTestCase { /** * @throws ConstraintException * @throws Exception * @throws QueryException */ public function testRegisterForWithUnregisteredPlugin() { $plugin = $this->createStub(Plugin::class); $plugin->method('getName')->willReturn('test_plugin'); $pluginManagerService = $this->createMock(PluginManagerService::class); $pluginManagerService->expects($this->once()) ->method('getByName') ->with('test_plugin') ->willThrowException(NoSuchItemException::error('test')); $pluginManagerService->expects($this->once()) ->method('create') ->with(new PluginModel(['name' => 'test_plugin', 'enabled' => false])); $pluginRegister = new PluginRegister($this->application, $pluginManagerService); $pluginRegister->registerFor($plugin); } /** * @throws ConstraintException * @throws Exception * @throws QueryException */ public function testRegisterForWithRegisteredPlugin() { $plugin = $this->createStub(Plugin::class); $plugin->method('getName')->willReturn('test_plugin'); $pluginManagerService = $this->createMock(PluginManagerService::class); $pluginManagerService->expects($this->once()) ->method('getByName') ->with('test_plugin'); $pluginManagerService->expects($this->never()) ->method('create'); $pluginRegister = new PluginRegister($this->application, $pluginManagerService); $pluginRegister->registerFor($plugin); } }