You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
animegame/tests/Controller/RestTestBase.php

51 lines
1.5 KiB

<?php
namespace App\Tests\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\BrowserKit\Client;
use Symfony\Component\Console\Input\StringInput;
use Symfony\Component\Console\Output\NullOutput;
class RestTestBase extends WebTestCase
{
/**
* @var Client
*/
protected $client;
protected function setUp()
{
parent::setUp();
$this->client = static::createClient();
// $this->client->disableReboot(); // uncomment when using prophecy to mock services
self::reloadDoctrineFixtures();
}
protected function reloadDoctrineFixtures()
{
self::runCommand('doctrine:migration:migrate');
self::runCommand('doctrine:fixtures:load --purge-with-truncate -n');
}
protected function runCommand($command)
{
$application = new Application($this->client->getKernel());
$application->setAutoExit(false);
return $application->run(new StringInput($command), new NullOutput());
}
protected function createRequestBuilder(string $acceptType = 'application/json'): ClientRequestBuilder
{
$builder = new ClientRequestBuilder($this->client);
$builder->setAcceptType($acceptType);
return $builder;
}
protected function retrieveEntityManager(): EntityManagerInterface
{
return $this->client->getContainer()->get('doctrine.orm.entity_manager');
}
}