diff --git a/Test/Export/AbstractExportTest.php b/Test/Export/AbstractExportTest.php index 9b5bac92c..d258c0d30 100644 --- a/Test/Export/AbstractExportTest.php +++ b/Test/Export/AbstractExportTest.php @@ -17,10 +17,12 @@ */ namespace Chill\MainBundle\Test\Export; -use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; +use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\NativeQuery; use Symfony\Component\Security\Core\Role\Role; +use Chill\MainBundle\Test\PrepareClientTrait; +use Symfony\Component\HttpFoundation\Request; /** * This class provide a set of tests for exports. @@ -30,8 +32,12 @@ use Symfony\Component\Security\Core\Role\Role; * * @author julien.fastre@champs-libres.coop */ -abstract class AbstractExportTest extends KernelTestCase +abstract class AbstractExportTest extends WebTestCase { + + use PrepareClientTrait; + + /** * Create an instance of the report to test * @@ -318,4 +324,35 @@ abstract class AbstractExportTest extends KernelTestCase } } + + + /** + * Test that the translated title of the export is present the list, + * and that the list of exports (under `/fr/exports/`) is still successfull + */ + public function testListExportPage() + { + /* @var $client \Symfony\Component\BrowserKit\Client */ + $client = $this->getClient(); + $export = $this->getExport(); + $prophet= new \Prophecy\Prophet; + $container = static::$kernel->getContainer(); + + // store the locale in a request + $request = new Request(); + $request->setLocale('fr'); + $container->get('request_stack')->push($request); + // translate the title + $title = $container->get('translator')->trans($export->getTitle()); + + // performs the request to /fr/exports + $crawler = $client->request('GET', '/fr/exports/'); + + // and finally make tests + $this->assertTrue($client->getResponse()->isSuccessful(), + "test that the response of /fr/exports/ is successful"); + $this->assertContains($title, $crawler->text(), + "test that the page /fr/exports/ contains the title of the " + . "exports ('$title')"); + } } diff --git a/Test/PrepareClientTrait.php b/Test/PrepareClientTrait.php new file mode 100644 index 000000000..8893f63ca --- /dev/null +++ b/Test/PrepareClientTrait.php @@ -0,0 +1,50 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +namespace Chill\MainBundle\Test; + +use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; + +/** + * Prepare a client authenticated with a user + * + * @author Julien Fastré + */ +trait PrepareClientTrait +{ + /** + * + * @param string $username + * @param string $password + * @return \Symfony\Component\BrowserKit\Client + * @throws \LogicException + */ + public function getClient( + $username = 'center a_social', + $password = 'password' + ) { + if (!$this instanceof WebTestCase) { + throw new \LogicException(sprintf("The current class does not " + . "implements %s", WebTestCase::class)); + } + + return static::createClient(array(), array( + 'PHP_AUTH_USER' => $username, + 'PHP_AUTH_PW' => $password, + )); + } +}