]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Improve tests
authorJeremy Benoist <jeremy.benoist@gmail.com>
Fri, 11 Mar 2016 16:56:41 +0000 (17:56 +0100)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Fri, 11 Mar 2016 16:59:42 +0000 (17:59 +0100)
- add more tests for coverage
- add a test on annotation deletion
- fix post annontation with ranges

src/Wallabag/AnnotationBundle/Repository/AnnotationRepository.php
src/Wallabag/AnnotationBundle/Tests/Controller/AnnotationControllerTest.php
src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php
src/Wallabag/CoreBundle/Controller/ConfigController.php
src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php

index c1c6e638984885e2e19608890cc24a64caefa865..7f35373f5b3853f03c5a52e7b3d71d9d1b32a8ba 100644 (file)
@@ -88,4 +88,21 @@ class AnnotationRepository extends EntityRepository
             ->getQuery()
             ->getOneOrNullResult();
     }
+
+    /**
+     * Used only in test case to get the right annotation associated to the right user.
+     *
+     * @param string $username
+     *
+     * @return Annotation
+     */
+    public function findOneByUsername($username)
+    {
+        return $this->createQueryBuilder('a')
+            ->leftJoin('a.user', 'u')
+            ->where('u.username = :username')->setParameter('username', $username)
+            ->setMaxResults(1)
+            ->getQuery()
+            ->getSingleResult();
+    }
 }
index c0efe272cda7666fff9a647e5ec2f9ff9ee45305..7a877f98317a453dcb6fb4b0d13e7cd183ab448a 100644 (file)
@@ -11,11 +11,12 @@ class AnnotationControllerTest extends WallabagAnnotationTestCase
         $annotation = $this->client->getContainer()
             ->get('doctrine.orm.entity_manager')
             ->getRepository('WallabagAnnotationBundle:Annotation')
-            ->findOneBy(array('user' => 1));
+            ->findOneByUsername('admin');
 
         if (!$annotation) {
             $this->markTestSkipped('No content found in db.');
         }
+
         $this->logInAs('admin');
         $crawler = $this->client->request('GET', 'annotations/'.$annotation->getEntry()->getId().'.json');
         $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
@@ -32,18 +33,25 @@ class AnnotationControllerTest extends WallabagAnnotationTestCase
         $entry = $this->client->getContainer()
             ->get('doctrine.orm.entity_manager')
             ->getRepository('WallabagCoreBundle:Entry')
-            ->findOneBy(array('user' => 1));
+            ->findOneByUsernameAndNotArchived('admin');
 
         $headers = array('CONTENT_TYPE' => 'application/json');
         $content = json_encode(array(
             'text' => 'my annotation',
             'quote' => 'my quote',
-            'range' => '[{"start":"","startOffset":24,"end":"","endOffset":31}]',
-            ));
+            'ranges' => array('start' => '', 'startOffset' => 24, 'end' => '', 'endOffset' => 31),
+        ));
         $crawler = $this->client->request('POST', 'annotations/'.$entry->getId().'.json', array(), array(), $headers, $content);
 
         $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
 
+        $content = json_decode($this->client->getResponse()->getContent(), true);
+
+        $this->assertEquals('Big boss', $content['user']);
+        $this->assertEquals('v1.0', $content['annotator_schema_version']);
+        $this->assertEquals('my annotation', $content['text']);
+        $this->assertEquals('my quote', $content['quote']);
+
         $annotation = $this->client->getContainer()
             ->get('doctrine.orm.entity_manager')
             ->getRepository('WallabagAnnotationBundle:Annotation')
@@ -57,25 +65,56 @@ class AnnotationControllerTest extends WallabagAnnotationTestCase
         $annotation = $this->client->getContainer()
             ->get('doctrine.orm.entity_manager')
             ->getRepository('WallabagAnnotationBundle:Annotation')
-            ->findOneBy(array('user' => 1));
+            ->findOneByUsername('admin');
 
         $this->logInAs('admin');
 
         $headers = array('CONTENT_TYPE' => 'application/json');
         $content = json_encode(array(
             'text' => 'a modified annotation',
-            ));
+        ));
         $crawler = $this->client->request('PUT', 'annotations/'.$annotation->getId().'.json', array(), array(), $headers, $content);
         $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
 
         $content = json_decode($this->client->getResponse()->getContent(), true);
 
