diff --git a/modules/simpletest/tests/theme.test b/modules/simpletest/tests/theme.test index 5f095bd558..7b06cdfdb9 100644 --- a/modules/simpletest/tests/theme.test +++ b/modules/simpletest/tests/theme.test @@ -677,3 +677,78 @@ class ModuleProvidedThemeEngineTestCase extends DrupalWebTestCase { } } + +/** + * Tests the multi theme engine support. + */ +class ThemeEngineNyanCatTestCase extends DrupalWebTestCase { + public static function getInfo() { + return array( + 'name' => 'Theme engine test', + 'description' => 'Tests the theme engine.', + 'group' => 'Theme', + ); + } + + function setUp() { + parent::setUp('theme_test'); + theme_enable(array('test_theme')); + } + + /** + * Ensures a theme's template is overridable based on the 'template' filename. + */ + function testTemplateOverride() { + variable_set('theme_default', 'test_theme_nyan_cat'); + variable_set('admin_theme', 'test_theme_nyan_cat'); + + $this->drupalGet('theme-test/template-test-engine'); + $this->assertText('Success: Template overridden with Nyan Cat theme. All of them', 'Template overridden by Nyan Cat file.'); + } + +} + +/** + * Tests the multi theme engine support with a subtheme. + */ +class ThemeEngineNyanCatSubThemeTestCase extends DrupalWebTestCase { + public static function getInfo() { + return array( + 'name' => 'Sub theme engine test', + 'description' => 'Tests the theme engine on a subtheme.', + 'group' => 'Theme', + ); + } + + function setUp() { + parent::setUp('theme_test'); + theme_enable(array('test_theme')); + } + + /** + * Ensures a theme's template is overridable based on the 'template' filename. + */ + function testTemplateOverride() { + variable_set('theme_default', 'test_subtheme_nyan_cat'); + variable_set('admin_theme', 'test_subtheme_nyan_cat'); + + $this->drupalGet('theme-test/template-test-engine'); + $this->assertText('Success: Template overridden with Nyan Cat theme. All of them', 'Template overridden by Nyan Cat file.'); + } + + /** + * Ensure the subtheme has inherited of the theme engine of it's base theme. + */ + function testEngineIsCorrectlyInherited() { + $infos = list_themes(); + + // Get the base theme name from the theme 'test_subtheme_nyan_cat' + $base_theme_name = $infos['test_subtheme_nyan_cat']->info['base theme']; + // Get the base theme + $base_theme = $infos[$base_theme_name]; + + // Compare their theme engine. + $this->assertEqual($infos['test_subtheme_nyan_cat']->info['engine'], $base_theme->info['engine']); + } + +} diff --git a/modules/simpletest/tests/theme_test.module b/modules/simpletest/tests/theme_test.module index 1dbc3b9564..c3d6538829 100644 --- a/modules/simpletest/tests/theme_test.module +++ b/modules/simpletest/tests/theme_test.module @@ -17,6 +17,10 @@ function theme_test_theme($existing, $type, $theme, $path) { $items['theme_test_foo'] = array( 'variables' => array('foo' => NULL), ); + $items['theme_test_template_test_engine'] = array( + 'template' => 'theme_test.template_test_engine', + 'engine' => 'nyan_cat' + ); return $items; } @@ -28,6 +32,7 @@ function theme_test_system_theme_info() { $themes['test_basetheme'] = drupal_get_path('module', 'theme_test') . '/themes/test_basetheme/test_basetheme.info'; $themes['test_subtheme'] = drupal_get_path('module', 'theme_test') . '/themes/test_subtheme/test_subtheme.info'; $themes['test_theme_nyan_cat'] = drupal_get_path('module', 'theme_test') . '/themes/test_theme_nyan_cat/test_theme_nyan_cat.info'; + $themes['test_subtheme_nyan_cat'] = drupal_get_path('module', 'theme_test') . '/themes/test_subtheme_nyan_cat/test_subtheme_nyan_cat.info'; return $themes; } @@ -73,10 +78,25 @@ function theme_test_menu() { 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); + $items['theme-test/template-test-engine'] = array( + 'page callback' => '_theme_test_template_test_engine', + 'access callback' => TRUE, + 'type' => MENU_CALLBACK, + ); + return $items; } /** + * Page callback, calls a theme hook suggestion. + */ +function _theme_test_template_test_engine() { + return array( + '#markup' => theme('theme_test_template_test_engine', array()), + ); +} + +/** * Implements hook_init(). */ function theme_test_init() { diff --git a/modules/simpletest/tests/theme_test.template_test_engine.nyan-cat.html b/modules/simpletest/tests/theme_test.template_test_engine.nyan-cat.html new file mode 100644 index 0000000000..cb21cb5fd8 --- /dev/null +++ b/modules/simpletest/tests/theme_test.template_test_engine.nyan-cat.html @@ -0,0 +1 @@ +Success: Template overridden with Nyan Cat theme. 9kittens diff --git a/modules/simpletest/tests/themes/test_subtheme_nyan_cat/test_subtheme_nyan_cat.info b/modules/simpletest/tests/themes/test_subtheme_nyan_cat/test_subtheme_nyan_cat.info new file mode 100644 index 0000000000..a656ba5671 --- /dev/null +++ b/modules/simpletest/tests/themes/test_subtheme_nyan_cat/test_subtheme_nyan_cat.info @@ -0,0 +1,5 @@ +name = 'Test subtheme with base theme and another theme engine' +description = 'Test subtheme with base theme and another theme engine.' +version = VERSION +core = 7.x +base theme = test_theme_nyan_cat diff --git a/modules/simpletest/tests/themes/test_theme_nyan_cat/template.theme b/modules/simpletest/tests/themes/test_theme_nyan_cat/template.theme new file mode 100644 index 0000000000..aadbce0605 --- /dev/null +++ b/modules/simpletest/tests/themes/test_theme_nyan_cat/template.theme @@ -0,0 +1,13 @@ +