diff options
author | webchick <webchick@24967.no-reply.drupal.org> | 2012-02-14 15:17:20 -0500 |
---|---|---|
committer | webchick <webchick@24967.no-reply.drupal.org> | 2012-02-14 15:17:20 -0500 |
commit | 74b7b4466c62a18d6140b273208d5d332602410a (patch) | |
tree | 68f19f1f9646487dcd530e76115dec77e4ca9e9c /modules/simpletest/tests/ajax.test | |
parent | 936c3331c155103875d2f4b3fb80785b366d0d6e (diff) | |
download | brdo-74b7b4466c62a18d6140b273208d5d332602410a.tar.gz brdo-74b7b4466c62a18d6140b273208d5d332602410a.tar.bz2 |
Issue #1287368 by TwoD, valthebald, sun, xjm: Fixed Drupal.settings.ajaxPageState.css gets overwritten.
Diffstat (limited to 'modules/simpletest/tests/ajax.test')
-rw-r--r-- | modules/simpletest/tests/ajax.test | 51 |
1 files changed, 36 insertions, 15 deletions
diff --git a/modules/simpletest/tests/ajax.test b/modules/simpletest/tests/ajax.test index 9a76b9692..8e731b8e7 100644 --- a/modules/simpletest/tests/ajax.test +++ b/modules/simpletest/tests/ajax.test @@ -127,6 +127,18 @@ class AJAXFrameworkTestCase extends AJAXTestCase { 'css' => drupal_get_path('module', 'system') . '/system.admin.css', 'js' => drupal_get_path('module', 'system') . '/system.js', ); + // @todo D8: Add a drupal_css_defaults() helper function. + $expected_css_html = drupal_get_css(array($expected['css'] => array( + 'type' => 'file', + 'group' => CSS_DEFAULT, + 'weight' => 0, + 'every_page' => FALSE, + 'media' => 'all', + 'preprocess' => TRUE, + 'data' => $expected['css'], + 'browsers' => array('IE' => TRUE, '!IE' => TRUE), + )), TRUE); + $expected_js_html = drupal_get_js('header', array($expected['js'] => drupal_js_defaults($expected['js'])), TRUE); // Get the base page. $this->drupalGet('ajax_forms_test_lazy_load_form'); @@ -135,13 +147,34 @@ class AJAXFrameworkTestCase extends AJAXTestCase { $original_js = $original_settings['ajaxPageState']['js']; // Verify that the base page doesn't have the settings and files that are to - // be lazy loaded as part of the next request. + // be lazy loaded as part of the next requests. $this->assertTrue(!isset($original_settings[$expected['setting_name']]), t('Page originally lacks the %setting, as expected.', array('%setting' => $expected['setting_name']))); $this->assertTrue(!isset($original_settings[$expected['css']]), t('Page originally lacks the %css file, as expected.', array('%css' => $expected['css']))); $this->assertTrue(!isset($original_settings[$expected['js']]), t('Page originally lacks the %js file, as expected.', array('%js' => $expected['js']))); - // Submit the AJAX request. - $commands = $this->drupalPostAJAX(NULL, array(), array('op' => t('Submit'))); + // Submit the AJAX request without triggering files getting added. + $commands = $this->drupalPostAJAX(NULL, array('add_files' => FALSE), array('op' => t('Submit'))); + $new_settings = $this->drupalGetSettings(); + + // Verify the setting was not added when not expected. + $this->assertTrue(!isset($new_settings['setting_name']), t('Page still lacks the %setting, as expected.', array('%setting' => $expected['setting_name']))); + // Verify a settings command does not add CSS or scripts to Drupal.settings + // and no command inserts the corresponding tags on the page. + $found_settings_command = FALSE; + $found_markup_command = FALSE; + foreach ($commands as $command) { + if ($command['command'] == 'settings' && (array_key_exists('css', $command['settings']['ajaxPageState']) || array_key_exists('js', $command['settings']['ajaxPageState']))) { + $found_settings_command = TRUE; + } + if (isset($command['data']) && ($command['data'] == $expected_js_html || $command['data'] == $expected_css_html)) { + $found_markup_command = TRUE; + } + } + $this->assertFalse($found_settings_command, t('Page state still lacks the %css and %js files, as expected.', array('%css' => $expected['css'], '%js' => $expected['js']))); + $this->assertFalse($found_markup_command, t('Page still lacks the %css and %js files, as expected.', array('%css' => $expected['css'], '%js' => $expected['js']))); + + // Submit the AJAX request and trigger adding files. + $commands = $this->drupalPostAJAX(NULL, array('add_files' => TRUE), array('op' => t('Submit'))); $new_settings = $this->drupalGetSettings(); $new_css = $new_settings['ajaxPageState']['css']; $new_js = $new_settings['ajaxPageState']['js']; @@ -151,17 +184,6 @@ class AJAXFrameworkTestCase extends AJAXTestCase { // Verify the expected CSS file was added, both to Drupal.settings, and as // an AJAX command for inclusion into the HTML. - // @todo A drupal_css_defaults() function in Drupal 8 would be nice. - $expected_css_html = drupal_get_css(array($expected['css'] => array( - 'type' => 'file', - 'group' => CSS_DEFAULT, - 'weight' => 0, - 'every_page' => FALSE, - 'media' => 'all', - 'preprocess' => TRUE, - 'data' => $expected['css'], - 'browsers' => array('IE' => TRUE, '!IE' => TRUE), - )), TRUE); $this->assertEqual($new_css, $original_css + array($expected['css'] => 1), t('Page state now has the %css file.', array('%css' => $expected['css']))); $this->assertCommand($commands, array('data' => $expected_css_html), t('Page now has the %css file.', array('%css' => $expected['css']))); @@ -170,7 +192,6 @@ class AJAXFrameworkTestCase extends AJAXTestCase { // string containing the SCRIPT tag, we also ensure that unexpected // JavaScript code, such as a jQuery.extend() that would potentially clobber // rather than properly merge settings, didn't accidentally get added. - $expected_js_html = drupal_get_js('header', array($expected['js'] => drupal_js_defaults($expected['js'])), TRUE); $this->assertEqual($new_js, $original_js + array($expected['js'] => 1), t('Page state now has the %js file.', array('%js' => $expected['js']))); $this->assertCommand($commands, array('data' => $expected_js_html), t('Page now has the %js file.', array('%js' => $expected['js']))); } |