diff options
author | Jérémy Benoist <j0k3r@users.noreply.github.com> | 2017-10-23 11:09:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-23 11:09:17 +0200 |
commit | 1953a872932a63792293b4aec087880265ba89f7 (patch) | |
tree | fd16599e737fcdaf193c933ef3ec4a4ee248b117 /tests/Wallabag/ImportBundle/Import/WallabagV1ImportTest.php | |
parent | d83d25dadec2c38460a32d96f5d2903426fec9d3 (diff) | |
parent | 702f2d67d60ca963492b90dad74cb5f8dcc84e51 (diff) | |
download | wallabag-1953a872932a63792293b4aec087880265ba89f7.tar.gz wallabag-1953a872932a63792293b4aec087880265ba89f7.tar.zst wallabag-1953a872932a63792293b4aec087880265ba89f7.zip |
Merge pull request #3011 from wallabag/2.3
wallabag 2.3.0
Diffstat (limited to 'tests/Wallabag/ImportBundle/Import/WallabagV1ImportTest.php')
-rw-r--r-- | tests/Wallabag/ImportBundle/Import/WallabagV1ImportTest.php | 157 |
1 files changed, 86 insertions, 71 deletions
diff --git a/tests/Wallabag/ImportBundle/Import/WallabagV1ImportTest.php b/tests/Wallabag/ImportBundle/Import/WallabagV1ImportTest.php index 4dbced60..822ad694 100644 --- a/tests/Wallabag/ImportBundle/Import/WallabagV1ImportTest.php +++ b/tests/Wallabag/ImportBundle/Import/WallabagV1ImportTest.php | |||
@@ -2,14 +2,14 @@ | |||
2 | 2 | ||
3 | namespace Tests\Wallabag\ImportBundle\Import; | 3 | namespace Tests\Wallabag\ImportBundle\Import; |
4 | 4 | ||
5 | use Wallabag\ImportBundle\Import\WallabagV1Import; | 5 | use M6Web\Component\RedisMock\RedisMockFactory; |
6 | use Wallabag\UserBundle\Entity\User; | ||
7 | use Wallabag\CoreBundle\Entity\Entry; | ||
8 | use Wallabag\ImportBundle\Redis\Producer; | ||
9 | use Monolog\Logger; | ||
10 | use Monolog\Handler\TestHandler; | 6 | use Monolog\Handler\TestHandler; |
7 | use Monolog\Logger; | ||
11 | use Simpleue\Queue\RedisQueue; | 8 | use Simpleue\Queue\RedisQueue; |
12 | use M6Web\Component\RedisMock\RedisMockFactory; | 9 | use Wallabag\CoreBundle\Entity\Entry; |
10 | use Wallabag\ImportBundle\Import\WallabagV1Import; | ||
11 | use Wallabag\ImportBundle\Redis\Producer; | ||
12 | use Wallabag\UserBundle\Entity\User; | ||
13 | 13 | ||
14 | class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | 14 | class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase |
15 | { | 15 | { |
@@ -17,73 +17,30 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
17 | protected $em; | 17 | protected $em; |
18 | protected $logHandler; | 18 | protected $logHandler; |
19 | protected $contentProxy; | 19 | protected $contentProxy; |
20 | 20 | protected $tagsAssigner; | |
21 | private function getWallabagV1Import($unsetUser = false, $dispatched = 0) | 21 | protected $uow; |
22 | { | 22 | protected $fetchingErrorMessageTitle = 'No title found'; |
23 | $this->user = new User(); | 23 | protected $fetchingErrorMessage = 'wallabag can\'t retrieve contents for this article. Please <a href="http://doc.wallabag.org/en/master/user/errors_during_fetching.html#how-can-i-help-to-fix-that">troubleshoot this issue</a>.'; |
24 | |||
25 | $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
26 | ->disableOriginalConstructor() | ||
27 | ->getMock(); | ||
28 | |||
29 | $this->uow = $this->getMockBuilder('Doctrine\ORM\UnitOfWork') | ||
30 | ->disableOriginalConstructor() | ||
31 | ->getMock(); | ||
32 | |||
33 | $this->em | ||
34 | ->expects($this->any()) | ||
35 | ->method('getUnitOfWork') | ||
36 | ->willReturn($this->uow); | ||
37 | |||
38 | $this->uow | ||
39 | ->expects($this->any()) | ||
40 | ->method('getScheduledEntityInsertions') | ||
41 | ->willReturn([]); | ||
42 | |||
43 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') | ||
44 | ->disableOriginalConstructor() | ||
45 | ->getMock(); | ||
46 | |||
47 | $dispatcher = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventDispatcher') | ||
48 | ->disableOriginalConstructor() | ||
49 | ->getMock(); | ||
50 | |||
51 | $dispatcher | ||
52 | ->expects($this->exactly($dispatched)) | ||
53 | ->method('dispatch'); | ||
54 | |||
55 | $wallabag = new WallabagV1Import($this->em, $this->contentProxy, $dispatcher); | ||
56 | |||
57 | $this->logHandler = new TestHandler(); | ||
58 | $logger = new Logger('test', [$this->logHandler]); | ||
59 | $wallabag->setLogger($logger); | ||
60 | |||
61 | if (false === $unsetUser) { | ||
62 | $wallabag->setUser($this->user); | ||
63 | } | ||
64 | |||
65 | return $wallabag; | ||
66 | } | ||
67 | 24 | ||
68 | public function testInit() | 25 | public function testInit() |
69 | { | 26 | { |
70 | $wallabagV1Import = $this->getWallabagV1Import(); | 27 | $wallabagV1Import = $this->getWallabagV1Import(); |
71 | 28 | ||
72 | $this->assertEquals('wallabag v1', $wallabagV1Import->getName()); | 29 | $this->assertSame('wallabag v1', $wallabagV1Import->getName()); |
73 | $this->assertNotEmpty($wallabagV1Import->getUrl()); | 30 | $this->assertNotEmpty($wallabagV1Import->getUrl()); |
74 | $this->assertEquals('import.wallabag_v1.description', $wallabagV1Import->getDescription()); | 31 | $this->assertSame('import.wallabag_v1.description', $wallabagV1Import->getDescription()); |
75 | } | 32 | } |
76 | 33 | ||
77 | public function testImport() | 34 | public function testImport() |
78 | { | 35 | { |
79 | $wallabagV1Import = $this->getWallabagV1Import(false, 3); | 36 | $wallabagV1Import = $this->getWallabagV1Import(false, 1); |
80 | $wallabagV1Import->setFilepath(__DIR__.'/../fixtures/wallabag-v1.json'); | 37 | $wallabagV1Import->setFilepath(__DIR__ . '/../fixtures/wallabag-v1.json'); |
81 | 38 | ||
82 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | 39 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') |
83 | ->disableOriginalConstructor() | 40 | ->disableOriginalConstructor() |
84 | ->getMock(); | 41 | ->getMock(); |
85 | 42 | ||
86 | $entryRepo->expects($this->exactly(4)) | 43 | $entryRepo->expects($this->exactly(2)) |
87 | ->method('findByUrlAndUserId') | 44 | ->method('findByUrlAndUserId') |
88 | ->will($this->onConsecutiveCalls(false, true, false, false)); | 45 | ->will($this->onConsecutiveCalls(false, true, false, false)); |
89 | 46 | ||
@@ -97,20 +54,20 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
97 | ->getMock(); | 54 | ->getMock(); |
98 | 55 | ||
99 | $this->contentProxy | 56 | $this->contentProxy |
100 | ->expects($this->exactly(3)) | 57 | ->expects($this->exactly(1)) |
101 | ->method('updateEntry') | 58 | ->method('updateEntry') |
102 | ->willReturn($entry); | 59 | ->willReturn($entry); |
103 | 60 | ||
104 | $res = $wallabagV1Import->import(); | 61 | $res = $wallabagV1Import->import(); |
105 | 62 | ||
106 | $this->assertTrue($res); | 63 | $this->assertTrue($res); |
107 | $this->assertEquals(['skipped' => 1, 'imported' => 3, 'queued' => 0], $wallabagV1Import->getSummary()); | 64 | $this->assertSame(['skipped' => 1, 'imported' => 1, 'queued' => 0], $wallabagV1Import->getSummary()); |
108 | } | 65 | } |
109 | 66 | ||
110 | public function testImportAndMarkAllAsRead() | 67 | public function testImportAndMarkAllAsRead() |
111 | { | 68 | { |
112 | $wallabagV1Import = $this->getWallabagV1Import(false, 3); | 69 | $wallabagV1Import = $this->getWallabagV1Import(false, 3); |
113 | $wallabagV1Import->setFilepath(__DIR__.'/../fixtures/wallabag-v1-read.json'); | 70 | $wallabagV1Import->setFilepath(__DIR__ . '/../fixtures/wallabag-v1-read.json'); |
114 | 71 | ||
115 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | 72 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') |
116 | ->disableOriginalConstructor() | 73 | ->disableOriginalConstructor() |
@@ -142,13 +99,13 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
142 | 99 | ||
143 | $this->assertTrue($res); | 100 | $this->assertTrue($res); |
144 | 101 | ||
145 | $this->assertEquals(['skipped' => 0, 'imported' => 3, 'queued' => 0], $wallabagV1Import->getSummary()); | 102 | $this->assertSame(['skipped' => 0, 'imported' => 3, 'queued' => 0], $wallabagV1Import->getSummary()); |
146 | } | 103 | } |
147 | 104 | ||
148 | public function testImportWithRabbit() | 105 | public function testImportWithRabbit() |
149 | { | 106 | { |
150 | $wallabagV1Import = $this->getWallabagV1Import(); | 107 | $wallabagV1Import = $this->getWallabagV1Import(); |
151 | $wallabagV1Import->setFilepath(__DIR__.'/../fixtures/wallabag-v1.json'); | 108 | $wallabagV1Import->setFilepath(__DIR__ . '/../fixtures/wallabag-v1.json'); |
152 | 109 | ||
153 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | 110 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') |
154 | ->disableOriginalConstructor() | 111 | ->disableOriginalConstructor() |
@@ -174,7 +131,7 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
174 | ->getMock(); | 131 | ->getMock(); |
175 | 132 | ||
176 | $producer | 133 | $producer |
177 | ->expects($this->exactly(4)) | 134 | ->expects($this->exactly(2)) |
178 | ->method('publish'); | 135 | ->method('publish'); |
179 | 136 | ||
180 | $wallabagV1Import->setProducer($producer); | 137 | $wallabagV1Import->setProducer($producer); |
@@ -182,13 +139,13 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
182 | $res = $wallabagV1Import->setMarkAsRead(true)->import(); | 139 | $res = $wallabagV1Import->setMarkAsRead(true)->import(); |
183 | 140 | ||
184 | $this->assertTrue($res); | 141 | $this->assertTrue($res); |
185 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 4], $wallabagV1Import->getSummary()); | 142 | $this->assertSame(['skipped' => 0, 'imported' => 0, 'queued' => 2], $wallabagV1Import->getSummary()); |
186 | } | 143 | } |
187 | 144 | ||
188 | public function testImportWithRedis() | 145 | public function testImportWithRedis() |
189 | { | 146 | { |
190 | $wallabagV1Import = $this->getWallabagV1Import(); | 147 | $wallabagV1Import = $this->getWallabagV1Import(); |
191 | $wallabagV1Import->setFilepath(__DIR__.'/../fixtures/wallabag-v1.json'); | 148 | $wallabagV1Import->setFilepath(__DIR__ . '/../fixtures/wallabag-v1.json'); |
192 | 149 | ||
193 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | 150 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') |
194 | ->disableOriginalConstructor() | 151 | ->disableOriginalConstructor() |
@@ -220,7 +177,7 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
220 | $res = $wallabagV1Import->setMarkAsRead(true)->import(); | 177 | $res = $wallabagV1Import->setMarkAsRead(true)->import(); |
221 | 178 | ||
222 | $this->assertTrue($res); | 179 | $this->assertTrue($res); |
223 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 4], $wallabagV1Import->getSummary()); | 180 | $this->assertSame(['skipped' => 0, 'imported' => 0, 'queued' => 2], $wallabagV1Import->getSummary()); |
224 | 181 | ||
225 | $this->assertNotEmpty($redisMock->lpop('wallabag_v1')); | 182 | $this->assertNotEmpty($redisMock->lpop('wallabag_v1')); |
226 | } | 183 | } |
@@ -228,7 +185,7 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
228 | public function testImportBadFile() | 185 | public function testImportBadFile() |
229 | { | 186 | { |
230 | $wallabagV1Import = $this->getWallabagV1Import(); | 187 | $wallabagV1Import = $this->getWallabagV1Import(); |
231 | $wallabagV1Import->setFilepath(__DIR__.'/../fixtures/wallabag-v1.jsonx'); | 188 | $wallabagV1Import->setFilepath(__DIR__ . '/../fixtures/wallabag-v1.jsonx'); |
232 | 189 | ||
233 | $res = $wallabagV1Import->import(); | 190 | $res = $wallabagV1Import->import(); |
234 | 191 | ||
@@ -236,13 +193,13 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
236 | 193 | ||
237 | $records = $this->logHandler->getRecords(); | 194 | $records = $this->logHandler->getRecords(); |
238 | $this->assertContains('WallabagImport: unable to read file', $records[0]['message']); | 195 | $this->assertContains('WallabagImport: unable to read file', $records[0]['message']); |
239 | $this->assertEquals('ERROR', $records[0]['level_name']); | 196 | $this->assertSame('ERROR', $records[0]['level_name']); |
240 | } | 197 | } |
241 | 198 | ||
242 | public function testImportUserNotDefined() | 199 | public function testImportUserNotDefined() |
243 | { | 200 | { |
244 | $wallabagV1Import = $this->getWallabagV1Import(true); | 201 | $wallabagV1Import = $this->getWallabagV1Import(true); |
245 | $wallabagV1Import->setFilepath(__DIR__.'/../fixtures/wallabag-v1.json'); | 202 | $wallabagV1Import->setFilepath(__DIR__ . '/../fixtures/wallabag-v1.json'); |
246 | 203 | ||
247 | $res = $wallabagV1Import->import(); | 204 | $res = $wallabagV1Import->import(); |
248 | 205 | ||
@@ -250,6 +207,64 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
250 | 207 | ||
251 | $records = $this->logHandler->getRecords(); | 208 | $records = $this->logHandler->getRecords(); |
252 | $this->assertContains('WallabagImport: user is not defined', $records[0]['message']); | 209 | $this->assertContains('WallabagImport: user is not defined', $records[0]['message']); |
253 | $this->assertEquals('ERROR', $records[0]['level_name']); | 210 | $this->assertSame('ERROR', $records[0]['level_name']); |
211 | } | ||
212 | |||
213 | private function getWallabagV1Import($unsetUser = false, $dispatched = 0) | ||
214 | { | ||
215 | $this->user = new User(); | ||
216 | |||
217 | $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
218 | ->disableOriginalConstructor() | ||
219 | ->getMock(); | ||
220 | |||
221 | $this->uow = $this->getMockBuilder('Doctrine\ORM\UnitOfWork') | ||
222 | ->disableOriginalConstructor() | ||
223 | ->getMock(); | ||
224 | |||
225 | $this->em | ||
226 | ->expects($this->any()) | ||
227 | ->method('getUnitOfWork') | ||
228 | ->willReturn($this->uow); | ||
229 | |||
230 | $this->uow | ||
231 | ->expects($this->any()) | ||
232 | ->method('getScheduledEntityInsertions') | ||
233 | ->willReturn([]); | ||
234 | |||
235 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') | ||
236 | ->disableOriginalConstructor() | ||
237 | ->getMock(); | ||
238 | |||
239 | $this->tagsAssigner = $this->getMockBuilder('Wallabag\CoreBundle\Helper\TagsAssigner') | ||
240 | ->disableOriginalConstructor() | ||
241 | ->getMock(); | ||
242 | |||
243 | $dispatcher = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventDispatcher') | ||
244 | ->disableOriginalConstructor() | ||
245 | ->getMock(); | ||
246 | |||
247 | $dispatcher | ||
248 | ->expects($this->exactly($dispatched)) | ||
249 | ->method('dispatch'); | ||
250 | |||
251 | $wallabag = new WallabagV1Import( | ||
252 | $this->em, | ||
253 | $this->contentProxy, | ||
254 | $this->tagsAssigner, | ||
255 | $dispatcher, | ||
256 | $this->fetchingErrorMessageTitle, | ||
257 | $this->fetchingErrorMessage | ||
258 | ); | ||
259 | |||
260 | $this->logHandler = new TestHandler(); | ||
261 | $logger = new Logger('test', [$this->logHandler]); | ||
262 | $wallabag->setLogger($logger); | ||
263 | |||
264 | if (false === $unsetUser) { | ||
265 | $wallabag->setUser($this->user); | ||
266 | } | ||
267 | |||
268 | return $wallabag; | ||
254 | } | 269 | } |
255 | } | 270 | } |