]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
Isolated tests
[github/wallabag/wallabag.git] / tests / Wallabag / CoreBundle / Controller / EntryControllerTest.php
index 35438c839c6dd7847a42c24af0c510f75ef0cfef..cc7b3672c73e6ddc98f6d7ce33a73c7cbdae52ee 100644 (file)
@@ -8,8 +8,24 @@ use Wallabag\CoreBundle\Entity\Entry;
 
 class EntryControllerTest extends WallabagCoreTestCase
 {
+    public $downloadImagesEnabled = false;
     public $url = 'http://www.lemonde.fr/pixels/article/2015/03/28/plongee-dans-l-univers-d-ingress-le-jeu-de-google-aux-frontieres-du-reel_4601155_4408996.html';
 
+    /**
+     * @after
+     *
+     * Ensure download_images_enabled is disabled after each script
+     */
+    public function tearDownImagesEnabled()
+    {
+        if ($this->downloadImagesEnabled) {
+            $client = static::createClient();
+            $client->getContainer()->get('craue_config')->set('download_images_enabled', 0);
+
+            $this->downloadImagesEnabled = false;
+        }
+    }
+
     public function testLogin()
     {
         $client = $this->getClient();
@@ -55,6 +71,7 @@ class EntryControllerTest extends WallabagCoreTestCase
     public function testGetNew()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
 
         $crawler = $client->request('GET', '/new');
@@ -68,6 +85,7 @@ class EntryControllerTest extends WallabagCoreTestCase
     public function testPostNewViaBookmarklet()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
 
         $crawler = $client->request('GET', '/');
@@ -142,6 +160,7 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->assertContains('Google', $content->getTitle());
         $this->assertEquals('2015-03-28 15:37:39', $content->getPublishedAt()->format('Y-m-d H:i:s'));
         $this->assertEquals('Morgane Tual', $author[0]);
+        $this->assertArrayHasKey('x-varnish1', $content->getHeaders());
     }
 
     public function testPostWithMultipleAuthors()
@@ -178,6 +197,12 @@ class EntryControllerTest extends WallabagCoreTestCase
     public function testPostNewOkUrlExist()
     {
         $this->logInAs('admin');
+
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+
         $client = $this->getClient();
 
         $crawler = $client->request('GET', '/new');
@@ -271,7 +296,7 @@ class EntryControllerTest extends WallabagCoreTestCase
         $tags = $entry->getTags();
 
         $this->assertCount(2, $tags);
-        $this->assertEquals('wallabag', $tags[0]->getLabel());
+        $this->assertContains('wallabag', $tags);
 
         $em->remove($entry);
         $em->flush();
@@ -300,7 +325,7 @@ class EntryControllerTest extends WallabagCoreTestCase
         $tags = $entry->getTags();
 
         $this->assertCount(2, $tags);
-        $this->assertEquals('wallabag', $tags[1]->getLabel());
+        $this->assertContains('wallabag', $tags);
 
         $em->remove($entry);
         $em->flush();
@@ -347,24 +372,23 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->assertEquals('/all/list', $client->getResponse()->getTargetUrl());
     }
 
-    /**
-     * @depends testPostNewOk
-     */
     public function testView()
     {
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl('http://example.com/foo');
+        $entry->setTitle('title foo');
+        $entry->setContent('foo bar baz');
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
 
-        $crawler = $client->request('GET', '/view/'.$content->getId());
+        $crawler = $client->request('GET', '/view/'.$entry->getId());
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
         $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
-        $this->assertContains($content->getTitle(), $body[0]);
+        $this->assertContains($entry->getTitle(), $body[0]);
     }
 
     /**
@@ -377,27 +401,23 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $em = $client->getContainer()
-            ->get('doctrine.orm.entity_manager');
-
-        $content = $em
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
-
-        // empty content
-        $content->setContent('');
-        $em->persist($content);
-        $em->flush();
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $entry->setTitle('title foo');
+        $entry->setContent('');
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+        $this->getEntityManager()->clear();
 
-        $client->request('GET', '/reload/'.$content->getId());
+        $client->request('GET', '/reload/'.$entry->getId());
 
         $this->assertEquals(302, $client->getResponse()->getStatusCode());
 
-        $content = $em
+        $entry = $this->getEntityManager()
             ->getRepository('WallabagCoreBundle:Entry')
-            ->find($content->getId());
+            ->find($entry->getId());
 
-        $this->assertNotEmpty($content->getContent());
+        $this->assertNotEmpty($entry->getContent());
     }
 
     /**
@@ -408,32 +428,21 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $em = $client->getContainer()
-            ->get('doctrine.orm.entity_manager');
-
-        $content = $em
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
-
-        // put a known failed url
-        $content->setUrl('http://0.0.0.0/failed.html');
-        $em->persist($content);
-        $em->flush();
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl('http://0.0.0.0/failed.html');
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
 
-        $client->request('GET', '/reload/'.$content->getId());
+        $client->request('GET', '/reload/'.$entry->getId());
 
         $this->assertEquals(302, $client->getResponse()->getStatusCode());
 
         // force EntityManager to clear previous entity
         // otherwise, retrieve the same entity will retrieve change from the previous request :0
-        $em->clear();
-        $newContent = $em
+        $this->getEntityManager()->clear();
+        $newContent = $this->getEntityManager()
             ->getRepository('WallabagCoreBundle:Entry')
-            ->find($content->getId());
-
-        $newContent->setUrl($this->url);
-        $em->persist($newContent);
-        $em->flush();
+            ->find($entry->getId());
 
         $this->assertNotEquals($client->getContainer()->getParameter('wallabag_core.fetching_error_message'), $newContent->getContent());
     }
@@ -443,12 +452,12 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
 
-        $crawler = $client->request('GET', '/edit/'.$content->getId());
+        $crawler = $client->request('GET', '/edit/'.$entry->getId());
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
 
@@ -461,12 +470,12 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
 
-        $crawler = $client->request('GET', '/edit/'.$content->getId());
+        $crawler = $client->request('GET', '/edit/'.$entry->getId());
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
 
@@ -491,19 +500,20 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+        $this->getEntityManager()->clear();
 
-        $client->request('GET', '/archive/'.$content->getId());
+        $client->request('GET', '/archive/'.$entry->getId());
 
         $this->assertEquals(302, $client->getResponse()->getStatusCode());
 
         $res = $client->getContainer()
             ->get('doctrine.orm.entity_manager')
             ->getRepository('WallabagCoreBundle:Entry')
-            ->find($content->getId());
+            ->find($entry->getId());
 
         $this->assertEquals($res->isArchived(), true);
     }
@@ -513,19 +523,20 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+        $this->getEntityManager()->clear();
 
-        $client->request('GET', '/star/'.$content->getId());
+        $client->request('GET', '/star/'.$entry->getId());
 
         $this->assertEquals(302, $client->getResponse()->getStatusCode());
 
         $res = $client->getContainer()
             ->get('doctrine.orm.entity_manager')
             ->getRepository('WallabagCoreBundle:Entry')
-            ->findOneById($content->getId());
+            ->findOneById($entry->getId());
 
         $this->assertEquals($res->isStarred(), true);
     }
@@ -535,16 +546,16 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
 
-        $client->request('GET', '/delete/'.$content->getId());
+        $client->request('GET', '/delete/'.$entry->getId());
 
         $this->assertEquals(302, $client->getResponse()->getStatusCode());
 
-        $client->request('GET', '/delete/'.$content->getId());
+        $client->request('GET', '/delete/'.$entry->getId());
 
         $this->assertEquals(404, $client->getResponse()->getStatusCode());
     }
@@ -610,7 +621,13 @@ class EntryControllerTest extends WallabagCoreTestCase
     public function testFilterOnReadingTime()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $entry->setReadingTime(22);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
 
         $crawler = $client->request('GET', '/unread/list');
 
@@ -626,7 +643,7 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->assertCount(1, $crawler->filter('div[class=entry]'));
     }
 
-    public function testFilterOnReadingTimeOnlyUpper()
+    public function testFilterOnReadingTimeWithNegativeValue()
     {
         $this->logInAs('admin');
         $client = $this->getClient();
@@ -635,18 +652,50 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $form = $crawler->filter('button[id=submit-filter]')->form();
 
+        $data = [
+            'entry_filter[readingTime][right_number]' => -22,
+            'entry_filter[readingTime][left_number]' => -22,
+        ];
+
+        $crawler = $client->submit($form, $data);
+
+        // forcing negative value results in no entry displayed
+        $this->assertCount(0, $crawler->filter('div[class=entry]'));
+    }
+
+    public function testFilterOnReadingTimeOnlyUpper()
+    {
+        $this->logInAs('admin');
+        $this->useTheme('baggy');
+        $client = $this->getClient();
+
+        $crawler = $client->request('GET', '/all/list');
+        $this->assertCount(5, $crawler->filter('div[class=entry]'));
+
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $entry->setReadingTime(23);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+
+        $crawler = $client->request('GET', '/all/list');
+        $this->assertCount(6, $crawler->filter('div[class=entry]'));
+
+        $form = $crawler->filter('button[id=submit-filter]')->form();
+
         $data = [
             'entry_filter[readingTime][right_number]' => 22,
         ];
 
         $crawler = $client->submit($form, $data);
 
-        $this->assertCount(3, $crawler->filter('div[class=entry]'));
+        $this->assertCount(5, $crawler->filter('div[class=entry]'));
     }
 
     public function testFilterOnReadingTimeOnlyLower()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
 
         $crawler = $client->request('GET', '/unread/list');
@@ -659,12 +708,22 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $crawler = $client->submit($form, $data);
 
-        $this->assertCount(4, $crawler->filter('div[class=entry]'));
+        $this->assertCount(0, $crawler->filter('div[class=entry]'));
+
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $entry->setReadingTime(23);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+
+        $crawler = $client->submit($form, $data);
+        $this->assertCount(1, $crawler->filter('div[class=entry]'));
     }
 
     public function testFilterOnUnreadStatus()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
 
         $crawler = $client->request('GET', '/all/list');
@@ -677,12 +736,23 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $crawler = $client->submit($form, $data);
 
+        $this->assertCount(4, $crawler->filter('div[class=entry]'));
+
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $entry->setArchived(false);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+
+        $crawler = $client->submit($form, $data);
+
         $this->assertCount(5, $crawler->filter('div[class=entry]'));
     }
 
     public function testFilterOnCreationDate()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
 
         $crawler = $client->request('GET', '/unread/list');
@@ -696,7 +766,7 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $crawler = $client->submit($form, $data);
 
-        $this->assertCount(6, $crawler->filter('div[class=entry]'));
+        $this->assertCount(5, $crawler->filter('div[class=entry]'));
 
         $data = [
             'entry_filter[createdAt][left_date]' => date('d/m/Y'),
@@ -705,7 +775,7 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $crawler = $client->submit($form, $data);
 
-        $this->assertCount(6, $crawler->filter('div[class=entry]'));
+        $this->assertCount(5, $crawler->filter('div[class=entry]'));
 
         $data = [
             'entry_filter[createdAt][left_date]' => '01/01/1970',
@@ -749,6 +819,7 @@ class EntryControllerTest extends WallabagCoreTestCase
     public function testFilterOnDomainName()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
 
         $crawler = $client->request('GET', '/unread/list');
@@ -781,6 +852,7 @@ class EntryControllerTest extends WallabagCoreTestCase
     public function testFilterOnStatus()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
 
         $crawler = $client->request('GET', '/unread/list');
@@ -802,6 +874,7 @@ class EntryControllerTest extends WallabagCoreTestCase
     public function testPreviewPictureFilter()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
 
         $crawler = $client->request('GET', '/unread/list');
@@ -809,14 +882,21 @@ class EntryControllerTest extends WallabagCoreTestCase
         $form['entry_filter[previewPicture]']->tick();
 
         $crawler = $client->submit($form);
-        $this->assertCount(2, $crawler->filter('div[class=entry]'));
+        $this->assertCount(1, $crawler->filter('div[class=entry]'));
     }
 
     public function testFilterOnLanguage()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
 
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $entry->setLanguage('fr');
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+
         $crawler = $client->request('GET', '/unread/list');
         $form = $crawler->filter('button[id=submit-filter]')->form();
         $data = [
@@ -840,10 +920,14 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findOneByUser($this->getLoggedInUserId());
+        // sharing is enabled
+        $client->getContainer()->get('craue_config')->set('share_public', 1);
+
+        $content = new Entry($this->getLoggedInUser());
+        $content->setUrl($this->url);
+        $this->getEntityManager()->persist($content);
+        $this->getEntityManager()->flush();
+        $this->getEntityManager()->clear();
 
         // no uid
         $client->request('GET', '/share/'.$content->getUid());
@@ -884,6 +968,7 @@ class EntryControllerTest extends WallabagCoreTestCase
 
     public function testNewEntryWithDownloadImagesEnabled()
     {
+        $this->downloadImagesEnabled = true;
         $this->logInAs('admin');
         $client = $this->getClient();
 
@@ -914,7 +999,8 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $entry);
         $this->assertEquals($url, $entry->getUrl());
         $this->assertContains('Perpignan', $entry->getTitle());
-        $this->assertContains('/d9bc0fcd.jpeg', $entry->getContent());
+        // instead of checking for the filename (which might change) check that the image is now local
+        $this->assertContains('http://v2.wallabag.org/assets/images/', $entry->getContent());
 
         $client->getContainer()->get('craue_config')->set('download_images_enabled', 0);
     }
@@ -924,12 +1010,27 @@ class EntryControllerTest extends WallabagCoreTestCase
      */
     public function testRemoveEntryWithDownloadImagesEnabled()
     {
+        $this->downloadImagesEnabled = true;
         $this->logInAs('admin');
         $client = $this->getClient();
 
         $url = 'http://www.20minutes.fr/montpellier/1952003-20161030-video-car-tombe-panne-rugbymen-perpignan-improvisent-melee-route';
         $client->getContainer()->get('craue_config')->set('download_images_enabled', 1);
 
+        $crawler = $client->request('GET', '/new');
+
+        $this->assertEquals(200, $client->getResponse()->getStatusCode());
+
+        $form = $crawler->filter('form[name=entry]')->form();
+
+        $data = [
+            'entry[url]' => $url,
+        ];
+
+        $client->submit($form, $data);
+
+        $this->assertEquals(302, $client->getResponse()->getStatusCode());
+
         $content = $client->getContainer()
             ->get('doctrine.orm.entity_manager')
             ->getRepository('WallabagCoreBundle:Entry')
@@ -947,28 +1048,19 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('empty');
         $client = $this->getClient();
 
-        $em = $client->getContainer()->get('doctrine.orm.entity_manager');
-        $user = $em
-            ->getRepository('WallabagUserBundle:User')
-            ->find($this->getLoggedInUserId());
-
-        if (!$user) {
-            $this->markTestSkipped('No user found in db.');
-        }
-
         // Redirect to homepage
-        $config = $user->getConfig();
+        $config = $this->getLoggedInUser()->getConfig();
         $config->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
-        $em->persist($config);
-        $em->flush();
+        $this->getEntityManager()->persist($config);
 
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $this->getEntityManager()->persist($entry);
 
-        $client->request('GET', '/view/'.$content->getId());
-        $client->request('GET', '/archive/'.$content->getId());
+        $this->getEntityManager()->flush();
+
+        $client->request('GET', '/view/'.$entry->getId());
+        $client->request('GET', '/archive/'.$entry->getId());
 
         $this->assertEquals(302, $client->getResponse()->getStatusCode());
         $this->assertEquals('/', $client->getResponse()->headers->get('location'));
@@ -979,46 +1071,36 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('empty');
         $client = $this->getClient();
 
-        $em = $client->getContainer()->get('doctrine.orm.entity_manager');
-        $user = $em
-            ->getRepository('WallabagUserBundle:User')
-            ->find($this->getLoggedInUserId());
-
-        if (!$user) {
-            $this->markTestSkipped('No user found in db.');
-        }
-
         // Redirect to current page
-        $config = $user->getConfig();
+        $config = $this->getLoggedInUser()->getConfig();
         $config->setActionMarkAsRead(Config::REDIRECT_TO_CURRENT_PAGE);
-        $em->persist($config);
-        $em->flush();
+        $this->getEntityManager()->persist($config);
 
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $this->getEntityManager()->persist($entry);
 
-        $client->request('GET', '/view/'.$content->getId());
-        $client->request('GET', '/archive/'.$content->getId());
+        $this->getEntityManager()->flush();
+
+        $client->request('GET', '/view/'.$entry->getId());
+        $client->request('GET', '/archive/'.$entry->getId());
 
         $this->assertEquals(302, $client->getResponse()->getStatusCode());
-        $this->assertContains('/view/'.$content->getId(), $client->getResponse()->headers->get('location'));
+        $this->assertContains('/view/'.$entry->getId(), $client->getResponse()->headers->get('location'));
     }
 
     public function testFilterOnHttpStatus()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
 
-        $crawler = $client->request('GET', '/new');
-        $form = $crawler->filter('form[name=entry]')->form();
-
-        $data = [
-            'entry[url]' => 'http://www.lemonde.fr/incorrect-url/',
-        ];
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl('http://www.lemonde.fr/incorrect-url/');
+        $entry->setHttpStatus(404);
+        $this->getEntityManager()->persist($entry);
 
-        $client->submit($form, $data);
+        $this->getEntityManager()->flush();
 
         $crawler = $client->request('GET', '/all/list');
         $form = $crawler->filter('button[id=submit-filter]')->form();
@@ -1031,14 +1113,17 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $this->assertCount(1, $crawler->filter('div[class=entry]'));
 
-        $crawler = $client->request('GET', '/new');
-        $form = $crawler->filter('form[name=entry]')->form();
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $entry->setHttpStatus(200);
+        $this->getEntityManager()->persist($entry);
 
-        $data = [
-            'entry[url]' => 'http://www.nextinpact.com/news/101235-wallabag-alternative-libre-a-pocket-creuse-petit-a-petit-son-nid.htm',
-        ];
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl('http://www.nextinpact.com/news/101235-wallabag-alternative-libre-a-pocket-creuse-petit-a-petit-son-nid.htm');
+        $entry->setHttpStatus(200);
+        $this->getEntityManager()->persist($entry);
 
-        $client->submit($form, $data);
+        $this->getEntityManager()->flush();
 
         $crawler = $client->request('GET', '/all/list');
         $form = $crawler->filter('button[id=submit-filter]')->form();
@@ -1066,8 +1151,15 @@ class EntryControllerTest extends WallabagCoreTestCase
     public function testSearch()
     {
         $this->logInAs('admin');
+        $this->useTheme('baggy');
         $client = $this->getClient();
 
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl($this->url);
+        $entry->setTitle('test');
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+
         // Search on unread list
         $crawler = $client->request('GET', '/unread/list');
 
@@ -1078,35 +1170,37 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $crawler = $client->submit($form, $data);
 
-        $this->assertCount(5, $crawler->filter('div[class=entry]'));
+        $this->assertCount(4, $crawler->filter('div[class=entry]'));
 
         // Search on starred list
         $crawler = $client->request('GET', '/starred/list');
 
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl('http://localhost/foo/bar');
+        $entry->setTitle('testeur');
+        $entry->setStarred(true);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+
         $form = $crawler->filter('form[name=search]')->form();
         $data = [
-            'search_entry[term]' => 'title',
+            'search_entry[term]' => 'testeur',
         ];
 
         $crawler = $client->submit($form, $data);
 
         $this->assertCount(1, $crawler->filter('div[class=entry]'));
 
-        // Added new article to test on archive list
-        $crawler = $client->request('GET', '/new');
-        $form = $crawler->filter('form[name=entry]')->form();
-        $data = [
-            'entry[url]' => $this->url,
-        ];
-        $client->submit($form, $data);
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
-        $client->request('GET', '/archive/'.$content->getId());
-
         $crawler = $client->request('GET', '/archive/list');
 
+        // Added new article to test on archive list
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl('http://0.0.0.0/foo/baz/qux');
+        $entry->setTitle('Le manège');
+        $entry->setArchived(true);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+
         $form = $crawler->filter('form[name=search]')->form();
         $data = [
             'search_entry[term]' => 'manège',
@@ -1115,7 +1209,7 @@ class EntryControllerTest extends WallabagCoreTestCase
         $crawler = $client->submit($form, $data);
 
         $this->assertCount(1, $crawler->filter('div[class=entry]'));
-        $client->request('GET', '/delete/'.$content->getId());
+        $client->request('GET', '/delete/'.$entry->getId());
 
         // test on list of all articles
         $crawler = $client->request('GET', '/all/list');
@@ -1130,6 +1224,13 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->assertCount(0, $crawler->filter('div[class=entry]'));
 
         // test url search on list of all articles
+        $entry = new Entry($this->getLoggedInUser());
+        $entry->setUrl('http://domain/qux');
+        $entry->setTitle('Le manège');
+        $entry->setArchived(true);
+        $this->getEntityManager()->persist($entry);
+        $this->getEntityManager()->flush();
+
         $crawler = $client->request('GET', '/all/list');
 
         $form = $crawler->filter('form[name=search]')->form();