View source
<?php
namespace Drupal\Tests\Core\Asset;
use Drupal\Core\Asset\CssCollectionRenderer;
use Drupal\Tests\UnitTestCase;
use Drupal\Core\State\StateInterface;
class CssCollectionRendererUnitTest extends UnitTestCase {
protected $renderer;
protected $fileCssGroup;
protected function setUp() {
parent::setUp();
$state = $this
->prophesize(StateInterface::class);
$state
->get('system.css_js_query_string', '0')
->shouldBeCalledOnce()
->willReturn(NULL);
$this->renderer = new CssCollectionRenderer($state
->reveal());
$this->fileCssGroup = [
'group' => -100,
'type' => 'file',
'media' => 'all',
'preprocess' => TRUE,
'browsers' => [
'IE' => TRUE,
'!IE' => TRUE,
],
'items' => [
0 => [
'group' => -100,
'type' => 'file',
'weight' => 0.012,
'media' => 'all',
'preprocess' => TRUE,
'data' => 'tests/Drupal/Tests/Core/Asset/foo.css',
'browsers' => [
'IE' => TRUE,
'!IE' => TRUE,
],
'basename' => 'foo.css',
],
1 => [
'group' => -100,
'type' => 'file',
'weight' => 0.013,
'media' => 'all',
'preprocess' => TRUE,
'data' => 'tests/Drupal/Tests/Core/Asset/bar.css',
'browsers' => [
'IE' => TRUE,
'!IE' => TRUE,
],
'basename' => 'bar.css',
],
],
];
}
public function providerTestRender() {
$create_link_element = function ($href, $media = 'all', $browsers = [], $custom_attributes = []) {
$attributes = [
'rel' => 'stylesheet',
'media' => $media,
'href' => $href,
];
return [
'#type' => 'html_tag',
'#tag' => 'link',
'#attributes' => array_replace($attributes, $custom_attributes),
'#browsers' => $browsers,
];
};
$create_file_css_asset = function ($data, $media = 'all', $preprocess = TRUE) {
return [
'group' => 0,
'type' => 'file',
'media' => $media,
'preprocess' => $preprocess,
'data' => $data,
'browsers' => [],
];
};
$custom_attributes = [
'integrity' => 'sha384-psK1OYPAYjYUhtDYW+Pj2yc',
'crossorigin' => 'anonymous',
'random-attribute' => 'test',
];
return [
0 => [
[
0 => [
'group' => 0,
'type' => 'external',
'media' => 'all',
'preprocess' => TRUE,
'data' => 'http://example.com/popular.js',
'browsers' => [],
],
],
[
0 => $create_link_element('http://example.com/popular.js', 'all'),
],
],
1 => [
[
0 => [
'group' => 0,
'type' => 'file',
'media' => 'all',
'preprocess' => TRUE,
'data' => 'public://css/file-all',
'browsers' => [],
],
],
[
0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/file-all')) . '?', 'all'),
],
],
2 => [
[
0 => [
'group' => 0,
'type' => 'file',
'media' => 'all',
'preprocess' => TRUE,
'data' => 'public://css/file-all',
'browsers' => [],
'attributes' => $custom_attributes,
],
],
[
0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/file-all')) . '?', 'all', [], $custom_attributes),
],
],
3 => [
[
0 => $create_file_css_asset('public://css/1.css'),
1 => $create_file_css_asset('public://css/2.css'),
2 => $create_file_css_asset('public://css/3.css'),
3 => $create_file_css_asset('public://css/4.css'),
4 => $create_file_css_asset('public://css/5.css'),
5 => $create_file_css_asset('public://css/6.css'),
6 => $create_file_css_asset('public://css/7.css'),
7 => $create_file_css_asset('public://css/8.css'),
8 => $create_file_css_asset('public://css/9.css'),
9 => $create_file_css_asset('public://css/10.css'),
10 => $create_file_css_asset('public://css/11.css'),
11 => $create_file_css_asset('public://css/12.css'),
12 => $create_file_css_asset('public://css/13.css'),
13 => $create_file_css_asset('public://css/14.css'),
14 => $create_file_css_asset('public://css/15.css'),
15 => $create_file_css_asset('public://css/16.css'),
16 => $create_file_css_asset('public://css/17.css'),
17 => $create_file_css_asset('public://css/18.css'),
18 => $create_file_css_asset('public://css/19.css'),
19 => $create_file_css_asset('public://css/20.css'),
20 => $create_file_css_asset('public://css/21.css'),
21 => $create_file_css_asset('public://css/22.css'),
22 => $create_file_css_asset('public://css/23.css'),
23 => $create_file_css_asset('public://css/24.css'),
24 => $create_file_css_asset('public://css/25.css'),
25 => $create_file_css_asset('public://css/26.css'),
26 => $create_file_css_asset('public://css/27.css'),
27 => $create_file_css_asset('public://css/28.css'),
28 => $create_file_css_asset('public://css/29.css'),
29 => $create_file_css_asset('public://css/30.css'),
30 => $create_file_css_asset('public://css/31.css'),
],
[
0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/1.css')) . '?'),
1 => $create_link_element(file_url_transform_relative(file_create_url('public://css/2.css')) . '?'),
2 => $create_link_element(file_url_transform_relative(file_create_url('public://css/3.css')) . '?'),
3 => $create_link_element(file_url_transform_relative(file_create_url('public://css/4.css')) . '?'),
4 => $create_link_element(file_url_transform_relative(file_create_url('public://css/5.css')) . '?'),
5 => $create_link_element(file_url_transform_relative(file_create_url('public://css/6.css')) . '?'),
6 => $create_link_element(file_url_transform_relative(file_create_url('public://css/7.css')) . '?'),
7 => $create_link_element(file_url_transform_relative(file_create_url('public://css/8.css')) . '?'),
8 => $create_link_element(file_url_transform_relative(file_create_url('public://css/9.css')) . '?'),
9 => $create_link_element(file_url_transform_relative(file_create_url('public://css/10.css')) . '?'),
10 => $create_link_element(file_url_transform_relative(file_create_url('public://css/11.css')) . '?'),
11 => $create_link_element(file_url_transform_relative(file_create_url('public://css/12.css')) . '?'),
12 => $create_link_element(file_url_transform_relative(file_create_url('public://css/13.css')) . '?'),
13 => $create_link_element(file_url_transform_relative(file_create_url('public://css/14.css')) . '?'),
14 => $create_link_element(file_url_transform_relative(file_create_url('public://css/15.css')) . '?'),
15 => $create_link_element(file_url_transform_relative(file_create_url('public://css/16.css')) . '?'),
16 => $create_link_element(file_url_transform_relative(file_create_url('public://css/17.css')) . '?'),
17 => $create_link_element(file_url_transform_relative(file_create_url('public://css/18.css')) . '?'),
18 => $create_link_element(file_url_transform_relative(file_create_url('public://css/19.css')) . '?'),
19 => $create_link_element(file_url_transform_relative(file_create_url('public://css/20.css')) . '?'),
20 => $create_link_element(file_url_transform_relative(file_create_url('public://css/21.css')) . '?'),
21 => $create_link_element(file_url_transform_relative(file_create_url('public://css/22.css')) . '?'),
22 => $create_link_element(file_url_transform_relative(file_create_url('public://css/23.css')) . '?'),
23 => $create_link_element(file_url_transform_relative(file_create_url('public://css/24.css')) . '?'),
24 => $create_link_element(file_url_transform_relative(file_create_url('public://css/25.css')) . '?'),
25 => $create_link_element(file_url_transform_relative(file_create_url('public://css/26.css')) . '?'),
26 => $create_link_element(file_url_transform_relative(file_create_url('public://css/27.css')) . '?'),
27 => $create_link_element(file_url_transform_relative(file_create_url('public://css/28.css')) . '?'),
28 => $create_link_element(file_url_transform_relative(file_create_url('public://css/29.css')) . '?'),
29 => $create_link_element(file_url_transform_relative(file_create_url('public://css/30.css')) . '?'),
30 => $create_link_element(file_url_transform_relative(file_create_url('public://css/31.css')) . '?'),
],
],
4 => [
[
0 => $create_file_css_asset('public://css/1.css'),
1 => $create_file_css_asset('public://css/2.css'),
2 => $create_file_css_asset('public://css/3.css'),
3 => $create_file_css_asset('public://css/4.css'),
4 => $create_file_css_asset('public://css/5.css'),
5 => $create_file_css_asset('public://css/6.css'),
6 => $create_file_css_asset('public://css/7.css'),
7 => $create_file_css_asset('public://css/8.css'),
8 => $create_file_css_asset('public://css/9.css'),
9 => $create_file_css_asset('public://css/10.css', 'screen'),
10 => $create_file_css_asset('public://css/11.css'),
11 => $create_file_css_asset('public://css/12.css'),
12 => $create_file_css_asset('public://css/13.css'),
13 => $create_file_css_asset('public://css/14.css'),
14 => $create_file_css_asset('public://css/15.css'),
15 => $create_file_css_asset('public://css/16.css'),
16 => $create_file_css_asset('public://css/17.css'),
17 => $create_file_css_asset('public://css/18.css'),
18 => $create_file_css_asset('public://css/19.css'),
19 => $create_file_css_asset('public://css/20.css', 'print'),
20 => $create_file_css_asset('public://css/21.css'),
21 => $create_file_css_asset('public://css/22.css'),
22 => $create_file_css_asset('public://css/23.css'),
23 => $create_file_css_asset('public://css/24.css'),
24 => $create_file_css_asset('public://css/25.css'),
25 => $create_file_css_asset('public://css/26.css'),
26 => $create_file_css_asset('public://css/27.css'),
27 => $create_file_css_asset('public://css/28.css'),
28 => $create_file_css_asset('public://css/29.css'),
29 => $create_file_css_asset('public://css/30.css'),
30 => $create_file_css_asset('public://css/31.css'),
31 => $create_file_css_asset('public://css/32.css'),
],
[
0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/1.css')) . '?'),
1 => $create_link_element(file_url_transform_relative(file_create_url('public://css/2.css')) . '?'),
2 => $create_link_element(file_url_transform_relative(file_create_url('public://css/3.css')) . '?'),
3 => $create_link_element(file_url_transform_relative(file_create_url('public://css/4.css')) . '?'),
4 => $create_link_element(file_url_transform_relative(file_create_url('public://css/5.css')) . '?'),
5 => $create_link_element(file_url_transform_relative(file_create_url('public://css/6.css')) . '?'),
6 => $create_link_element(file_url_transform_relative(file_create_url('public://css/7.css')) . '?'),
7 => $create_link_element(file_url_transform_relative(file_create_url('public://css/8.css')) . '?'),
8 => $create_link_element(file_url_transform_relative(file_create_url('public://css/9.css')) . '?'),
9 => $create_link_element(file_url_transform_relative(file_create_url('public://css/10.css')) . '?', 'screen'),
10 => $create_link_element(file_url_transform_relative(file_create_url('public://css/11.css')) . '?'),
11 => $create_link_element(file_url_transform_relative(file_create_url('public://css/12.css')) . '?'),
12 => $create_link_element(file_url_transform_relative(file_create_url('public://css/13.css')) . '?'),
13 => $create_link_element(file_url_transform_relative(file_create_url('public://css/14.css')) . '?'),
14 => $create_link_element(file_url_transform_relative(file_create_url('public://css/15.css')) . '?'),
15 => $create_link_element(file_url_transform_relative(file_create_url('public://css/16.css')) . '?'),
16 => $create_link_element(file_url_transform_relative(file_create_url('public://css/17.css')) . '?'),
17 => $create_link_element(file_url_transform_relative(file_create_url('public://css/18.css')) . '?'),
18 => $create_link_element(file_url_transform_relative(file_create_url('public://css/19.css')) . '?'),
19 => $create_link_element(file_url_transform_relative(file_create_url('public://css/20.css')) . '?', 'print'),
20 => $create_link_element(file_url_transform_relative(file_create_url('public://css/21.css')) . '?'),
21 => $create_link_element(file_url_transform_relative(file_create_url('public://css/22.css')) . '?'),
22 => $create_link_element(file_url_transform_relative(file_create_url('public://css/23.css')) . '?'),
23 => $create_link_element(file_url_transform_relative(file_create_url('public://css/24.css')) . '?'),
24 => $create_link_element(file_url_transform_relative(file_create_url('public://css/25.css')) . '?'),
25 => $create_link_element(file_url_transform_relative(file_create_url('public://css/26.css')) . '?'),
26 => $create_link_element(file_url_transform_relative(file_create_url('public://css/27.css')) . '?'),
27 => $create_link_element(file_url_transform_relative(file_create_url('public://css/28.css')) . '?'),
28 => $create_link_element(file_url_transform_relative(file_create_url('public://css/29.css')) . '?'),
29 => $create_link_element(file_url_transform_relative(file_create_url('public://css/30.css')) . '?'),
30 => $create_link_element(file_url_transform_relative(file_create_url('public://css/31.css')) . '?'),
31 => $create_link_element(file_url_transform_relative(file_create_url('public://css/32.css')) . '?'),
],
],
];
}
public function testRender(array $css_assets, array $render_elements) {
$this
->assertSame($render_elements, $this->renderer
->render($css_assets));
}
public function testRenderInvalidType() {
$this
->expectException('Exception');
$this
->expectExceptionMessage('Invalid CSS asset type.');
$css_group = [
'group' => 0,
'type' => 'internal',
'media' => 'all',
'preprocess' => TRUE,
'browsers' => [],
'data' => 'http://example.com/popular.js',
];
$this->renderer
->render([
$css_group,
]);
}
}
if (!function_exists('Drupal\\Tests\\Core\\Asset\\file_create_url')) {
function file_create_url($uri) {
return 'file_create_url:' . $uri;
}
}
if (!function_exists('Drupal\\Tests\\Core\\Asset\\file_url_transform_relative')) {
function file_url_transform_relative($uri) {
return 'file_url_transform_relative:' . $uri;
}
}
namespace Drupal\Core\Asset;
if (!function_exists('Drupal\\Core\\Asset\\file_create_url')) {
function file_create_url($uri) {
return \Drupal\Tests\Core\Asset\file_create_url($uri);
}
}
if (!function_exists('Drupal\\Core\\Asset\\file_url_transform_relative')) {
function file_url_transform_relative($uri) {
return \Drupal\Tests\Core\Asset\file_url_transform_relative($uri);
}
}