<?php

declare(strict_types=1);

namespace App\Tests\Functional\Module\Core;

use App\Module\Core\Domain\Repository\PermissionRepositoryInterface;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Symfony\Component\Console\Tester\CommandTester;

/**
 * @internal
 */
final class SyncPermissionsCommandTest extends KernelTestCase
{
    public function testSyncCreatesCorePermissions(): void
    {
        $kernel = self::bootKernel();
        $app    = new Application($kernel);
        $tester = new CommandTester($app->find('app:sync-permissions'));
        $tester->execute([]);
        $tester->assertCommandIsSuccessful();

        $repo = self::getContainer()->get(PermissionRepositoryInterface::class);
        self::assertNotNull($repo->findByCode('core.users.manage'));
        self::assertContains('core.roles.manage', $repo->findAllCodes());
    }
}