+        $this->assertEquals('Big boss', $content['user']);
+        $this->assertEquals('v1.0', $content['annotator_schema_version']);
         $this->assertEquals('a modified annotation', $content['text']);
+        $this->assertEquals('content', $content['quote']);
 
         $annotationUpdated = $this->client->getContainer()
             ->get('doctrine.orm.entity_manager')
             ->getRepository('WallabagAnnotationBundle:Annotation')
-            ->findAnnotationById($annotation->getId());
+            ->findOneById($annotation->getId());
         $this->assertEquals('a modified annotation', $annotationUpdated->getText());
     }
+
+    public function testDeleteAnnotation()
+    {
+        $annotation = $this->client->getContainer()
+            ->get('doctrine.orm.entity_manager')
+            ->getRepository('WallabagAnnotationBundle:Annotation')
+            ->findOneByUsername('admin');
+
+        $this->logInAs('admin');
+
+        $headers = array('CONTENT_TYPE' => 'application/json');
+        $content = json_encode(array(
+            'text' => 'a modified annotation',
+        ));
+        $crawler = $this->client->request('DELETE', 'annotations/'.$annotation->getId().'.json', array(), array(), $headers, $content);
+        $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
+
+        $content = json_decode($this->client->getResponse()->getContent(), true);
+
+        $this->assertEquals('a modified annotation', $content['text']);
+
+        $annotationDeleted = $this->client->getContainer()
+            ->get('doctrine.orm.entity_manager')
+            ->getRepository('WallabagAnnotationBundle:Annotation')
+            ->findOneById($annotation->getId());
+
+        $this->assertNull($annotationDeleted);
+    }
 }
index a705f9dea4f00fdac5c84194f900cdc219151521..cce39d0b3fa7ae3161d28526db6fce9f529f4526 100644 (file)
@@ -162,12 +162,12 @@ class WallabagRestControllerTest extends WallabagApiTestCase
         $this->assertCount(1, $content['tags']);
     }
 
-    public function testPostArchivedEntry()
+    public function testPostArchivedAndStarredEntry()
     {
         $this->client->request('POST', '/api/entries.json', array(
             'url' => 'http://www.lemonde.fr/idees/article/2016/02/08/preserver-la-liberte-d-expression-sur-les-reseaux-sociaux_4861503_3232.html',
             'archive' => true,
-            'starred' => false,
+            'starred' => true,
         ));
 
         $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
@@ -177,7 +177,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase
         $this->assertGreaterThan(0, $content['id']);
         $this->assertEquals('http://www.lemonde.fr/idees/article/2016/02/08/preserver-la-liberte-d-expression-sur-les-reseaux-sociaux_4861503_3232.html', $content['url']);
         $this->assertEquals(true, $content['is_archived']);
-        $this->assertEquals(false, $content['is_starred']);
+        $this->assertEquals(true, $content['is_starred']);
     }
 
     public function testPatchEntry()
index 1791eac23719e09ba34929ab0dd36ef162599107..1930a2ae4357c30997d3c2a9a97148e9bdacc7a3 100644 (file)
@@ -16,7 +16,6 @@ use Wallabag\CoreBundle\Form\Type\RssType;
 use Wallabag\CoreBundle\Form\Type\TaggingRuleType;
 use Wallabag\CoreBundle\Form\Type\UserInformationType;
 use Wallabag\CoreBundle\Tools\Utils;
-use Wallabag\UserBundle\Entity\User;
 
 class ConfigController extends Controller
 {
index 92712b9d30a8dfcdf1071ee8d94ef4c7bfc7c849..450cdc9533724f98301348b6c68ccc52cbdbb21d 100644 (file)
@@ -302,8 +302,6 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase
                             "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland",
                             "favorite": "1",
                             "status": "1",
-                            "resolved_title": "The Massive Ryder Cup Preview",
-                            "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview",
                             "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",
@@ -317,8 +315,6 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase
                             "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland",
                             "favorite": "1",
                             "status": "0",
-                            "resolved_title": "The Massive Ryder Cup Preview",
-                            "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview",
                             "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",