1 common.test | public CommonJavaScriptTestCase::testAttributes() |
Tests adding JavaScript files with additional attributes.
File
- core/
modules/ simpletest/ tests/ common.test, line 1695 - Tests for common.inc functionality.
Class
- CommonJavaScriptTestCase
- Tests for the JavaScript system.
Code
public function testAttributes() {
// Disable aggregation.
config_set('system.core', 'preprocess_js', 0);
// Add internal and external JavaScript files that add the 'async' and
// 'defer' attributes, and check that these attributes appear on the
// <script> tags.
$js_internal = 'core/misc/collapse.js';
$js_external = 'http://example.com/script.js';
backdrop_add_js($js_internal, array('attributes' => array('async' => 'async'), 'defer' => 'defer'));
backdrop_add_js($js_external, array(
'attributes' => array(
'async' => 'async',
),
'defer' => 'defer',
'type' => 'external',
));
$javascript = backdrop_get_js();
$this->backdropSetContent($javascript);
$this->assertTrue($this->xpath('//script[starts-with(@src, "' . file_create_url($js_internal) . '") and @async="async" and @defer="defer"]'), 'Rendered internal JavaScript with correct defer and async attributes.');
$this->assertTrue($this->xpath('//script[@src="' . $js_external . '" and @async="async" and @defer="defer"]'), 'Rendered external JavaScript with correct defer and async attributes.');
// Only 'defer' attribute is set.
backdrop_add_js($js_internal, array('defer' => 'defer'));
backdrop_add_js($js_external, array('defer' => 'defer', 'type' => 'external'));
$javascript = backdrop_get_js();
$this->backdropSetContent($javascript);
$this->assertTrue($this->xpath('//script[starts-with(@src, "' . file_create_url($js_internal) . '") and @defer="defer"]'), 'Rendered internal JavaScript with correct defer attribute.');
$this->assertTrue($this->xpath('//script[@src="' . $js_external . '" and @defer="defer"]'), 'Rendered external JavaScript with correct defer attribute.');
// Only 'async' attribute is set.
backdrop_add_js($js_internal, array('attributes' => array('async' => 'async')));
backdrop_add_js($js_external, array('attributes' => array('async' => 'async'), 'type' => 'external'));
$javascript = backdrop_get_js();
$this->backdropSetContent($javascript);
$this->assertTrue($this->xpath('//script[starts-with(@src, "' . file_create_url($js_internal) . '") and @async="async"]'), 'Rendered internal JavaScript with correct async attribute.');
$this->assertTrue($this->xpath('//script[@src="' . $js_external . '" and @async="async"]'), 'Rendered external JavaScript with correct async attribute.');
// Only 'custom' attribute is set.
backdrop_add_js($js_internal, array('attributes' => array('custom' => 'foo')));
backdrop_add_js($js_external, array('attributes' => array('custom' => 'foo'), 'type' => 'external'));
$javascript = backdrop_get_js();
$this->backdropSetContent($javascript);
$this->assertTrue($this->xpath('//script[starts-with(@src, "' . file_create_url($js_internal) . '") and @custom="foo"]'), 'Rendered internal JavaScript with correct custom attribute.');
$this->assertTrue($this->xpath('//script[@src="' . $js_external . '" and @custom="foo"]'), 'Rendered external JavaScript with correct custom attribute.');
// Only 'defer' and 'custom' attribute is set.
backdrop_add_js($js_internal, array('attributes' => array('custom' => 'foo'), 'defer' => 'defer'));
backdrop_add_js($js_external, array(
'attributes' => array(
'custom' => 'foo',
),
'defer' => 'defer',
'type' => 'external',
));
$javascript = backdrop_get_js();
$this->backdropSetContent($javascript);
$this->assertTrue($this->xpath('//script[starts-with(@src, "' . file_create_url($js_internal) . '") and @custom="foo" and @defer="defer"]'), 'Rendered internal JavaScript with correct custom attribute and defer attribute.');
$this->assertTrue($this->xpath('//script[@src="' . $js_external . '" and @custom="foo" and @defer="defer"]'), 'Rendered external JavaScript with correct custom attribute and defer attribute.');
// Only 'async' and 'custom' attribute is set.
backdrop_add_js($js_internal, array('attributes' => array('custom' => 'foo', 'async' => 'async')));
backdrop_add_js($js_external, array(
'attributes' => array(
'custom' => 'foo',
'async' => 'async',
),
'type' => 'external',
));
$javascript = backdrop_get_js();
$this->backdropSetContent($javascript);
$this->assertTrue($this->xpath('//script[starts-with(@src, "' . file_create_url($js_internal) . '") and @custom="foo" and @async="async"]'), 'Rendered internal JavaScript with custom attribute and async attribute.');
$this->assertTrue($this->xpath('//script[@src="' . $js_external . '" and @custom="foo" and @async="async"]'), 'Rendered external JavaScript with correct custom attribute and async attribute.');
}