]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Merge pull request #2393 from wallabag/api-urls-exist
authorNicolas Lœuillet <nicolas@loeuillet.org>
Sat, 8 Oct 2016 11:31:31 +0000 (13:31 +0200)
committerGitHub <noreply@github.com>
Sat, 8 Oct 2016 11:31:31 +0000 (13:31 +0200)
Ability to check multiple urls in API

18 files changed:
app/config/config.yml
app/config/parameters.yml.dist
docs/de/developer/maintenance.rst
docs/de/developer/rabbitmq.rst
docs/de/developer/redis.rst
docs/en/developer/maintenance.rst
docs/en/developer/rabbitmq.rst
docs/en/developer/redis.rst
docs/fr/developer/maintenance.rst
docs/fr/developer/rabbitmq.rst
docs/fr/developer/redis.rst
src/Wallabag/ApiBundle/Controller/WallabagRestController.php
src/Wallabag/CoreBundle/Controller/TagController.php
src/Wallabag/CoreBundle/Resources/config/services.yml
src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php
tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
tests/Wallabag/CoreBundle/Controller/TagControllerTest.php

index 2475ada88269af40856648dd500503256ea92469..75d7299c1258696306c88aa3472457273b5c102b 100644 (file)
@@ -46,7 +46,7 @@ wallabag_core:
         it: 'Italiano'
     items_on_page: 12
     theme: material
-    language: en
+    language: '%locale%'
     rss_limit: 50
     reading_speed: 1
     cache_lifetime: 10
@@ -77,6 +77,7 @@ doctrine:
         password: "%database_password%"
         charset: UTF8
         path: "%database_path%"
+        unix_socket: "%database_socket%"
         server_version: 5.6
 
     orm:
index f2e5bec3c4d908620123b50f0a4ad9f2c9dca162..ece4903a186ba8a3de077466fbac84a02e27b658 100644 (file)
@@ -18,6 +18,7 @@ parameters:
     database_password: ~
     database_path: "%kernel.root_dir%/../data/db/wallabag.sqlite"
     database_table_prefix: wallabag_
+    database_socket: null
 
     mailer_transport:  smtp
     mailer_host:       127.0.0.1
@@ -48,5 +49,7 @@ parameters:
     rabbitmq_password: guest
 
     # Redis processing
+    redis_scheme: tcp
     redis_host: localhost
     redis_port: 6379
+    redis_path: null
index 2a9070e176d0aec02189bbffd94b0c78da4cb9ec..31343876acbca55c4c7a210c323a464011768c18 100644 (file)
@@ -11,7 +11,7 @@ Um den Wartungsmodus zu aktivieren, führe folgendes Kommando aus:
 
 ::
 
-    bin/console lexik:maintenance:lock --no-interaction
+    bin/console lexik:maintenance:lock -e=prod --no-interaction
 
 Du kannst deine IP Adresse in ``app/config/config.yml`` setzen, wenn du Zugriff zu wallabag haben willst, auch wenn der Wartungsmodus aktiv ist. Zum Beispiel:
 
@@ -29,4 +29,4 @@ Um den Wartungsmodus zu deaktivieren, führe dieses Kommando aus:
 
 ::
 
-    bin/console lexik:maintenance:unlock
+    bin/console lexik:maintenance:unlock -e=prod
index bea02ff49225c773c23fbebac3dfbc40faf8dacb..37e9984ba79681e1e7aa6ff0f5f0040f1a42720c 100644 (file)
@@ -55,23 +55,23 @@ Abhängig von welchem Service du importieren möchtest, solltest du einen Cron J
 .. code:: bash
 
   # for Pocket import
-  bin/console rabbitmq:consumer import_pocket -w
+  bin/console rabbitmq:consumer -e=prod import_pocket -w
 
   # for Readability import
-  bin/console rabbitmq:consumer import_readability -w
+  bin/console rabbitmq:consumer -e=prod import_readability -w
 
   # for Instapaper import
