]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - tests/Wallabag/CoreBundle/Helper/RedirectTest.php
Enable PHPStan
[github/wallabag/wallabag.git] / tests / Wallabag / CoreBundle / Helper / RedirectTest.php
index a2d6a5245e9b20a7d556bf6e6f50bb67441d27d1..29e12cbe5c90832716edea6550fbf09bb171c543 100644 (file)
@@ -2,9 +2,14 @@
 
 namespace Tests\Wallabag\CoreBundle\Helper;
 
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
+use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
+use Wallabag\CoreBundle\Entity\Config;
 use Wallabag\CoreBundle\Helper\Redirect;
+use Wallabag\UserBundle\Entity\User;
 
-class RedirectTest extends \PHPUnit_Framework_TestCase
+class RedirectTest extends TestCase
 {
     /** @var \PHPUnit_Framework_MockObject_MockObject */
     private $routerMock;
@@ -12,12 +17,42 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
     /** @var Redirect */
     private $redirect;
 
+    /** @var UsernamePasswordToken */
+    private $token;
+
     public function setUp()
     {
-        $this->routerMock = $this->getRouterMock();
-        $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')
+        $this->routerMock = $this->getMockBuilder('Symfony\Component\Routing\Router')
             ->disableOriginalConstructor()
             ->getMock();
+
+        $this->routerMock->expects($this->any())
+            ->method('generate')
+            ->with('homepage')
+            ->willReturn('homepage');
+
+        $user = new User();
+        $user->setName('youpi');
+        $user->setEmail('youpi@youpi.org');
+        $user->setUsername('youpi');
+        $user->setPlainPassword('youpi');
+        $user->setEnabled(true);
+        $user->addRole('ROLE_SUPER_ADMIN');
+
+        $config = new Config($user);
+        $config->setTheme('material');
+        $config->setItemsPerPage(30);
+        $config->setReadingSpeed(1);
+        $config->setLanguage('en');
+        $config->setPocketConsumerKey('xxxxx');
+        $config->setActionMarkAsRead(Config::REDIRECT_TO_CURRENT_PAGE);
+
+        $user->setConfig($config);
+
+        $this->token = new UsernamePasswordToken($user, 'password', 'key');
+        $tokenStorage = new TokenStorage();
+        $tokenStorage->setToken($this->token);
+
         $this->redirect = new Redirect($this->routerMock, $tokenStorage);
     }
 
@@ -25,34 +60,55 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
     {
         $redirectUrl = $this->redirect->to(null, 'fallback');
 
-        $this->assertEquals(null, $redirectUrl);
+        $this->assertSame('fallback', $redirectUrl);
     }
 
     public function testRedirectToNullWithoutFallback()
     {
         $redirectUrl = $this->redirect->to(null);
 
-        $this->assertEquals(null, $redirectUrl);
+        $this->assertSame($this->routerMock->generate('homepage'), $redirectUrl);
     }
 
     public function testRedirectToValidUrl()
     {
         $redirectUrl = $this->redirect->to('/unread/list');
 
-        $this->assertEquals('/unread/list', $redirectUrl);
+        $this->assertSame('/unread/list', $redirectUrl);
     }
 
-    private function getRouterMock()
+    public function testWithNotLoggedUser()
     {
-        $mock = $this->getMockBuilder('Symfony\Component\Routing\Router')
-            ->disableOriginalConstructor()
-            ->getMock();
+        $redirect = new Redirect($this->routerMock, new TokenStorage());
+        $redirectUrl = $redirect->to('/unread/list');
 
-        $mock->expects($this->any())
-            ->method('generate')
-            ->with('homepage')
-            ->willReturn('homepage');
+        $this->assertSame('/unread/list', $redirectUrl);
+    }
+
+    public function testUserForRedirectToHomepage()
+    {
+        $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
+
+        $redirectUrl = $this->redirect->to('/unread/list');
+
+        $this->assertSame($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->assertSame('/unread/list', $redirectUrl);
+    }
+
+    public function testUserForRedirectNullWithFallbackWithIgnoreActionMarkAsRead()
+    {
+        $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
+
+        $redirectUrl = $this->redirect->to(null, 'fallback', true);
 
-        return $mock;
+        $this->assertSame('fallback', $redirectUrl);
     }
 }