From ffc8cab84b79857e46849ed80a6de89a03defc68 Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Fri, 10 Jul 2009 05:45:56 +0000 Subject: #505528 by Damien Tournoud and Rob Loach: Ensure proper weight of JS files. --- modules/simpletest/tests/common.test | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'modules/simpletest/tests/common.test') diff --git a/modules/simpletest/tests/common.test b/modules/simpletest/tests/common.test index 229b91c21..1892de1b5 100644 --- a/modules/simpletest/tests/common.test +++ b/modules/simpletest/tests/common.test @@ -559,6 +559,46 @@ class JavaScriptTestCase extends DrupalWebTestCase { $this->assertEqual($javascript['misc/collapse.js']['weight'], JS_THEME, t('Adding a JavaScript file with a different weight caches the given weight.')); } + /** + * Test JavaScript ordering. + */ + function testRenderOrder() { + // Add a bunch of JavaScript in strange ordering. + drupal_add_js('(function($){alert("Weight 5 #1");})(jQuery);', array('type' => 'inline', 'scope' => 'footer', 'weight' => 5)); + drupal_add_js('(function($){alert("Weight 0 #1");})(jQuery);', array('type' => 'inline', 'scope' => 'footer')); + drupal_add_js('(function($){alert("Weight 0 #2");})(jQuery);', array('type' => 'inline', 'scope' => 'footer')); + drupal_add_js('(function($){alert("Weight -8 #1");})(jQuery);', array('type' => 'inline', 'scope' => 'footer', 'weight' => -8)); + drupal_add_js('(function($){alert("Weight -8 #2");})(jQuery);', array('type' => 'inline', 'scope' => 'footer', 'weight' => -8)); + drupal_add_js('(function($){alert("Weight -8 #3");})(jQuery);', array('type' => 'inline', 'scope' => 'footer', 'weight' => -8)); + drupal_add_js('(function($){alert("Weight -8 #4");})(jQuery);', array('type' => 'inline', 'scope' => 'footer', 'weight' => -8)); + drupal_add_js('(function($){alert("Weight 5 #2");})(jQuery);', array('type' => 'inline', 'scope' => 'footer', 'weight' => 5)); + drupal_add_js('(function($){alert("Weight 0 #3");})(jQuery);', array('type' => 'inline', 'scope' => 'footer')); + + // Construct the expected result from the regex. + $expected = array( + "-8 #1", + "-8 #2", + "-8 #3", + "-8 #4", + "0 #1", + "0 #2", + "0 #3", + "5 #1", + "5 #2", + ); + + // Retrieve the rendered JavaScript and test against the regex. + $js = drupal_get_js('footer'); + $matches = array(); + if (preg_match_all('/Weight\s([-0-9]+\s[#0-9]+)/', $js, $matches)) { + $result = $matches[1]; + } + else { + $result = array(); + } + $this->assertIdentical($result, $expected, t('JavaScript is added in the expected weight order.')); + } + /** * Test rendering the JavaScript with a file's weight above jQuery's. */ -- cgit v1.2.3