. */ declare(strict_types=1); namespace SP\Tests\Modules\Web\Controllers\AccountManager; use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\Exception; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use SP\Domain\Category\Models\Category; use SP\Domain\Client\Models\Client; use SP\Domain\Core\Exceptions\InvalidClassException; use SP\Domain\Tag\Models\Tag; use SP\Domain\User\Models\User; use SP\Domain\User\Models\UserGroup; use SP\Infrastructure\Database\QueryResult; use SP\Infrastructure\File\FileException; use SP\OutputChecker; use SP\Tests\Generators\CategoryGenerator; use SP\Tests\Generators\ClientGenerator; use SP\Tests\Generators\TagGenerator; use SP\Tests\Generators\UserDataGenerator; use SP\Tests\Generators\UserGroupGenerator; use SP\Tests\IntegrationTestCase; use Symfony\Component\DomCrawler\Crawler; /** * Class AccountManagerTest */ #[Group('integration')] class AccountManagerTest extends IntegrationTestCase { /** * @throws NotFoundExceptionInterface * @throws Exception * @throws FileException * @throws InvalidClassException * @throws ContainerExceptionInterface */ #[Test] public function bulkEdit() { $this->addDatabaseMapperResolver( User::class, QueryResult::withTotalNumRows([UserDataGenerator::factory()->buildUserData()], 1) ); $this->addDatabaseMapperResolver( UserGroup::class, QueryResult::withTotalNumRows([UserGroupGenerator::factory()->buildUserGroupData()], 1) ); $this->addDatabaseMapperResolver( Client::class, QueryResult::withTotalNumRows([ClientGenerator::factory()->buildClient()], 1) ); $this->addDatabaseMapperResolver( Tag::class, QueryResult::withTotalNumRows([TagGenerator::factory()->buildTag()], 1) ); $this->addDatabaseMapperResolver( Category::class, QueryResult::withTotalNumRows([CategoryGenerator::factory()->buildCategory()], 1) ); $container = $this->buildContainer( $this->getModuleDefinitions(), $this->buildRequest('post', 'index.php', ['r' => 'accountManager/bulkEdit'], ['items' => [100, 200, 300]]) ); $this->runApp($container); } #[OutputChecker] private function outputChecker(string $output): void { $crawler = new Crawler($output); $filter = $crawler->filterXPath( '//div[@id="box-popup"]//form[@name="frmAccountBulkEdit"]//select|//input|//div[@class="action-in-box"]/button' )->extract(['_name']); $this->assertNotEmpty($output); $this->assertCount(19, $filter); } }