. */ declare(strict_types=1); namespace SP\Tests\Modules\Web\Controllers\Account; use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\MockObject\Exception; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use ReflectionClass; use SP\Domain\Config\Ports\ConfigService; use SP\Domain\Core\Exceptions\InvalidClassException; use SP\Infrastructure\Database\QueryData; use SP\Infrastructure\Database\QueryResult; use SP\Infrastructure\File\FileException; use SP\Tests\IntegrationTestCase; /** * Class SaveDeleteControllerTest */ #[Group('integration')] class SaveDeleteControllerTest extends IntegrationTestCase { /** * @throws ContainerExceptionInterface * @throws Exception * @throws NotFoundExceptionInterface * @throws InvalidClassException * @throws FileException */ public function testSaveDeleteAction() { $configService = self::createStub(ConfigService::class); $configService->method('getByParam')->willReturnArgument(0); $definitions = $this->getModuleDefinitions(); $definitions[ConfigService::class] = $configService; $container = $this->buildContainer( $definitions, $this->buildRequest('post', 'index.php', ['r' => 'account/saveDelete/1']) ); $this->runApp($container); $this->expectOutputString( '{"status":0,"description":"Account removed","data":[],"messages":[]}' ); } protected function getDatabaseReturn(): callable { return function (QueryData $queryData): QueryResult { if (!empty($queryData->getMapClassName())) { $reflection = new ReflectionClass($queryData->getMapClassName()); return new QueryResult([$reflection->newInstance()], 1, 100); } return new QueryResult([], 1, 100); }; } }