Added tests

This commit is contained in:
Nicolas Lœuillet 2016-11-07 10:26:05 +01:00 committed by Jeremy Benoist
parent f052f1fd57
commit 65cd8a4a9a
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
3 changed files with 78 additions and 6 deletions

View file

@ -3,7 +3,7 @@
namespace Wallabag\CoreBundle\Helper;
use Symfony\Component\Routing\Router;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Wallabag\CoreBundle\Entity\Config;
/**
@ -12,12 +12,13 @@ use Wallabag\CoreBundle\Entity\Config;
class Redirect
{
private $router;
private $tokenStorage;
private $actionMarkAsRead;
public function __construct(Router $router, TokenStorage $token)
public function __construct(Router $router, TokenStorageInterface $tokenStorage)
{
$this->router = $router;
$this->actionMarkAsRead = $token->getToken()->getUser()->getConfig()->getActionMarkAsRead();
$this->tokenStorage = $tokenStorage;
}
/**
@ -28,7 +29,13 @@ class Redirect
*/
public function to($url, $fallback = '')
{
if (Config::REDIRECT_TO_HOMEPAGE === $this->actionMarkAsRead) {
$user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
if (null === $user || !is_object($user)) {
return $url;
}
if (Config::REDIRECT_TO_HOMEPAGE === $user->getConfig()->getActionMarkAsRead()) {
return $this->router->generate('homepage');
}

View file

@ -3,6 +3,7 @@
namespace Tests\Wallabag\CoreBundle\Controller;
use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
use Wallabag\CoreBundle\Entity\Config;
use Wallabag\CoreBundle\Entity\Entry;
class EntryControllerTest extends WallabagCoreTestCase
@ -896,4 +897,68 @@ class EntryControllerTest extends WallabagCoreTestCase
$client->getContainer()->get('craue_config')->set('download_images_enabled', 0);
}
public function testRedirectToHomepage()
{
$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->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
$em->persist($config);
$em->flush();
$content = $client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
$client->request('GET', '/view/'.$content->getId());
$client->request('GET', '/archive/'.$content->getId());
$this->assertEquals(302, $client->getResponse()->getStatusCode());
$this->assertEquals('/', $client->getResponse()->headers->get('location'));
}
public function testRedirectToCurrentPage()
{
$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->setActionMarkAsRead(Config::REDIRECT_TO_CURRENT_PAGE);
$em->persist($config);
$em->flush();
$content = $client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
$client->request('GET', '/view/'.$content->getId());
$client->request('GET', '/archive/'.$content->getId());
$this->assertEquals(302, $client->getResponse()->getStatusCode());
$this->assertContains('/view/'.$content->getId(), $client->getResponse()->headers->get('location'));
}
}

View file

@ -25,14 +25,14 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
{
$redirectUrl = $this->redirect->to(null, 'fallback');
$this->assertEquals('fallback', $redirectUrl);
$this->assertEquals(null, $redirectUrl);
}
public function testRedirectToNullWithoutFallback()
{
$redirectUrl = $this->redirect->to(null);
$this->assertEquals($this->routerMock->generate('homepage'), $redirectUrl);
$this->assertEquals(null, $redirectUrl);
}
public function testRedirectToValidUrl()