From 958e77e6a7c779de11f0f070b70c861c246a959f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 7 Nov 2019 12:17:01 +0100 Subject: Added elCurator import --- .../Controller/ElcuratorControllerTest.php | 132 +++++++++++++++++++++ .../Controller/ImportControllerTest.php | 2 +- .../Controller/PinboardControllerTest.php | 1 + .../Wallabag/ImportBundle/fixtures/elcurator.json | 13 ++ 4 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 tests/Wallabag/ImportBundle/Controller/ElcuratorControllerTest.php create mode 100644 tests/Wallabag/ImportBundle/fixtures/elcurator.json (limited to 'tests') diff --git a/tests/Wallabag/ImportBundle/Controller/ElcuratorControllerTest.php b/tests/Wallabag/ImportBundle/Controller/ElcuratorControllerTest.php new file mode 100644 index 00000000..18507054 --- /dev/null +++ b/tests/Wallabag/ImportBundle/Controller/ElcuratorControllerTest.php @@ -0,0 +1,132 @@ +logInAs('admin'); + $client = $this->getClient(); + + $crawler = $client->request('GET', '/import/elcurator'); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + $this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); + $this->assertSame(1, $crawler->filter('input[type=file]')->count()); + } + + public function testImportElcuratorWithRabbitEnabled() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 1); + + $crawler = $client->request('GET', '/import/elcurator'); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + $this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); + $this->assertSame(1, $crawler->filter('input[type=file]')->count()); + + $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0); + } + + public function testImportElcuratorBadFile() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $crawler = $client->request('GET', '/import/elcurator'); + $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); + + $data = [ + 'upload_import_file[file]' => '', + ]; + + $client->submit($form, $data); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + } + + public function testImportElcuratorWithRedisEnabled() + { + $this->checkRedis(); + $this->logInAs('admin'); + $client = $this->getClient(); + + $client->getContainer()->get('craue_config')->set('import_with_redis', 1); + + $crawler = $client->request('GET', '/import/elcurator'); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + $this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); + $this->assertSame(1, $crawler->filter('input[type=file]')->count()); + + $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); + + $file = new UploadedFile(__DIR__ . '/../fixtures/elcurator.json', 'elcurator.json'); + + $data = [ + 'upload_import_file[file]' => $file, + ]; + + $client->submit($form, $data); + + $this->assertSame(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); + $this->assertContains('flashes.import.notice.summary', $body[0]); + + $this->assertNotEmpty($client->getContainer()->get('wallabag_core.redis.client')->lpop('wallabag.import.elcurator')); + + $client->getContainer()->get('craue_config')->set('import_with_redis', 0); + } + + public function testImportElcuratorWithFile() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $crawler = $client->request('GET', '/import/elcurator'); + $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); + + $file = new UploadedFile(__DIR__ . '/../fixtures/elcurator.json', 'elcurator.json'); + + $data = [ + 'upload_import_file[file]' => $file, + ]; + + $client->submit($form, $data); + + $this->assertSame(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); + $this->assertContains('flashes.import.notice.summary', $body[0]); + + $content = $client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:Entry') + ->findByUrlAndUserId( + 'https://devblog.lexik.fr/qualite-de-code-integration-de-php-git-hooks-dans-symfony2/', + $this->getLoggedInUserId() + ); + + $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content); + + $this->assertSame('Qualité de code - Intégration de php-git-hooks dans Symfony2 - Experts Symfony et Drupal - Lexik', $content->getTitle()); + $this->assertSame('2015-09-09', $content->getCreatedAt()->format('Y-m-d')); + $this->assertTrue($content->isStarred(), 'Entry is starred'); + + $tags = $content->getTags(); + $this->assertContains('tag1', $tags, 'It includes the "tag1" tag'); + $this->assertContains('tag2', $tags, 'It includes the "tag2" tag'); + } +} diff --git a/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php b/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php index e1ec7c65..f0edb78d 100644 --- a/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php +++ b/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php @@ -24,6 +24,6 @@ class ImportControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/'); $this->assertSame(200, $client->getResponse()->getStatusCode()); - $this->assertSame(8, $crawler->filter('blockquote')->count()); + $this->assertSame(9, $crawler->filter('blockquote')->count()); } } diff --git a/tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php b/tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php index 90192278..963759b1 100644 --- a/tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php +++ b/tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php @@ -121,6 +121,7 @@ class PinboardControllerTest extends WallabagCoreTestCase $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content); $this->assertNotEmpty($content->getMimetype(), 'Mimetype for https://ma.ttias.be is ok'); $this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for https://ma.ttias.be is ok'); + $this->assertNull($content->getLanguage(), 'Language for https://ma.ttias.be is null'); $tags = $content->getTags(); $this->assertContains('foot', $tags, 'It includes the "foot" tag'); diff --git a/tests/Wallabag/ImportBundle/fixtures/elcurator.json b/tests/Wallabag/ImportBundle/fixtures/elcurator.json new file mode 100644 index 00000000..58972d93 --- /dev/null +++ b/tests/Wallabag/ImportBundle/fixtures/elcurator.json @@ -0,0 +1,13 @@ +[ + { + "created_at": "2015-09-09 11:10:32 UTC", + "title": "Qualité de code - Intégration de php-git-hooks dans Symfony2 - Experts Symfony et Drupal - Lexik", + "url": "https://devblog.lexik.fr/qualite-de-code-integration-de-php-git-hooks-dans-symfony2/", + "description": null, + "tags": [ + "tag1", + "tag2" + ], + "is_saved": true + } +] -- cgit v1.2.3