From 93c5b47e8891282693cc8bb1fedfb4af06d699b0 Mon Sep 17 00:00:00 2001 From: Kevin Decherf Date: Tue, 4 Feb 2020 22:19:45 +0100 Subject: ExportController: fix entries export from search view Fixes #4240 Signed-off-by: Kevin Decherf --- .../CoreBundle/Controller/ExportControllerTest.php | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) (limited to 'tests') diff --git a/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php b/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php index d7ce7c45..36822ab3 100644 --- a/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php @@ -3,9 +3,13 @@ namespace Tests\Wallabag\CoreBundle\Controller; use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; +use Wallabag\CoreBundle\Entity\Entry; class ExportControllerTest extends WallabagCoreTestCase { + private $adminEntry; + private $bobEntry; + public function testLogin() { $client = $this->getClient(); @@ -243,6 +247,30 @@ class ExportControllerTest extends WallabagCoreTestCase $this->assertContains('foo', $content[0]['tags']); } + public function testJsonExportFromSearch() + { + $this->setUpForJsonExportFromSearch(); + + $this->logInAs('admin'); + $client = $this->getClient(); + + ob_start(); + $crawler = $client->request('GET', '/export/search.json?search_entry[term]=entry+search¤tRoute=homepage'); + ob_end_clean(); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + + $headers = $client->getResponse()->headers; + $this->assertSame('application/json', $headers->get('content-type')); + $this->assertSame('attachment; filename="Search entry search articles.json"', $headers->get('content-disposition')); + $this->assertSame('UTF-8', $headers->get('content-transfer-encoding')); + + $content = json_decode($client->getResponse()->getContent(), true); + $this->assertCount(1, $content); + + $this->tearDownForJsonExportFromSearch(); + } + public function testXmlExport() { $this->logInAs('admin'); @@ -282,6 +310,41 @@ class ExportControllerTest extends WallabagCoreTestCase $this->assertNotEmpty('updated_at', (string) $content->entry[0]->updated_at); } + private function setUpForJsonExportFromSearch() + { + $client = $this->getClient(); + $em = $this->getEntityManager(); + + $userRepository = $client->getContainer() + ->get('wallabag_user.user_repository.test'); + + $user = $userRepository->findOneByUserName('admin'); + $this->adminEntry = new Entry($user); + $this->adminEntry->setUrl('http://0.0.0.0/entry-search-admin'); + $this->adminEntry->setTitle('test title entry search admin'); + $this->adminEntry->setContent('this is my content /o/'); + $em->persist($this->adminEntry); + + $user = $userRepository->findOneByUserName('bob'); + $this->bobEntry = new Entry($user); + $this->bobEntry->setUrl('http://0.0.0.0/entry-search-bob'); + $this->bobEntry->setTitle('test title entry search bob'); + $this->bobEntry->setContent('this is my content /o/'); + $em->persist($this->bobEntry); + + $em->flush(); + } + + private function tearDownForJsonExportFromSearch() + { + $em = $this->getEntityManager(); + + $em->remove($this->adminEntry); + $em->remove($this->bobEntry); + + $em->flush(); + } + private function getSanitizedFilename($title) { return preg_replace('/[^A-Za-z0-9\- \']/', '', iconv('utf-8', 'us-ascii//TRANSLIT', $title)); -- cgit v1.2.3