]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
TagController: ignore ActionMarkAsRead when removing tag from entry
authorKevin Decherf <kevin@kdecherf.com>
Sun, 21 May 2017 14:35:06 +0000 (16:35 +0200)
committerKevin Decherf <kevin@kdecherf.com>
Tue, 30 May 2017 22:36:46 +0000 (00:36 +0200)
Fixes #2835

Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
src/Wallabag/CoreBundle/Controller/TagController.php
src/Wallabag/CoreBundle/Helper/Redirect.php
tests/Wallabag/CoreBundle/Controller/TagControllerTest.php
tests/Wallabag/CoreBundle/Helper/RedirectTest.php

index fb6a720b6e9d73d5b2608a505cf36a3a5836ed91..736eb1dc0b33b4e5240938386f097942d5639003 100644 (file)
@@ -70,7 +70,7 @@ class TagController extends Controller
             $em->flush();
         }
 
-        $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer'));
+        $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer'), '', true);
 
         return $this->redirect($redirectUrl);
     }
index f78b7fe0d8b0799879489ec3e48e223b480e1ca3..abc84d089822ab6bf6f8c425f5df6acecddfbe53 100644 (file)
@@ -21,12 +21,13 @@ class Redirect
     }
 
     /**
-     * @param string $url      URL to redirect
-     * @param string $fallback Fallback URL if $url is null
+     * @param string $url                    URL to redirect
+     * @param string $fallback               Fallback URL if $url is null
+     * @param bool   $ignoreActionMarkAsRead Ignore configured action when mark as read
      *
      * @return string
      */
-    public function to($url, $fallback = '')
+    public function to($url, $fallback = '', $ignoreActionMarkAsRead = false)
     {
         $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
 
@@ -34,7 +35,8 @@ class Redirect
             return $url;
         }
 
-        if (Config::REDIRECT_TO_HOMEPAGE === $user->getConfig()->getActionMarkAsRead()) {
+        if (!$ignoreActionMarkAsRead &&
+              Config::REDIRECT_TO_HOMEPAGE === $user->getConfig()->getActionMarkAsRead()) {
             return $this->router->generate('homepage');
         }
 
index c3b22dcd2c41fb2aa148ed09ca6e43ffe77bd804..e36d3924a91da9eb1f92755429e1656b6e4effdb 100644 (file)
@@ -126,9 +126,13 @@ class TagControllerTest extends WallabagCoreTestCase
             ->getRepository('WallabagCoreBundle:Tag')
             ->findOneByEntryAndTagLabel($entry, $this->tagName);
 
+        // We make a first request to set an history and test redirection after tag deletion
+        $client->request('GET', '/view/'.$entry->getId());
+        $entryUri = $client->getRequest()->getUri();
         $client->request('GET', '/remove-tag/'.$entry->getId().'/'.$tag->getId());
 
         $this->assertEquals(302, $client->getResponse()->getStatusCode());
+        $this->assertEquals($entryUri, $client->getResponse()->getTargetUrl());
 
         $this->assertNotContains($this->tagName, $entry->getTags());
 
index 0539f20a90ddcffd5c24d12e1e25dd9df9eb54f6..f420d06aefd6293b73807d3952208c0b5c0dbc4e 100644 (file)
@@ -89,4 +89,22 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
 
         $this->assertEquals($this->routerMock->generate('homepage'), $redirectUrl);
     }
+
+    public function testUserForRedirectWithIgnoreActionMarkAsRead()
+    {
+        $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
+
+        $redirectUrl = $this->redirect->to('/unread/list', '', true);
+
+        $this->assertEquals('/unread/list', $redirectUrl);
+    }
+
+    public function testUserForRedirectNullWithFallbackWithIgnoreActionMarkAsRead()
+    {
+        $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
+
+        $redirectUrl = $this->redirect->to(null, 'fallback', true);
+
+        $this->assertEquals('fallback', $redirectUrl);
+    }
 }