-  bin/console rabbitmq:consumer import_instapaper -w
+  bin/console rabbitmq:consumer -e=prod import_instapaper -w
 
   # for wallabag v1 import
-  bin/console rabbitmq:consumer import_wallabag_v1 -w
+  bin/console rabbitmq:consumer -e=prod import_wallabag_v1 -w
 
   # for wallabag v2 import
-  bin/console rabbitmq:consumer import_wallabag_v2 -w
+  bin/console rabbitmq:consumer -e=prod import_wallabag_v2 -w
 
   # for Firefox import
-  bin/console rabbitmq:consumer import_firefox -w
+  bin/console rabbitmq:consumer -e=prod import_firefox -w
 
   # for Chrome import
-  bin/console rabbitmq:consumer import_chrome -w
+  bin/console rabbitmq:consumer -e=prod import_chrome -w
 
index d613ce6c4551746a24408eabd1aa2f0e7931bd2a..46334cf036d58bd226c33aad7a35392b2fe871bc 100644 (file)
@@ -44,28 +44,28 @@ Abhängig von welchem Service du importieren möchtest, solltest du einen Cron J
 .. code:: bash
 
   # for Pocket import
-  bin/console wallabag:import:redis-worker pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
+  bin/console wallabag:import:redis-worker -e=prod pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
 
   # for Readability import
-  bin/console wallabag:import:redis-worker readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
+  bin/console wallabag:import:redis-worker -e=prod readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
 
   # for Instapaper import
-  bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
+  bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
 
   # for wallabag v1 import
-  bin/console wallabag:import:redis-worker wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
+  bin/console wallabag:import:redis-worker -e=prod wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
 
   # for wallabag v2 import
-  bin/console wallabag:import:redis-worker wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
+  bin/console wallabag:import:redis-worker -e=prod wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
 
   # for Firefox import
-  bin/console wallabag:import:redis-worker firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
+  bin/console wallabag:import:redis-worker -e=prod firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
 
   # for Chrome import
-  bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
+  bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
 
 Wenn du den Import nur für ein paar Nachrichten und nicht für alle starten willst, kannst du die Nummer (im folgenden Beispiel 12) angeben. Der Redis Worker wird dann nach der 12. Nachricht stoppen:
 
 .. code:: bash
 
-  bin/console wallabag:import:redis-worker pocket -vv --maxIterations=12
+  bin/console wallabag:import:redis-worker -e=prod pocket -vv --maxIterations=12
index 8277fb1f8a09c83703debd663f5ed157a0d72b6c..6d55ed601eaaaa43a25fd56afa07c123624d880e 100644 (file)
@@ -11,7 +11,7 @@ To enable maintenance mode, execute this command:
 
 ::
 
-    bin/console lexik:maintenance:lock --no-interaction
+    bin/console lexik:maintenance:lock --no-interaction -e=prod
 
 You can set your IP address in ``app/config/config.yml`` if you want to access to wallabag even if maintenance mode is enabled. For example:
 
@@ -29,4 +29,4 @@ To disable maintenance mode, execute this command:
 
 ::
 
