From 1b4dd805ca9ebcf34815f480533a1069ba63b7e3 Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Sun, 23 Nov 2008 16:00:08 +0000 Subject: #315801 by Rob Loach, Grugnoh2, mfer and dmitrig01: Add a hook_js_alter() to modify JavaScript being printed to the page. --- modules/simpletest/simpletest.module | 17 +++++++++++++---- modules/simpletest/tests/common.test | 21 +++++++++++++++++++-- 2 files changed, 32 insertions(+), 6 deletions(-) (limited to 'modules/simpletest') diff --git a/modules/simpletest/simpletest.module b/modules/simpletest/simpletest.module index 71225ff5c..9d1431065 100644 --- a/modules/simpletest/simpletest.module +++ b/modules/simpletest/simpletest.module @@ -210,10 +210,7 @@ function simpletest_test_form() { function theme_simpletest_test_table($table) { drupal_add_css(drupal_get_path('module', 'simpletest') . '/simpletest.css'); - - // Since SimpleTest is a special use case for the table select, stick the - // SimpleTest JavaScript above the table select. - drupal_add_js(drupal_get_path('module', 'simpletest') . '/simpletest.js', array('weight' => JS_DEFAULT - 1)); + drupal_add_js(drupal_get_path('module', 'simpletest') . '/simpletest.js'); // Create header for test selection table. $header = array( @@ -301,6 +298,18 @@ function theme_simpletest_test_table($table) { } } +/** + * Implementation of hook_js_alter(). + */ +function simpletest_js_alter(&$javascript) { + // Since SimpleTest is a special use case for the table select, stick the + // SimpleTest JavaScript above the table select. + $simpletest = drupal_get_path('module', 'simpletest') . '/simpletest.js'; + if (array_key_exists($simpletest, $javascript) && array_key_exists('misc/tableselect.js', $javascript)) { + $javascript[$simpletest]['weight'] = $javascript['misc/tableselect.js']['weight'] - 1; + } +} + function theme_simpletest_result_summary($form, $text = NULL) { return '
' . _simpletest_format_summary_line($form) . '
'; } diff --git a/modules/simpletest/tests/common.test b/modules/simpletest/tests/common.test index 01fe73546..ec04641e1 100644 --- a/modules/simpletest/tests/common.test +++ b/modules/simpletest/tests/common.test @@ -376,8 +376,8 @@ class JavaScriptTestCase extends DrupalWebTestCase { * Implementation of setUp(). */ function setUp() { - // Enable locale in test environment. - parent::setUp('locale'); + // Enable Locale and SimpleTest in the test environment. + parent::setUp('locale', 'simpletest'); // Disable preprocessing $this->preprocess_js = variable_get('preprocess_js', 0); @@ -488,6 +488,23 @@ class JavaScriptTestCase extends DrupalWebTestCase { $javascript = drupal_get_js(); $this->assertTrue(strpos($javascript, 'misc/collapse.js') < strpos($javascript, 'misc/jquery.js'), t('Rendering a JavaScript file above jQuery.')); } + + /** + * Test altering a JavaScript's weight via hook_js_alter(). + * + * @see simpletest_js_alter() + */ + function testAlter() { + // Add both tableselect.js and simpletest.js, with a larger weight on SimpleTest. + drupal_add_js('misc/tableselect.js'); + drupal_add_js(drupal_get_path('module', 'simpletest') . '/simpletest.js', array('weight' => JS_THEME)); + + // Render the JavaScript, testing if simpletest.js was altered to be before + // tableselect.js. See simpletest_js_alter() to see where this alteration + // takes place. + $javascript = drupal_get_js(); + $this->assertTrue(strpos($javascript, 'simpletest.js') < strpos($javascript, 'misc/tableselect.js'), t('Altering JavaScript weight through the alter hook.')); + } } /** -- cgit v1.2.3