3 namespace Tests\Wallabag\ImportBundle\Controller
;
5 use Tests\Wallabag\CoreBundle\WallabagCoreTestCase
;
6 use Symfony\Component\HttpFoundation\File\UploadedFile
;
8 class InstapaperControllerTest
extends WallabagCoreTestCase
10 public function testImportInstapaper()
12 $this->logInAs('admin');
13 $client = $this->getClient();
15 $crawler = $client->request('GET', '/import/instapaper');
17 $this->assertEquals(200, $client->getResponse()->getStatusCode());
18 $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count());
19 $this->assertEquals(1, $crawler->filter('input[type=file]')->count());
22 public function testImportInstapaperWithRabbitEnabled()
24 $this->logInAs('admin');
25 $client = $this->getClient();
27 $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 1);
29 $crawler = $client->request('GET', '/import/instapaper');
31 $this->assertEquals(200, $client->getResponse()->getStatusCode());
32 $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count());
33 $this->assertEquals(1, $crawler->filter('input[type=file]')->count());
35 $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0);
38 public function testImportInstapaperBadFile()
40 $this->logInAs('admin');
41 $client = $this->getClient();
43 $crawler = $client->request('GET', '/import/instapaper');
44 $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
47 'upload_import_file[file]' => '',
50 $client->submit($form, $data);
52 $this->assertEquals(200, $client->getResponse()->getStatusCode());
55 public function testImportInstapaperWithRedisEnabled()
58 $this->logInAs('admin');
59 $client = $this->getClient();
60 $client->getContainer()->get('craue_config')->set('import_with_redis', 1);
62 $crawler = $client->request('GET', '/import/instapaper');
64 $this->assertEquals(200, $client->getResponse()->getStatusCode());
65 $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count());
66 $this->assertEquals(1, $crawler->filter('input[type=file]')->count());
68 $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
70 $file = new UploadedFile(__DIR__
.'/../fixtures/instapaper-export.csv', 'instapaper.csv');
73 'upload_import_file[file]' => $file,
76 $client->submit($form, $data);
78 $this->assertEquals(302, $client->getResponse()->getStatusCode());
80 $crawler = $client->followRedirect();
82 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
83 $this->assertContains('flashes.import.notice.summary', $body[0]);
85 $this->assertNotEmpty($client->getContainer()->get('wallabag_core.redis.client')->lpop('wallabag.import.instapaper'));
87 $client->getContainer()->get('craue_config')->set('import_with_redis', 0);
90 public function testImportInstapaperWithFile()
92 $this->logInAs('admin');
93 $client = $this->getClient();
95 $crawler = $client->request('GET', '/import/instapaper');
96 $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
98 $file = new UploadedFile(__DIR__
.'/../fixtures/instapaper-export.csv', 'instapaper.csv');
101 'upload_import_file[file]' => $file,
104 $client->submit($form, $data);
106 $this->assertEquals(302, $client->getResponse()->getStatusCode());
108 $crawler = $client->followRedirect();
110 $content = $client->getContainer()
111 ->get('doctrine.orm.entity_manager')
112 ->getRepository('WallabagCoreBundle:Entry')
113 ->findByUrlAndUserId(
114 'http://www.liberation.fr/societe/2012/12/06/baumettes-un-tour-en-cellule_865551',
115 $this->getLoggedInUserId()
118 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
119 $this->assertContains('flashes.import.notice.summary', $body[0]);
121 $this->assertNotEmpty($content->getMimetype());
122 $this->assertNotEmpty($content->getPreviewPicture());
123 $this->assertNotEmpty($content->getLanguage());
124 $this->assertEquals(0, count($content->getTags()));
125 $this->assertInstanceOf(\DateTime
::class, $content->getCreatedAt());
128 public function testImportInstapaperWithFileAndMarkAllAsRead()
130 $this->logInAs('admin');
131 $client = $this->getClient();
133 $crawler = $client->request('GET', '/import/instapaper');
134 $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
136 $file = new UploadedFile(__DIR__
.'/../fixtures/instapaper-export.csv', 'instapaper-read.csv');
139 'upload_import_file[file]' => $file,
140 'upload_import_file[mark_as_read]' => 1,
143 $client->submit($form, $data);
145 $this->assertEquals(302, $client->getResponse()->getStatusCode());
147 $crawler = $client->followRedirect();
149 $content1 = $client->getContainer()
150 ->get('doctrine.orm.entity_manager')
151 ->getRepository('WallabagCoreBundle:Entry')
152 ->findByUrlAndUserId(
153 'https://redditblog.com/2016/09/20/amp-and-reactredux/',
154 $this->getLoggedInUserId()
157 $this->assertTrue($content1->isArchived());
159 $content2 = $client->getContainer()
160 ->get('doctrine.orm.entity_manager')
161 ->getRepository('WallabagCoreBundle:Entry')
162 ->findByUrlAndUserId(
163 'https://medium.com/@the_minh/why-foursquare-swarm-is-still-my-favourite-social-network-e38228493e6c',
164 $this->getLoggedInUserId()
167 $this->assertTrue($content2->isArchived());
169 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
170 $this->assertContains('flashes.import.notice.summary', $body[0]);
173 public function testImportInstapaperWithEmptyFile()
175 $this->logInAs('admin');
176 $client = $this->getClient();
178 $crawler = $client->request('GET', '/import/instapaper');
179 $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
181 $file = new UploadedFile(__DIR__
.'/../fixtures/test.txt', 'test.txt');
184 'upload_import_file[file]' => $file,
187 $client->submit($form, $data);
189 $this->assertEquals(302, $client->getResponse()->getStatusCode());
191 $crawler = $client->followRedirect();
193 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
194 $this->assertContains('flashes.import.notice.failed', $body[0]);