ThemeNegotiatorTest.php in Zircon Profile 8
File
core/tests/Drupal/Tests/Core/Theme/ThemeNegotiatorTest.php
View source
<?php
namespace Drupal\Tests\Core\Theme;
use Drupal\Core\Routing\RouteMatch;
use Drupal\Core\Theme\ThemeNegotiator;
use Drupal\Tests\UnitTestCase;
use Symfony\Component\Routing\Route;
class ThemeNegotiatorTest extends UnitTestCase {
protected $themeAccessCheck;
protected $requestStack;
protected $themeNegotiator;
protected function setUp() {
$this->themeAccessCheck = $this
->getMockBuilder('\\Drupal\\Core\\Theme\\ThemeAccessCheck')
->disableOriginalConstructor()
->getMock();
$this->themeNegotiator = new ThemeNegotiator($this->themeAccessCheck);
}
public function testDetermineActiveTheme() {
$negotiator = $this
->getMock('Drupal\\Core\\Theme\\ThemeNegotiatorInterface');
$negotiator
->expects($this
->once())
->method('determineActiveTheme')
->will($this
->returnValue('example_test'));
$negotiator
->expects($this
->once())
->method('applies')
->will($this
->returnValue(TRUE));
$this->themeNegotiator
->addNegotiator($negotiator, 0);
$this->themeAccessCheck
->expects($this
->any())
->method('checkAccess')
->will($this
->returnValue(TRUE));
$route_match = new RouteMatch('test_route', new Route('/test-route'), array(), array());
$theme = $this->themeNegotiator
->determineActiveTheme($route_match);
$this
->assertEquals('example_test', $theme);
}
public function testDetermineActiveThemeWithPriority() {
$negotiator = $this
->getMock('Drupal\\Core\\Theme\\ThemeNegotiatorInterface');
$negotiator
->expects($this
->once())
->method('determineActiveTheme')
->will($this
->returnValue('example_test'));
$negotiator
->expects($this
->once())
->method('applies')
->will($this
->returnValue(TRUE));
$this->themeNegotiator
->addNegotiator($negotiator, 10);
$negotiator = $this
->getMock('Drupal\\Core\\Theme\\ThemeNegotiatorInterface');
$negotiator
->expects($this
->never())
->method('determineActiveTheme');
$negotiator
->expects($this
->never())
->method('applies');
$this->themeNegotiator
->addNegotiator($negotiator, 0);
$this->themeAccessCheck
->expects($this
->any())
->method('checkAccess')
->will($this
->returnValue(TRUE));
$route_match = new RouteMatch('test_route', new Route('/test-route'), array(), array());
$theme = $this->themeNegotiator
->determineActiveTheme($route_match);
$this
->assertEquals('example_test', $theme);
}
public function testDetermineActiveThemeWithAccessCheck() {
$negotiator = $this
->getMock('Drupal\\Core\\Theme\\ThemeNegotiatorInterface');
$negotiator
->expects($this
->once())
->method('determineActiveTheme')
->will($this
->returnValue('example_test'));
$negotiator
->expects($this
->once())
->method('applies')
->will($this
->returnValue(TRUE));
$this->themeNegotiator
->addNegotiator($negotiator, 10);
$negotiator = $this
->getMock('Drupal\\Core\\Theme\\ThemeNegotiatorInterface');
$negotiator
->expects($this
->once())
->method('determineActiveTheme')
->will($this
->returnValue('example_test2'));
$negotiator
->expects($this
->once())
->method('applies')
->will($this
->returnValue(TRUE));
$this->themeNegotiator
->addNegotiator($negotiator, 0);
$this->themeAccessCheck
->expects($this
->at(0))
->method('checkAccess')
->with('example_test')
->will($this
->returnValue(FALSE));
$this->themeAccessCheck
->expects($this
->at(1))
->method('checkAccess')
->with('example_test2')
->will($this
->returnValue(TRUE));
$route_match = new RouteMatch('test_route', new Route('/test-route'), array(), array());
$theme = $this->themeNegotiator
->determineActiveTheme($route_match);
$this
->assertEquals('example_test2', $theme);
}
public function testDetermineActiveThemeWithNotApplyingNegotiator() {
$negotiator = $this
->getMock('Drupal\\Core\\Theme\\ThemeNegotiatorInterface');
$negotiator
->expects($this
->never())
->method('determineActiveTheme');
$negotiator
->expects($this
->once())
->method('applies')
->will($this
->returnValue(FALSE));
$this->themeNegotiator
->addNegotiator($negotiator, 10);
$negotiator = $this
->getMock('Drupal\\Core\\Theme\\ThemeNegotiatorInterface');
$negotiator
->expects($this
->once())
->method('determineActiveTheme')
->will($this
->returnValue('example_test2'));
$negotiator
->expects($this
->once())
->method('applies')
->will($this
->returnValue(TRUE));
$this->themeNegotiator
->addNegotiator($negotiator, 0);
$this->themeAccessCheck
->expects($this
->any())
->method('checkAccess')
->will($this
->returnValue(TRUE));
$route_match = new RouteMatch('test_route', new Route('/test-route'), array(), array());
$theme = $this->themeNegotiator
->determineActiveTheme($route_match);
$this
->assertEquals('example_test2', $theme);
}
}