ORIENT/tests/unit/cms/classes/ThemeTest.php

81 lines
2.1 KiB
PHP
Raw Normal View History

2014-05-14 13:24:20 +00:00
<?php
use Cms\Classes\Theme;
class ThemeTest extends TestCase
{
public function setUp()
{
Config::set('cms.activeTheme', 'test');
Event::flush('cms.activeTheme');
}
protected function countThemePages($path)
{
$result = 0;
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
$it->setMaxDepth(1);
while($it->valid()) {
if (!$it->isDot() && !$it->isDir() && $it->getExtension() == 'htm')
$result++;
$it->next();
}
return $result;
}
public function testGetPath()
{
$theme = new Theme();
$theme->load('test');
$this->assertEquals(base_path().'/tests/fixtures/cms/themes/test', $theme->getPath());
}
public function testListPages()
{
$theme = new Theme();
$theme->load('test');
$pages = $theme->listPages();
$this->assertInternalType('array', $pages);
$expectedPageNum = $this->countThemePages(base_path().'/tests/fixtures/Cms/themes/test/pages');
$this->assertEquals($expectedPageNum, count($pages));
$this->assertInstanceOf('\Cms\Classes\Page', $pages[0]);
$this->assertNotEmpty($pages[0]->url);
$this->assertInstanceOf('\Cms\Classes\Page', $pages[1]);
$this->assertNotEmpty($pages[1]->url);
}
public function testGetActiveTheme()
{
$activeTheme = Theme::getActiveTheme();
$this->assertNotNull($activeTheme);
$this->assertEquals('test', $activeTheme->getDirName());
}
/**
* @expectedException \System\Classes\SystemException
* @expectedExceptionMessage The active theme is not set.
*/
public function testNoActiveTheme()
{
Config::set('cms.activeTheme', null);
Theme::getActiveTheme();
}
public function testApiTheme()
{
Event::flush('cms.activeTheme');
Event::listen('cms.activeTheme', function() { return 'apitest'; });
$activeTheme = Theme::getActiveTheme();
$this->assertNotNull($activeTheme);
$this->assertEquals('apitest', $activeTheme->getDirName());
}
}