[TwigBridge] add missing unit tests (AppVariable)

This commit is contained in:
FlorianLB 2015-12-05 11:52:14 +01:00 committed by Fabien Potencier
parent 9c5a6f5770
commit 156cdb5ab0
1 changed files with 150 additions and 0 deletions

View File

@ -0,0 +1,150 @@
<?php
namespace Symfony\Bridge\Twig\Tests;
use Symfony\Bridge\Twig\AppVariable;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
class AppVariableTest extends \PHPUnit_Framework_TestCase
{
/**
* @var AppVariable
*/
protected $appVariable;
public function setUp()
{
$this->appVariable = new AppVariable();
}
/**
* @dataProvider debugDataProvider
*/
public function testDebug($debugFlag)
{
$this->appVariable->setDebug($debugFlag);
$this->assertEquals($debugFlag, $this->appVariable->getDebug());
}
public function debugDataProvider()
{
return array(
'debug on' => array(true),
'debug off' => array(false),
);
}
public function testEnvironment()
{
$this->appVariable->setEnvironment('dev');
$this->assertEquals('dev', $this->appVariable->getEnvironment());
}
public function testGetSession()
{
$request = $this->getMock('Symfony\Component\HttpFoundation\Request');
$request->method('getSession')->willReturn($session = new Session());
$this->setRequestStack($request);
$this->assertEquals($session, $this->appVariable->getSession());
}
public function testGetSessionWithNoRequest()
{
$this->setRequestStack(null);
$this->assertNull($this->appVariable->getSession());
}
public function testGetRequest()
{
$this->setRequestStack($request = new Request());
$this->assertEquals($request, $this->appVariable->getRequest());
}
public function testGetUser()
{
$this->setTokenStorage($user = $this->getMock('Symfony\Component\Security\Core\User\UserInterface'));
$this->assertEquals($user, $this->appVariable->getUser());
}
public function testGetUserWithUsernameAsTokenUser()
{
$this->setTokenStorage($user = 'username');
$this->assertNull($this->appVariable->getUser());
}
public function testGetUserWithNoToken()
{
$tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$this->appVariable->setTokenStorage($tokenStorage);
$this->assertNull($this->appVariable->getUser());
}
/**
* @expectedException \RuntimeException
*/
public function testEnvironmentNotSet()
{
$this->appVariable->getEnvironment();
}
/**
* @expectedException \RuntimeException
*/
public function testDebugNotSet()
{
$this->appVariable->getDebug();
}
/**
* @expectedException \RuntimeException
*/
public function testGetUserWithTokenStorageNotSet()
{
$this->appVariable->getUser();
}
/**
* @expectedException \RuntimeException
*/
public function testGetRequestWithRequestStackNotSet()
{
$this->appVariable->getRequest();
}
/**
* @expectedException \RuntimeException
*/
public function testGetSessionWithRequestStackNotSet()
{
$this->appVariable->getSession();
}
protected function setRequestStack($request)
{
$requestStackMock = $this->getMock('Symfony\Component\HttpFoundation\RequestStack');
$requestStackMock->method('getCurrentRequest')->willReturn($request);
$this->appVariable->setRequestStack($requestStackMock);
}
protected function setTokenStorage($user)
{
$tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$this->appVariable->setTokenStorage($tokenStorage);
$token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
$tokenStorage->method('getToken')->willReturn($token);
$token->method('getUser')->willReturn($user);
}
}