-    bin/console lexik:maintenance:unlock
+    bin/console lexik:maintenance:unlock -e=prod
index 63b851063f85c49b27deae04118235bfbffc817e..ca0b0f3ab0d6b769d998ca8291cabf66ad67b088 100644 (file)
@@ -55,22 +55,22 @@ Depending on which service you want to import from you need to enable one (or ma
 .. code:: bash
 
   # for Pocket import
-  bin/console rabbitmq:consumer import_pocket -w
+  bin/console rabbitmq:consumer -e=prod import_pocket -w
 
   # for Readability import
-  bin/console rabbitmq:consumer import_readability -w
+  bin/console rabbitmq:consumer -e=prod import_readability -w
 
   # for Instapaper import
-  bin/console rabbitmq:consumer import_instapaper -w
+  bin/console rabbitmq:consumer -e=prod import_instapaper -w
 
   # for wallabag v1 import
-  bin/console rabbitmq:consumer import_wallabag_v1 -w
+  bin/console rabbitmq:consumer -e=prod import_wallabag_v1 -w
 
   # for wallabag v2 import
-  bin/console rabbitmq:consumer import_wallabag_v2 -w
+  bin/console rabbitmq:consumer -e=prod import_wallabag_v2 -w
 
   # for Firefox import
-  bin/console rabbitmq:consumer import_firefox -w
+  bin/console rabbitmq:consumer -e=prod import_firefox -w
 
   # for Chrome import
-  bin/console rabbitmq:consumer import_chrome -w
+  bin/console rabbitmq:consumer -e=prod import_chrome -w
index 820a52e9e62603509b9f3705a12cdbec9a1fb862..005d6e4ffa6ca1c2f3754ca4533463dbbb4bf196 100644 (file)
@@ -44,28 +44,28 @@ Depending on which service you want to import from you need to enable one (or ma
 .. code:: bash
 
   # for Pocket import
-  bin/console wallabag:import:redis-worker pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
+  bin/console wallabag:import:redis-worker -e=prod pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
 
   # for Readability import
-  bin/console wallabag:import:redis-worker readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
+  bin/console wallabag:import:redis-worker -e=prod readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
 
   # for Instapaper import
-  bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
+  bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
 
   # for wallabag v1 import
-  bin/console wallabag:import:redis-worker wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
+  bin/console wallabag:import:redis-worker -e=prod wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
 
   # for wallabag v2 import
-  bin/console wallabag:import:redis-worker wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
+  bin/console wallabag:import:redis-worker -e=prod wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
 
   # for Firefox import
-  bin/console wallabag:import:redis-worker firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
+  bin/console wallabag:import:redis-worker -e=prod firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
 
   # for Chrome import
-  bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
+  bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
 
 If you want to launch the import only for some messages and not all, you can specify this number (here 12) and the worker will stop right after the 12th message :
 
 .. code:: bash
 
-  bin/console wallabag:import:redis-worker pocket -vv --maxIterations=12
+  bin/console wallabag:import:redis-worker -e=prod pocket -vv --maxIterations=12
index 4ea8d01feee92d2aa0610ea167c5087e73a2a8e1..8007a85fc4023f154107338ca35c0d49fae58e55 100644 (file)
@@ -11,7 +11,7 @@ Pour activer le mode maintenance, exécutez cette commande :
 
 ::
 
-    bin/console lexik:maintenance:lock --no-interaction
+    bin/console lexik:maintenance:lock --no-interaction -e=prod
 
 Vous pouvez spécifier votre adresse IP dans ``app/config/config.yml`` si vous souhaitez accéder à wallabag même si
  le mode maintenance est activé. Par exemple :
@@ -30,4 +30,4 @@ Pour désactiver le mode maintenance, exécutez cette commande :
 
 ::
 
-    bin/console lexik:maintenance:unlock
+    bin/console lexik:maintenance:unlock -e=prod
index 20182e6eec94276091f1c9796fc7844cbf60cfef..771725a76bee504ee59107f603c6580861e0a2c7 100644 (file)
@@ -55,22 +55,22 @@ En fonction du service dont vous souhaitez importer vos données, vous devez act
 .. code:: bash
 
   # for Pocket import
-  bin/console rabbitmq:consumer import_pocket -w
+  bin/console rabbitmq:consumer -e=prod import_pocket -w
 
   # for Readability import
-  bin/console rabbitmq:consumer import_readability -w
+  bin/console rabbitmq:consumer -e=prod import_readability -w
 
   # for Instapaper import
-  bin/console rabbitmq:consumer import_instapaper -w
+  bin/console rabbitmq:consumer -e=prod import_instapaper -w
 
   # for wallabag v1 import
-  bin/console rabbitmq:consumer import_wallabag_v1 -w
+  bin/console rabbitmq:consumer -e=prod import_wallabag_v1 -w
 
   # for wallabag v2 import
-  bin/console rabbitmq:consumer import_wallabag_v2 -w
+  bin/console rabbitmq:consumer -e=prod import_wallabag_v2 -w
 
   # for Firefox import
-  bin/console rabbitmq:consumer import_firefox -w
+  bin/console rabbitmq:consumer -e=prod import_firefox -w
 
   # for Chrome import
-  bin/console rabbitmq:consumer import_chrome -w
+  bin/console rabbitmq:consumer -e=prod import_chrome -w
index 097e375d7e31b08cd4bcbb92fbe934d1daebcca5..5557e7a8858ead42ba7eadc71a727ad57ca79122 100644 (file)
@@ -44,28 +44,28 @@ En fonction du service dont vous souhaitez importer vos données, vous devez act
 .. code:: bash
 
   # for Pocket import
-  bin/console wallabag:import:redis-worker pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
+  bin/console wallabag:import:redis-worker -e=prod pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
 
   # for Readability import
-  bin/console wallabag:import:redis-worker readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
+  bin/console wallabag:import:redis-worker -e=prod readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
 
   # for Instapaper import
-  bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
+  bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
 
   # for wallabag v1 import
-  bin/console wallabag:import:redis-worker wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
+  bin/console wallabag:import:redis-worker -e=prod wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
 
   # for wallabag v2 import
-  bin/console wallabag:import:redis-worker wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
+  bin/console wallabag:import:redis-worker -e=prod wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
 
   # for Firefox import
-  bin/console wallabag:import:redis-worker firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
+  bin/console wallabag:import:redis-worker -e=prod firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
 
   # for Chrome import
-  bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
+  bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
 
 Si vous souhaitez démarrer l'import pour quelques messages uniquement, vous pouvez spécifier cette valeur en paramètre (ici 12) et le client va s'arrêter après le 12ème message :
 
 .. code:: bash
 
-  bin/console wallabag:import:redis-worker pocket -vv --maxIterations=12
+  bin/console wallabag:import:redis-worker -e=prod pocket -vv --maxIterations=12
index 6dd03c1b6495564371cb96673b3efd3e311d71e5..ed31c536aa161c790a86ffb3984fd466fd0d139b 100644 (file)
@@ -420,6 +420,8 @@ class WallabagRestController extends FOSRestController
             ->getRepository('WallabagCoreBundle:Entry')
             ->removeTag($this->getUser()->getId(), $tag);
 
+        $this->cleanOrphanTag($tag);
+
         $json = $this->get('serializer')->serialize($tag, 'json');
 
         return (new JsonResponse())->setJson($json);
@@ -460,6 +462,8 @@ class WallabagRestController extends FOSRestController
             ->getRepository('WallabagCoreBundle:Entry')
             ->removeTags($this->getUser()->getId(), $tags);
 
+        $this->cleanOrphanTag($tags);
+
         $json = $this->get('serializer')->serialize($tags, 'json');
 
         return (new JsonResponse())->setJson($json);
@@ -484,6 +488,8 @@ class WallabagRestController extends FOSRestController
             ->getRepository('WallabagCoreBundle:Entry')
             ->removeTag($this->getUser()->getId(), $tag);
 
+        $this->cleanOrphanTag($tag);
+
         $json = $this->get('serializer')->serialize($tag, 'json');
 
         return (new JsonResponse())->setJson($json);
@@ -505,6 +511,28 @@ class WallabagRestController extends FOSRestController
         return (new JsonResponse())->setJson($json);
     }
 
+    /**
+     * Remove orphan tag in case no entries are associated to it.
+     *
+     * @param Tag|array $tags
+     */
+    private function cleanOrphanTag($tags)
+    {
+        if (!is_array($tags)) {
+            $tags = [$tags];
+        }
+
+        $em = $this->getDoctrine()->getManager();
+
+        foreach ($tags as $tag) {
+            if (count($tag->getEntries()) === 0) {
+                $em->remove($tag);
+            }
+        }
+
+        $em->flush();
+    }
+
     /**
      * Validate that the first id is equal to the second one.
      * If not, throw exception. It means a user try to access information from an other user.
index 623a61461da894ebafc323830e4cb1002fee4a7f..c5746734d398fd2653a64ade83d66d150acbbafe 100644 (file)
@@ -63,10 +63,12 @@ class TagController extends Controller
         $entry->removeTag($tag);
         $em = $this->getDoctrine()->getManager();
         $em->flush();
-        if (count($tag->getEntries()) == 0) {
+
+        // remove orphan tag in case no entries are associated to it
+        if (count($tag->getEntries()) === 0) {
             $em->remove($tag);
+            $em->flush();
         }
-        $em->flush();
 
         $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer'));
 
index d11398469757c4a60957a2a37c98adeca5b0dfd6..a4b727f42b57d21ef4b3a9eedc881370ecca8cef 100644 (file)
@@ -29,7 +29,7 @@ services:
         arguments:
             - "@doctrine"
 
-    wallabag_core.table_prefix_subscriber:
+    wallabag_core.subscriber.table_prefix:
         class: Wallabag\CoreBundle\Subscriber\TablePrefixSubscriber
         arguments:
             - "%database_table_prefix%"
@@ -119,9 +119,10 @@ services:
         class: Predis\Client
         arguments:
             -
+                scheme: '%redis_scheme%'
                 host: '%redis_host%'
                 port: '%redis_port%'
-                schema: tcp
+                path: '%redis_path%'
 
     wallabag_core.exception_controller:
         class: Wallabag\CoreBundle\Controller\ExceptionController
index 9791a3b2a388b558cae2c8962633382d478081b4..547e9c8bf19825ab7fcf0369e536606f3550ed66 100644 (file)
@@ -209,7 +209,7 @@ entry:
         is_public_label: 'Publiczny'
         save_label: 'Zapisz'
     public:
-        # shared_by_wallabag: "This article has been shared by <a href='%wallabag_instance%'>wallabag</a>"
+        shared_by_wallabag: "Ten artykuł został udostępniony przez <a href='%wallabag_instance%'>wallabag</a>"
 
 about:
     page_title: 'O nas'
index 4f16e70f9ae2334d06be47dc3fd830eac202c9ed..5dcb3e000dac75d68f0026851856dcdc0692973b 100644 (file)
@@ -561,6 +561,8 @@ class WallabagRestControllerTest extends WallabagApiTestCase
      */
     public function testDeleteUserTag($tag)
     {
+        $tagName = $tag['label'];
+
         $this->client->request('DELETE', '/api/tags/'.$tag['id'].'.json');
 
         $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
@@ -577,6 +579,13 @@ class WallabagRestControllerTest extends WallabagApiTestCase
             ->findAllByTagId($this->user->getId(), $tag['id']);
 
         $this->assertCount(0, $entries);
+
+        $tag = $this->client->getContainer()
+            ->get('doctrine.orm.entity_manager')
+            ->getRepository('WallabagCoreBundle:Tag')
+            ->findOneByLabel($tagName);
+
+        $this->assertNull($tag, $tagName.' was removed because it begun an orphan tag');
     }
 
     public function testDeleteTagByLabel()
index d7bf03ba5879e9bf0e1668c140456cbbdeb84ae7..9b03a5193d1c7b8edb6d660f0cb021336061f663 100644 (file)
@@ -341,22 +341,23 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
+        $em = $client->getContainer()
+            ->get('doctrine.orm.entity_manager');
+
+        $content = $em
             ->getRepository('WallabagCoreBundle:Entry')
             ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
 
         // empty content
         $content->setContent('');
-        $client->getContainer()->get('doctrine.orm.entity_manager')->persist($content);
-        $client->getContainer()->get('doctrine.orm.entity_manager')->flush();
+        $em->persist($content);
+        $em->flush();
 
         $client->request('GET', '/reload/'.$content->getId());
 
         $this->assertEquals(302, $client->getResponse()->getStatusCode());
 
-        $content = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
+        $content = $em
             ->getRepository('WallabagCoreBundle:Entry')
             ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
 
@@ -486,9 +487,11 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->logInAs('admin');
         $client = $this->getClient();
 
+        $em = $client->getContainer()
+            ->get('doctrine.orm.entity_manager');
+
         // add a new content to be removed later
-        $user = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
+        $user = $em
             ->getRepository('WallabagUserBundle:User')
             ->findOneByUserName('admin');
 
@@ -502,12 +505,8 @@ class EntryControllerTest extends WallabagCoreTestCase
         $content->setArchived(true);
         $content->setLanguage('fr');
 
-        $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->persist($content);
-        $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->flush();
+        $em->persist($content);
+        $em->flush();
 
         $client->request('GET', '/view/'.$content->getId());
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
index 86a6cca2438fcf0e7053c097e8b441df873e1813..769ce66ebfdb685963ec95572f76929d7a2796dc 100644 (file)
@@ -3,6 +3,7 @@
 namespace Tests\Wallabag\CoreBundle\Controller;
 
 use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
+use Wallabag\CoreBundle\Entity\Tag;
 
 class TagControllerTest extends WallabagCoreTestCase
 {
@@ -134,36 +135,48 @@ class TagControllerTest extends WallabagCoreTestCase
         $client->request('GET', '/remove-tag/'.$entry->getId().'/'.$tag->getId());
 
         $this->assertEquals(404, $client->getResponse()->getStatusCode());
+
+        $tag = $client->getContainer()
+            ->get('doctrine.orm.entity_manager')
+            ->getRepository('WallabagCoreBundle:Tag')
+            ->findOneByLabel($this->tagName);
+
+        $this->assertNull($tag, $this->tagName.' was removed because it begun an orphan tag');
     }
 
     public function testShowEntriesForTagAction()
     {
         $this->logInAs('admin');
         $client = $this->getClient();
+        $em = $client->getContainer()
+            ->get('doctrine.orm.entity_manager');
+
+        $tag = new Tag();
+        $tag->setLabel($this->tagName);
 
         $entry = $client->getContainer()
             ->get('doctrine.orm.entity_manager')
             ->getRepository('WallabagCoreBundle:Entry')
             ->findByUrlAndUserId('http://0.0.0.0/entry4', $this->getLoggedInUserId());
 
-        $tag = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:Tag')
-            ->findOneByEntryAndTagLabel($entry, 'foo');
-
-        $crawler = $client->request('GET', '/tag/list/'.$tag->getSlug());
+        $tag->addEntry($entry);
 
-        $this->assertEquals(200, $client->getResponse()->getStatusCode());
-        $this->assertCount(2, $crawler->filter('div[class=entry]'));
+        $em->persist($entry);
+        $em->persist($tag);
+        $em->flush();
 
         $tag = $client->getContainer()
             ->get('doctrine.orm.entity_manager')
             ->getRepository('WallabagCoreBundle:Tag')
-            ->findOneByLabel('baz');
+            ->findOneByEntryAndTagLabel($entry, $this->tagName);
 
         $crawler = $client->request('GET', '/tag/list/'.$tag->getSlug());
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
-        $this->assertCount(1, $crawler->filter('div[class=entry]'));
+        $this->assertCount(1, $crawler->filter('[id*="entry-"]'));
+
+        $entry->removeTag($tag);
+        $em->remove($tag);
+        $em->flush();
     }
 }