]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php
Convert array + phpDoc
[github/wallabag/wallabag.git] / src / Wallabag / ImportBundle / Tests / Import / PocketImportTest.php
index 25359d56bb1b7d7db5c1bb6dec3012972d960b36..cb1715724547e3f250595a89d255567d61e8f68e 100644 (file)
@@ -3,6 +3,7 @@
 namespace Wallabag\ImportBundle\Tests\Import;
 
 use Wallabag\UserBundle\Entity\User;
+use Wallabag\CoreBundle\Entity\Entry;
 use Wallabag\ImportBundle\Import\PocketImport;
 use GuzzleHttp\Client;
 use GuzzleHttp\Subscriber\Mock;
@@ -72,7 +73,7 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase
         );
 
         $this->logHandler = new TestHandler();
-        $logger = new Logger('test', array($this->logHandler));
+        $logger = new Logger('test', [$this->logHandler]);
         $pocket->setLogger($logger);
 
         return $pocket;
@@ -84,7 +85,7 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase
 
         $this->assertEquals('Pocket', $pocketImport->getName());
         $this->assertNotEmpty($pocketImport->getUrl());
-        $this->assertContains('This importer will import all your Pocket data.', $pocketImport->getDescription());
+        $this->assertEquals('import.pocket.description', $pocketImport->getDescription());
     }
 
     public function testOAuthRequest()
@@ -260,41 +261,110 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase
             ->method('findByUrlAndUserId')
             ->will($this->onConsecutiveCalls(false, true));
 
-        $tag = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Tag')
-            ->disableOriginalConstructor()
-            ->getMock();
+        $this->em
+            ->expects($this->exactly(2))
+            ->method('getRepository')
+            ->willReturn($entryRepo);
+
+        $entry = new Entry($this->user);
+
+        $this->contentProxy
+            ->expects($this->once())
+            ->method('updateEntry')
+            ->willReturn($entry);
+
+        $pocketImport->setClient($client);
+        $pocketImport->authorize('wunderbar_code');
+
+        $res = $pocketImport->import();
+
+        $this->assertTrue($res);
+        $this->assertEquals(['skipped' => 1, 'imported' => 1], $pocketImport->getSummary());
+    }
+
+    /**
+     * Will sample results from https://getpocket.com/developer/docs/v3/retrieve.
+     */
+    public function testImportAndMarkAllAsRead()
+    {
+        $client = new Client();
+
+        $mock = new Mock([
+            new Response(200, ['Content-Type' => 'application/json'], Stream::factory(json_encode(['access_token' => 'wunderbar_token']))),
+            new Response(200, ['Content-Type' => 'application/json'], Stream::factory('
+                {
+                    "status": 1,
+                    "list": {
+                        "229279689": {
+                            "item_id": "229279689",
+                            "resolved_id": "229279689",
+                            "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview",
+                            "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland",
+                            "favorite": "1",
+                            "status": "1",
+                            "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.",
+                            "is_article": "1",
+                            "has_video": "1",
+                            "has_image": "1",
+                            "word_count": "3197"
+                        },
+                        "229279690": {
+                            "item_id": "229279689",
+                            "resolved_id": "229279689",
+                            "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview/2",
+                            "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland",
+                            "favorite": "1",
+                            "status": "0",
+                            "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.",
+                            "is_article": "1",
+                            "has_video": "0",
+                            "has_image": "0",
+                            "word_count": "3197"
+                        }
+                    }
+                }
+            ')),
+        ]);
+
+        $client->getEmitter()->attach($mock);
 
-        $tagRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\TagRepository')
+        $pocketImport = $this->getPocketImport();
+
+        $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository')
             ->disableOriginalConstructor()
             ->getMock();
 
-        $tagRepo->expects($this->exactly(2))
-            // the method `findOneByLabel` doesn't exist, EntityRepository will then call `_call` method
-            // to magically call the `findOneBy` with ['label' => 'foo']
-            ->method('__call')
-            ->will($this->onConsecutiveCalls(false, $tag));
+        $entryRepo->expects($this->exactly(2))
+            ->method('findByUrlAndUserId')
+            ->will($this->onConsecutiveCalls(false, false));
 
         $this->em
-            ->expects($this->any())
+            ->expects($this->exactly(2))
             ->method('getRepository')
-            ->will($this->onConsecutiveCalls($entryRepo, $tagRepo, $tagRepo, $entryRepo));
+            ->willReturn($entryRepo);
 
-        $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry')
-            ->disableOriginalConstructor()
-            ->getMock();
+        // check that every entry persisted are archived
+        $this->em
+            ->expects($this->any())
+            ->method('persist')
+            ->with($this->callback(function ($persistedEntry) {
+                return $persistedEntry->isArchived();
+            }));
+
+        $entry = new Entry($this->user);
 
         $this->contentProxy
-            ->expects($this->once())
+            ->expects($this->exactly(2))
             ->method('updateEntry')
             ->willReturn($entry);
 
         $pocketImport->setClient($client);
         $pocketImport->authorize('wunderbar_code');
 
-        $res = $pocketImport->import();
+        $res = $pocketImport->setMarkAsRead(true)->import();
 
         $this->assertTrue($res);
-        $this->assertEquals(['skipped' => 1, 'imported' => 1], $pocketImport->getSummary());
+        $this->assertEquals(['skipped' => 0, 'imported' => 2], $pocketImport->getSummary());
     }
 
     public function testImportBadResponse()