function JavaScriptTest::testAggregationOrder

Tests JavaScript aggregation when files are added to a different scope.

File

drupal/core/modules/system/lib/Drupal/system/Tests/Common/JavaScriptTest.php, line 333
Definition of Drupal\system\Tests\Common\JavaScriptTest.

Class

JavaScriptTest
Tests the JavaScript system.

Namespace

Drupal\system\Tests\Common

Code

function testAggregationOrder() {

  // Enable JavaScript aggregation.
  config('system.performance')
    ->set('js.preprocess', 1)
    ->save();
  drupal_static_reset('drupal_add_js');

  // Add two JavaScript files to the current request and build the cache.
  drupal_add_library('system', 'drupal');
  drupal_add_js('core/misc/ajax.js');
  drupal_add_js('core/misc/autocomplete.js');
  $js_items = drupal_add_js();
  drupal_build_js_cache(array(
    'core/misc/ajax.js' => $js_items['core/misc/ajax.js'],
    'core/misc/autocomplete.js' => $js_items['core/misc/autocomplete.js'],
  ));

  // Store the expected key for the first item in the cache.
  $cache = array_keys(state()
    ->get('system.js_cache_files') ?: array());
  $expected_key = $cache[0];

  // Reset variables and add a file in a different scope first.
  state()
    ->delete('system.js_cache_files');
  drupal_static_reset('drupal_add_js');
  drupal_add_library('system', 'drupal');
  drupal_add_js('some/custom/javascript_file.js', array(
    'scope' => 'footer',
  ));
  drupal_add_js('core/misc/ajax.js');
  drupal_add_js('core/misc/autocomplete.js');

  // Rebuild the cache.
  $js_items = drupal_add_js();
  drupal_build_js_cache(array(
    'core/misc/ajax.js' => $js_items['core/misc/ajax.js'],
    'core/misc/autocomplete.js' => $js_items['core/misc/autocomplete.js'],
  ));

  // Compare the expected key for the first file to the current one.
  $cache = array_keys(state()
    ->get('system.js_cache_files') ?: array());
  $key = $cache[0];
  $this
    ->assertEqual($key, $expected_key, 'JavaScript aggregation is not affected by ordering in different scopes.');
}