From 09d8bb6fa26b881da478df4c7b97620cb7aea0d0 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Fri, 11 Mar 2016 17:56:41 +0100 Subject: Improve tests - add more tests for coverage - add a test on annotation deletion - fix post annontation with ranges --- .../Tests/Controller/AnnotationControllerTest.php | 53 +++++++++++++++++++--- 1 file changed, 46 insertions(+), 7 deletions(-) (limited to 'src/Wallabag/AnnotationBundle/Tests/Controller/AnnotationControllerTest.php') diff --git a/src/Wallabag/AnnotationBundle/Tests/Controller/AnnotationControllerTest.php b/src/Wallabag/AnnotationBundle/Tests/Controller/AnnotationControllerTest.php index c0efe272..7a877f98 100644 --- a/src/Wallabag/AnnotationBundle/Tests/Controller/AnnotationControllerTest.php +++ b/src/Wallabag/AnnotationBundle/Tests/Controller/AnnotationControllerTest.php @@ -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); + } } -- cgit v1.2.3