#764094 by David_Rothstein: Add tests to check that the theme system works in hook_init() (i.e., as early as possible).
parent
10eec627ba
commit
ea75851ef5
|
@ -44,7 +44,7 @@ class ThemeUnitTest extends DrupalWebTestCase {
|
|||
$suggestions = theme_get_suggestions($args, 'page');
|
||||
$this->assertEqual($suggestions, array('page__node', 'page__node__%', 'page__node__1'), t('Removed invalid \\0 from suggestions'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Preprocess functions for the base hook should run even for suggestion implementations.
|
||||
*/
|
||||
|
@ -155,3 +155,30 @@ class ThemeItemListUnitTest extends DrupalWebTestCase {
|
|||
$this->assertIdentical($expected, $output, 'Nested list is rendered correctly.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Functional test for initialization of the theme system in hook_init().
|
||||
*/
|
||||
class ThemeHookInitUnitTest extends DrupalWebTestCase {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Theme initialization in hook_init()',
|
||||
'description' => 'Tests that the theme system can be correctly initialized in hook_init().',
|
||||
'group' => 'Theme',
|
||||
);
|
||||
}
|
||||
|
||||
function setUp() {
|
||||
parent::setUp('theme_test');
|
||||
variable_set('theme_default', 'garland');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that the theme system can generate output when called by hook_init().
|
||||
*/
|
||||
function testThemeInitializationHookInit() {
|
||||
$this->drupalGet('theme-test/hook-init');
|
||||
$this->assertRaw('Themed output generated in hook_init()', t('Themed output generated in hook_init() correctly appears on the page.'));
|
||||
$this->assertRaw('garland/style.css', t("The default theme's CSS appears on the page when the theme system is initialized in hook_init()."));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,10 +12,36 @@ function theme_test_menu() {
|
|||
'theme callback' => '_theme_custom_theme',
|
||||
'type' => MENU_CALLBACK,
|
||||
);
|
||||
|
||||
$items['theme-test/hook-init'] = array(
|
||||
'page callback' => 'theme_test_hook_init_page_callback',
|
||||
'access callback' => TRUE,
|
||||
'type' => MENU_CALLBACK,
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_init().
|
||||
*/
|
||||
function theme_test_init() {
|
||||
// First, force the theme registry to be rebuilt on this page request. This
|
||||
// allows us to test a full initialization of the theme system in the code
|
||||
// below.
|
||||
drupal_theme_rebuild();
|
||||
// Next, initialize the theme system by storing themed text in a global
|
||||
// variable. We will use this later in theme_test_hook_init_page_callback()
|
||||
// to test that even when the theme system is initialized this early, it is
|
||||
// still capable of returning output and theming the page as a whole.
|
||||
$GLOBALS['theme_test_output'] = theme('more_link', array('url' => url('user'), 'title' => 'Themed output generated in hook_init()'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Menu callback for testing themed output generated in hook_init().
|
||||
*/
|
||||
function theme_test_hook_init_page_callback() {
|
||||
return $GLOBALS['theme_test_output'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom theme callback.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue