]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Merge pull request #1775 from wallabag/v2-few-fixes
authorNicolas Lœuillet <nicolas@loeuillet.org>
Sat, 12 Mar 2016 10:10:21 +0000 (11:10 +0100)
committerNicolas Lœuillet <nicolas@loeuillet.org>
Sat, 12 Mar 2016 10:10:21 +0000 (11:10 +0100)
Some fixes

.travis.yml
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 5f0abe8715a5afdd8dcfe153a00a1589ac114d86..5741b533a51aeb7d893c62c024daba1898f7b6ff 100644 (file)
@@ -50,6 +50,6 @@ before_install:
     - if [[ $TRAVIS_REPO_SLUG = wallabag/wallabag ]]; then cp .composer-auth.json ~/.composer/auth.json; fi;
 
 script:
-    - travis_wait composer update --no-interaction --no-progress
+    - travis_wait composer install --no-interaction --no-progress --prefer-dist -o
     - ant prepare-$DB
     - bin/phpunit -v
index c1c6e638984885e2e19608890cc24a64caefa865..5f7da70ecfa4cb1d375fdbc94f68d9a019c2c4ce 100644 (file)
@@ -88,4 +88,22 @@ 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)
+            ->orderBy('a.id', 'DESC')
+            ->setMaxResults(1)
+            ->getQuery()
+            ->getSingleResult();
+    }
 }
index c0efe272cda7666fff9a647e5ec2f9ff9ee45305..e972c2deb22b8c0bb310757f05b04b0ee9bc7f64 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('my quote', $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",