<?php

declare(strict_types=1);

/*
 * Chill is a software for social workers
 *
 * For the full copyright and license information, please view
 * the LICENSE file that was distributed with this source code.
 */

namespace Chill\MainBundle\Tests\Controller;

use Chill\DocStoreBundle\Entity\StoredObject;
use Chill\MainBundle\Controller\ExportGenerationController;
use Chill\MainBundle\Entity\ExportGeneration;
use Chill\MainBundle\Export\ExportManager;
use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
use Prophecy\PhpUnit\ProphecyTrait;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Serializer\SerializerInterface;
use Twig\Environment;
use function PHPUnit\Framework\assertEquals;

/**
 * @internal
 *
 * @coversNothing
 */
class ExportGenerationControllerTest extends TestCase
{
    use ProphecyTrait;

    public function testObjectStatus(): void
    {
        $security = $this->prophesize(Security::class);
        $security->isGranted('ROLE_USER')->willReturn(true);
        $environment = $this->prophesize(Environment::class);
        $serializer = $this->prophesize(SerializerInterface::class);
        $serializer->serialize(Argument::any(), 'json', ['groups' => ['read']])->willReturn('{}');
        $exportManager = $this->prophesize(ExportManager::class);

        $pending = new ExportGeneration('dummy', []);

        $controller = new ExportGenerationController($security->reveal(), $environment->reveal(), $serializer->reveal(), $exportManager->reveal());

        $actual = $controller->objectStatus($pending);
        self::assertEquals('{}', $actual->getContent());

        $generated = new ExportGeneration('dummy', []);
        $generated->getStoredObject()->setStatus(StoredObject::STATUS_READY);

        self:assertEquals('{}', $controller->objectStatus($generated)->getContent());
    }
}
