]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/AnnotationBundle/Tests/Controller/AnnotationControllerTest.php
Improve tests
[github/wallabag/wallabag.git] / src / Wallabag / AnnotationBundle / Tests / Controller / AnnotationControllerTest.php
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);
+    }
 }