Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / tests / Drupal / Tests / Core / Asset / CssCollectionRendererUnitTest.php
1 <?php
2
3 namespace Drupal\Tests\Core\Asset;
4
5 use Drupal\Core\Asset\CssCollectionRenderer;
6 use Drupal\Tests\UnitTestCase;
7
8 /**
9  * Tests the CSS asset collection renderer.
10  *
11  * @group Asset
12  */
13 class CssCollectionRendererUnitTest extends UnitTestCase {
14
15   /**
16    * A CSS asset renderer.
17    *
18    * @var \Drupal\Core\Asset\CssRenderer object.
19    */
20   protected $renderer;
21
22   /**
23    * A valid file CSS asset group.
24    *
25    * @var array
26    */
27   protected $fileCssGroup;
28
29   /**
30    * The state mock class.
31    *
32    * @var \Drupal\Core\State\StateInterface|\PHPUnit_Framework_MockObject_MockObject
33    */
34   protected $state;
35
36   protected function setUp() {
37     parent::setUp();
38
39     $this->state = $this->getMock('Drupal\Core\State\StateInterface');
40
41     $this->renderer = new CssCollectionRenderer($this->state);
42     $this->fileCssGroup = [
43       'group' => -100,
44       'type' => 'file',
45       'media' => 'all',
46       'preprocess' => TRUE,
47       'browsers' => ['IE' => TRUE, '!IE' => TRUE],
48       'items' => [
49         0 => [
50           'group' => -100,
51           'type' => 'file',
52           'weight' => 0.012,
53           'media' => 'all',
54           'preprocess' => TRUE,
55           'data' => 'tests/Drupal/Tests/Core/Asset/foo.css',
56           'browsers' => ['IE' => TRUE, '!IE' => TRUE],
57           'basename' => 'foo.css',
58         ],
59         1 => [
60           'group' => -100,
61           'type' => 'file',
62           'weight' => 0.013,
63           'media' => 'all',
64           'preprocess' => TRUE,
65           'data' => 'tests/Drupal/Tests/Core/Asset/bar.css',
66           'browsers' => ['IE' => TRUE, '!IE' => TRUE],
67           'basename' => 'bar.css',
68         ],
69       ],
70     ];
71   }
72
73   /**
74    * Provides data for the CSS asset rendering test.
75    *
76    * @see testRender
77    */
78   public function providerTestRender() {
79     $create_link_element = function ($href, $media = 'all', $browsers = []) {
80       return [
81         '#type' => 'html_tag',
82         '#tag' => 'link',
83         '#attributes' => [
84           'rel' => 'stylesheet',
85           'href' => $href,
86           'media' => $media,
87         ],
88         '#browsers' => $browsers,
89       ];
90     };
91     $create_style_element = function ($value, $media, $browsers = []) {
92       $style_element = [
93         '#type' => 'html_tag',
94         '#tag' => 'style',
95         '#value' => $value,
96         '#attributes' => [
97           'media' => $media
98         ],
99         '#browsers' => $browsers,
100       ];
101       return $style_element;
102     };
103
104     $create_file_css_asset = function ($data, $media = 'all', $preprocess = TRUE) {
105       return ['group' => 0, 'type' => 'file', 'media' => $media, 'preprocess' => $preprocess, 'data' => $data, 'browsers' => []];
106     };
107
108     return [
109       // Single external CSS asset.
110       0 => [
111         // CSS assets.
112         [
113           0 => ['group' => 0, 'type' => 'external', 'media' => 'all', 'preprocess' => TRUE, 'data' => 'http://example.com/popular.js', 'browsers' => []],
114         ],
115         // Render elements.
116         [
117           0 => $create_link_element('http://example.com/popular.js', 'all'),
118         ],
119       ],
120       // Single file CSS asset.
121       2 => [
122         [
123           0 => ['group' => 0, 'type' => 'file', 'media' => 'all', 'preprocess' => TRUE, 'data' => 'public://css/file-all', 'browsers' => []],
124         ],
125         [
126           0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/file-all')) . '?0', 'all'),
127         ],
128       ],
129       // 31 file CSS assets: expect 31 link elements.
130       3 => [
131         [
132           0 => $create_file_css_asset('public://css/1.css'),
133           1 => $create_file_css_asset('public://css/2.css'),
134           2 => $create_file_css_asset('public://css/3.css'),
135           3 => $create_file_css_asset('public://css/4.css'),
136           4 => $create_file_css_asset('public://css/5.css'),
137           5 => $create_file_css_asset('public://css/6.css'),
138           6 => $create_file_css_asset('public://css/7.css'),
139           7 => $create_file_css_asset('public://css/8.css'),
140           8 => $create_file_css_asset('public://css/9.css'),
141           9 => $create_file_css_asset('public://css/10.css'),
142           10 => $create_file_css_asset('public://css/11.css'),
143           11 => $create_file_css_asset('public://css/12.css'),
144           12 => $create_file_css_asset('public://css/13.css'),
145           13 => $create_file_css_asset('public://css/14.css'),
146           14 => $create_file_css_asset('public://css/15.css'),
147           15 => $create_file_css_asset('public://css/16.css'),
148           16 => $create_file_css_asset('public://css/17.css'),
149           17 => $create_file_css_asset('public://css/18.css'),
150           18 => $create_file_css_asset('public://css/19.css'),
151           19 => $create_file_css_asset('public://css/20.css'),
152           20 => $create_file_css_asset('public://css/21.css'),
153           21 => $create_file_css_asset('public://css/22.css'),
154           22 => $create_file_css_asset('public://css/23.css'),
155           23 => $create_file_css_asset('public://css/24.css'),
156           24 => $create_file_css_asset('public://css/25.css'),
157           25 => $create_file_css_asset('public://css/26.css'),
158           26 => $create_file_css_asset('public://css/27.css'),
159           27 => $create_file_css_asset('public://css/28.css'),
160           28 => $create_file_css_asset('public://css/29.css'),
161           29 => $create_file_css_asset('public://css/30.css'),
162           30 => $create_file_css_asset('public://css/31.css'),
163         ],
164         [
165           0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/1.css')) . '?0'),
166           1 => $create_link_element(file_url_transform_relative(file_create_url('public://css/2.css')) . '?0'),
167           2 => $create_link_element(file_url_transform_relative(file_create_url('public://css/3.css')) . '?0'),
168           3 => $create_link_element(file_url_transform_relative(file_create_url('public://css/4.css')) . '?0'),
169           4 => $create_link_element(file_url_transform_relative(file_create_url('public://css/5.css')) . '?0'),
170           5 => $create_link_element(file_url_transform_relative(file_create_url('public://css/6.css')) . '?0'),
171           6 => $create_link_element(file_url_transform_relative(file_create_url('public://css/7.css')) . '?0'),
172           7 => $create_link_element(file_url_transform_relative(file_create_url('public://css/8.css')) . '?0'),
173           8 => $create_link_element(file_url_transform_relative(file_create_url('public://css/9.css')) . '?0'),
174           9 => $create_link_element(file_url_transform_relative(file_create_url('public://css/10.css')) . '?0'),
175           10 => $create_link_element(file_url_transform_relative(file_create_url('public://css/11.css')) . '?0'),
176           11 => $create_link_element(file_url_transform_relative(file_create_url('public://css/12.css')) . '?0'),
177           12 => $create_link_element(file_url_transform_relative(file_create_url('public://css/13.css')) . '?0'),
178           13 => $create_link_element(file_url_transform_relative(file_create_url('public://css/14.css')) . '?0'),
179           14 => $create_link_element(file_url_transform_relative(file_create_url('public://css/15.css')) . '?0'),
180           15 => $create_link_element(file_url_transform_relative(file_create_url('public://css/16.css')) . '?0'),
181           16 => $create_link_element(file_url_transform_relative(file_create_url('public://css/17.css')) . '?0'),
182           17 => $create_link_element(file_url_transform_relative(file_create_url('public://css/18.css')) . '?0'),
183           18 => $create_link_element(file_url_transform_relative(file_create_url('public://css/19.css')) . '?0'),
184           19 => $create_link_element(file_url_transform_relative(file_create_url('public://css/20.css')) . '?0'),
185           20 => $create_link_element(file_url_transform_relative(file_create_url('public://css/21.css')) . '?0'),
186           21 => $create_link_element(file_url_transform_relative(file_create_url('public://css/22.css')) . '?0'),
187           22 => $create_link_element(file_url_transform_relative(file_create_url('public://css/23.css')) . '?0'),
188           23 => $create_link_element(file_url_transform_relative(file_create_url('public://css/24.css')) . '?0'),
189           24 => $create_link_element(file_url_transform_relative(file_create_url('public://css/25.css')) . '?0'),
190           25 => $create_link_element(file_url_transform_relative(file_create_url('public://css/26.css')) . '?0'),
191           26 => $create_link_element(file_url_transform_relative(file_create_url('public://css/27.css')) . '?0'),
192           27 => $create_link_element(file_url_transform_relative(file_create_url('public://css/28.css')) . '?0'),
193           28 => $create_link_element(file_url_transform_relative(file_create_url('public://css/29.css')) . '?0'),
194           29 => $create_link_element(file_url_transform_relative(file_create_url('public://css/30.css')) . '?0'),
195           30 => $create_link_element(file_url_transform_relative(file_create_url('public://css/31.css')) . '?0'),
196         ],
197       ],
198       // 32 file CSS assets with the same properties: expect 2 style elements.
199       4 => [
200         [
201           0 => $create_file_css_asset('public://css/1.css'),
202           1 => $create_file_css_asset('public://css/2.css'),
203           2 => $create_file_css_asset('public://css/3.css'),
204           3 => $create_file_css_asset('public://css/4.css'),
205           4 => $create_file_css_asset('public://css/5.css'),
206           5 => $create_file_css_asset('public://css/6.css'),
207           6 => $create_file_css_asset('public://css/7.css'),
208           7 => $create_file_css_asset('public://css/8.css'),
209           8 => $create_file_css_asset('public://css/9.css'),
210           9 => $create_file_css_asset('public://css/10.css'),
211           10 => $create_file_css_asset('public://css/11.css'),
212           11 => $create_file_css_asset('public://css/12.css'),
213           12 => $create_file_css_asset('public://css/13.css'),
214           13 => $create_file_css_asset('public://css/14.css'),
215           14 => $create_file_css_asset('public://css/15.css'),
216           15 => $create_file_css_asset('public://css/16.css'),
217           16 => $create_file_css_asset('public://css/17.css'),
218           17 => $create_file_css_asset('public://css/18.css'),
219           18 => $create_file_css_asset('public://css/19.css'),
220           19 => $create_file_css_asset('public://css/20.css'),
221           20 => $create_file_css_asset('public://css/21.css'),
222           21 => $create_file_css_asset('public://css/22.css'),
223           22 => $create_file_css_asset('public://css/23.css'),
224           23 => $create_file_css_asset('public://css/24.css'),
225           24 => $create_file_css_asset('public://css/25.css'),
226           25 => $create_file_css_asset('public://css/26.css'),
227           26 => $create_file_css_asset('public://css/27.css'),
228           27 => $create_file_css_asset('public://css/28.css'),
229           28 => $create_file_css_asset('public://css/29.css'),
230           29 => $create_file_css_asset('public://css/30.css'),
231           30 => $create_file_css_asset('public://css/31.css'),
232           31 => $create_file_css_asset('public://css/32.css'),
233         ],
234         [
235           0 => $create_style_element('
236 @import url("' . file_url_transform_relative(file_create_url('public://css/1.css')) . '?0");
237 @import url("' . file_url_transform_relative(file_create_url('public://css/2.css')) . '?0");
238 @import url("' . file_url_transform_relative(file_create_url('public://css/3.css')) . '?0");
239 @import url("' . file_url_transform_relative(file_create_url('public://css/4.css')) . '?0");
240 @import url("' . file_url_transform_relative(file_create_url('public://css/5.css')) . '?0");
241 @import url("' . file_url_transform_relative(file_create_url('public://css/6.css')) . '?0");
242 @import url("' . file_url_transform_relative(file_create_url('public://css/7.css')) . '?0");
243 @import url("' . file_url_transform_relative(file_create_url('public://css/8.css')) . '?0");
244 @import url("' . file_url_transform_relative(file_create_url('public://css/9.css')) . '?0");
245 @import url("' . file_url_transform_relative(file_create_url('public://css/10.css')) . '?0");
246 @import url("' . file_url_transform_relative(file_create_url('public://css/11.css')) . '?0");
247 @import url("' . file_url_transform_relative(file_create_url('public://css/12.css')) . '?0");
248 @import url("' . file_url_transform_relative(file_create_url('public://css/13.css')) . '?0");
249 @import url("' . file_url_transform_relative(file_create_url('public://css/14.css')) . '?0");
250 @import url("' . file_url_transform_relative(file_create_url('public://css/15.css')) . '?0");
251 @import url("' . file_url_transform_relative(file_create_url('public://css/16.css')) . '?0");
252 @import url("' . file_url_transform_relative(file_create_url('public://css/17.css')) . '?0");
253 @import url("' . file_url_transform_relative(file_create_url('public://css/18.css')) . '?0");
254 @import url("' . file_url_transform_relative(file_create_url('public://css/19.css')) . '?0");
255 @import url("' . file_url_transform_relative(file_create_url('public://css/20.css')) . '?0");
256 @import url("' . file_url_transform_relative(file_create_url('public://css/21.css')) . '?0");
257 @import url("' . file_url_transform_relative(file_create_url('public://css/22.css')) . '?0");
258 @import url("' . file_url_transform_relative(file_create_url('public://css/23.css')) . '?0");
259 @import url("' . file_url_transform_relative(file_create_url('public://css/24.css')) . '?0");
260 @import url("' . file_url_transform_relative(file_create_url('public://css/25.css')) . '?0");
261 @import url("' . file_url_transform_relative(file_create_url('public://css/26.css')) . '?0");
262 @import url("' . file_url_transform_relative(file_create_url('public://css/27.css')) . '?0");
263 @import url("' . file_url_transform_relative(file_create_url('public://css/28.css')) . '?0");
264 @import url("' . file_url_transform_relative(file_create_url('public://css/29.css')) . '?0");
265 @import url("' . file_url_transform_relative(file_create_url('public://css/30.css')) . '?0");
266 @import url("' . file_url_transform_relative(file_create_url('public://css/31.css')) . '?0");
267 ', 'all'),
268           1 => $create_style_element('
269 @import url("' . file_url_transform_relative(file_create_url('public://css/32.css')) . '?0");
270 ', 'all'),
271         ],
272       ],
273       // 32 file CSS assets with the same properties, except for the 10th and
274       // 20th files, they have different 'media' properties. Expect 5 style
275       // elements.
276       5 => [
277         [
278           0 => $create_file_css_asset('public://css/1.css'),
279           1 => $create_file_css_asset('public://css/2.css'),
280           2 => $create_file_css_asset('public://css/3.css'),
281           3 => $create_file_css_asset('public://css/4.css'),
282           4 => $create_file_css_asset('public://css/5.css'),
283           5 => $create_file_css_asset('public://css/6.css'),
284           6 => $create_file_css_asset('public://css/7.css'),
285           7 => $create_file_css_asset('public://css/8.css'),
286           8 => $create_file_css_asset('public://css/9.css'),
287           9 => $create_file_css_asset('public://css/10.css', 'screen'),
288           10 => $create_file_css_asset('public://css/11.css'),
289           11 => $create_file_css_asset('public://css/12.css'),
290           12 => $create_file_css_asset('public://css/13.css'),
291           13 => $create_file_css_asset('public://css/14.css'),
292           14 => $create_file_css_asset('public://css/15.css'),
293           15 => $create_file_css_asset('public://css/16.css'),
294           16 => $create_file_css_asset('public://css/17.css'),
295           17 => $create_file_css_asset('public://css/18.css'),
296           18 => $create_file_css_asset('public://css/19.css'),
297           19 => $create_file_css_asset('public://css/20.css', 'print'),
298           20 => $create_file_css_asset('public://css/21.css'),
299           21 => $create_file_css_asset('public://css/22.css'),
300           22 => $create_file_css_asset('public://css/23.css'),
301           23 => $create_file_css_asset('public://css/24.css'),
302           24 => $create_file_css_asset('public://css/25.css'),
303           25 => $create_file_css_asset('public://css/26.css'),
304           26 => $create_file_css_asset('public://css/27.css'),
305           27 => $create_file_css_asset('public://css/28.css'),
306           28 => $create_file_css_asset('public://css/29.css'),
307           29 => $create_file_css_asset('public://css/30.css'),
308           30 => $create_file_css_asset('public://css/31.css'),
309           31 => $create_file_css_asset('public://css/32.css'),
310         ],
311         [
312           0 => $create_style_element('
313 @import url("' . file_url_transform_relative(file_create_url('public://css/1.css')) . '?0");
314 @import url("' . file_url_transform_relative(file_create_url('public://css/2.css')) . '?0");
315 @import url("' . file_url_transform_relative(file_create_url('public://css/3.css')) . '?0");
316 @import url("' . file_url_transform_relative(file_create_url('public://css/4.css')) . '?0");
317 @import url("' . file_url_transform_relative(file_create_url('public://css/5.css')) . '?0");
318 @import url("' . file_url_transform_relative(file_create_url('public://css/6.css')) . '?0");
319 @import url("' . file_url_transform_relative(file_create_url('public://css/7.css')) . '?0");
320 @import url("' . file_url_transform_relative(file_create_url('public://css/8.css')) . '?0");
321 @import url("' . file_url_transform_relative(file_create_url('public://css/9.css')) . '?0");
322 ', 'all'),
323           1 => $create_style_element('
324 @import url("' . file_url_transform_relative(file_create_url('public://css/10.css')) . '?0");
325 ', 'screen'),
326           2 => $create_style_element('
327 @import url("' . file_url_transform_relative(file_create_url('public://css/11.css')) . '?0");
328 @import url("' . file_url_transform_relative(file_create_url('public://css/12.css')) . '?0");
329 @import url("' . file_url_transform_relative(file_create_url('public://css/13.css')) . '?0");
330 @import url("' . file_url_transform_relative(file_create_url('public://css/14.css')) . '?0");
331 @import url("' . file_url_transform_relative(file_create_url('public://css/15.css')) . '?0");
332 @import url("' . file_url_transform_relative(file_create_url('public://css/16.css')) . '?0");
333 @import url("' . file_url_transform_relative(file_create_url('public://css/17.css')) . '?0");
334 @import url("' . file_url_transform_relative(file_create_url('public://css/18.css')) . '?0");
335 @import url("' . file_url_transform_relative(file_create_url('public://css/19.css')) . '?0");
336 ', 'all'),
337           3 => $create_style_element('
338 @import url("' . file_url_transform_relative(file_create_url('public://css/20.css')) . '?0");
339 ', 'print'),
340           4 => $create_style_element('
341 @import url("' . file_url_transform_relative(file_create_url('public://css/21.css')) . '?0");
342 @import url("' . file_url_transform_relative(file_create_url('public://css/22.css')) . '?0");
343 @import url("' . file_url_transform_relative(file_create_url('public://css/23.css')) . '?0");
344 @import url("' . file_url_transform_relative(file_create_url('public://css/24.css')) . '?0");
345 @import url("' . file_url_transform_relative(file_create_url('public://css/25.css')) . '?0");
346 @import url("' . file_url_transform_relative(file_create_url('public://css/26.css')) . '?0");
347 @import url("' . file_url_transform_relative(file_create_url('public://css/27.css')) . '?0");
348 @import url("' . file_url_transform_relative(file_create_url('public://css/28.css')) . '?0");
349 @import url("' . file_url_transform_relative(file_create_url('public://css/29.css')) . '?0");
350 @import url("' . file_url_transform_relative(file_create_url('public://css/30.css')) . '?0");
351 @import url("' . file_url_transform_relative(file_create_url('public://css/31.css')) . '?0");
352 @import url("' . file_url_transform_relative(file_create_url('public://css/32.css')) . '?0");
353 ', 'all'),
354         ],
355       ],
356       // 32 file CSS assets with the same properties, except for the 15th, which
357       // has 'preprocess' = FALSE. Expect 1 link element and 2 style elements.
358       6 => [
359         [
360           0 => $create_file_css_asset('public://css/1.css'),
361           1 => $create_file_css_asset('public://css/2.css'),
362           2 => $create_file_css_asset('public://css/3.css'),
363           3 => $create_file_css_asset('public://css/4.css'),
364           4 => $create_file_css_asset('public://css/5.css'),
365           5 => $create_file_css_asset('public://css/6.css'),
366           6 => $create_file_css_asset('public://css/7.css'),
367           7 => $create_file_css_asset('public://css/8.css'),
368           8 => $create_file_css_asset('public://css/9.css'),
369           9 => $create_file_css_asset('public://css/10.css'),
370           10 => $create_file_css_asset('public://css/11.css'),
371           11 => $create_file_css_asset('public://css/12.css'),
372           12 => $create_file_css_asset('public://css/13.css'),
373           13 => $create_file_css_asset('public://css/14.css'),
374           14 => $create_file_css_asset('public://css/15.css', 'all', FALSE),
375           15 => $create_file_css_asset('public://css/16.css'),
376           16 => $create_file_css_asset('public://css/17.css'),
377           17 => $create_file_css_asset('public://css/18.css'),
378           18 => $create_file_css_asset('public://css/19.css'),
379           19 => $create_file_css_asset('public://css/20.css'),
380           20 => $create_file_css_asset('public://css/21.css'),
381           21 => $create_file_css_asset('public://css/22.css'),
382           22 => $create_file_css_asset('public://css/23.css'),
383           23 => $create_file_css_asset('public://css/24.css'),
384           24 => $create_file_css_asset('public://css/25.css'),
385           25 => $create_file_css_asset('public://css/26.css'),
386           26 => $create_file_css_asset('public://css/27.css'),
387           27 => $create_file_css_asset('public://css/28.css'),
388           28 => $create_file_css_asset('public://css/29.css'),
389           29 => $create_file_css_asset('public://css/30.css'),
390           30 => $create_file_css_asset('public://css/31.css'),
391           31 => $create_file_css_asset('public://css/32.css'),
392         ],
393         [
394           0 => $create_style_element('
395 @import url("' . file_url_transform_relative(file_create_url('public://css/1.css')) . '?0");
396 @import url("' . file_url_transform_relative(file_create_url('public://css/2.css')) . '?0");
397 @import url("' . file_url_transform_relative(file_create_url('public://css/3.css')) . '?0");
398 @import url("' . file_url_transform_relative(file_create_url('public://css/4.css')) . '?0");
399 @import url("' . file_url_transform_relative(file_create_url('public://css/5.css')) . '?0");
400 @import url("' . file_url_transform_relative(file_create_url('public://css/6.css')) . '?0");
401 @import url("' . file_url_transform_relative(file_create_url('public://css/7.css')) . '?0");
402 @import url("' . file_url_transform_relative(file_create_url('public://css/8.css')) . '?0");
403 @import url("' . file_url_transform_relative(file_create_url('public://css/9.css')) . '?0");
404 @import url("' . file_url_transform_relative(file_create_url('public://css/10.css')) . '?0");
405 @import url("' . file_url_transform_relative(file_create_url('public://css/11.css')) . '?0");
406 @import url("' . file_url_transform_relative(file_create_url('public://css/12.css')) . '?0");
407 @import url("' . file_url_transform_relative(file_create_url('public://css/13.css')) . '?0");
408 @import url("' . file_url_transform_relative(file_create_url('public://css/14.css')) . '?0");
409 ', 'all'),
410           1 => $create_link_element(file_url_transform_relative(file_create_url('public://css/15.css')) . '?0'),
411           2 => $create_style_element('
412 @import url("' . file_url_transform_relative(file_create_url('public://css/16.css')) . '?0");
413 @import url("' . file_url_transform_relative(file_create_url('public://css/17.css')) . '?0");
414 @import url("' . file_url_transform_relative(file_create_url('public://css/18.css')) . '?0");
415 @import url("' . file_url_transform_relative(file_create_url('public://css/19.css')) . '?0");
416 @import url("' . file_url_transform_relative(file_create_url('public://css/20.css')) . '?0");
417 @import url("' . file_url_transform_relative(file_create_url('public://css/21.css')) . '?0");
418 @import url("' . file_url_transform_relative(file_create_url('public://css/22.css')) . '?0");
419 @import url("' . file_url_transform_relative(file_create_url('public://css/23.css')) . '?0");
420 @import url("' . file_url_transform_relative(file_create_url('public://css/24.css')) . '?0");
421 @import url("' . file_url_transform_relative(file_create_url('public://css/25.css')) . '?0");
422 @import url("' . file_url_transform_relative(file_create_url('public://css/26.css')) . '?0");
423 @import url("' . file_url_transform_relative(file_create_url('public://css/27.css')) . '?0");
424 @import url("' . file_url_transform_relative(file_create_url('public://css/28.css')) . '?0");
425 @import url("' . file_url_transform_relative(file_create_url('public://css/29.css')) . '?0");
426 @import url("' . file_url_transform_relative(file_create_url('public://css/30.css')) . '?0");
427 @import url("' . file_url_transform_relative(file_create_url('public://css/31.css')) . '?0");
428 @import url("' . file_url_transform_relative(file_create_url('public://css/32.css')) . '?0");
429 ', 'all'),
430         ],
431       ],
432     ];
433   }
434
435   /**
436    * Tests CSS asset rendering.
437    *
438    * @dataProvider providerTestRender
439    */
440   public function testRender(array $css_assets, array $render_elements) {
441     $this->state->expects($this->once())
442       ->method('get')
443       ->with('system.css_js_query_string')
444       ->will($this->returnValue(NULL));
445     $this->assertSame($render_elements, $this->renderer->render($css_assets));
446   }
447
448   /**
449    * Tests a CSS asset group with the invalid 'type' => 'internal'.
450    */
451   public function testRenderInvalidType() {
452     $this->state->expects($this->once())
453       ->method('get')
454       ->with('system.css_js_query_string')
455       ->will($this->returnValue(NULL));
456     $this->setExpectedException('Exception', 'Invalid CSS asset type.');
457
458     $css_group = [
459       'group' => 0,
460       'type' => 'internal',
461       'media' => 'all',
462       'preprocess' => TRUE,
463       'browsers' => [],
464       'data' => 'http://example.com/popular.js'
465     ];
466     $this->renderer->render($css_group);
467   }
468
469 }
470
471 /**
472  * Temporary mock for file_create_url(), until that is moved into
473  * Component/Utility.
474  */
475 if (!function_exists('Drupal\Tests\Core\Asset\file_create_url')) {
476   function file_create_url($uri) {
477     return 'file_create_url:' . $uri;
478   }
479 }
480
481 /**
482  * Temporary mock of file_url_transform_relative, until that is moved into
483  * Component/Utility.
484  */
485 if (!function_exists('Drupal\Tests\Core\Asset\file_url_transform_relative')) {
486   function file_url_transform_relative($uri) {
487     return 'file_url_transform_relative:' . $uri;
488   }
489 }
490
491 /**
492  * CssCollectionRenderer uses file_create_url() & file_url_transform_relative(),
493  * which *are* available when using the Simpletest test runner, but not when
494  * using the PHPUnit test runner; hence this hack.
495  */
496 namespace Drupal\Core\Asset;
497
498 if (!function_exists('Drupal\Core\Asset\file_create_url')) {
499
500   /**
501    * Temporary mock for file_create_url(), until that is moved into
502    * Component/Utility.
503    */
504   function file_create_url($uri) {
505     return \Drupal\Tests\Core\Asset\file_create_url($uri);
506   }
507
508 }
509 if (!function_exists('Drupal\Core\Asset\file_url_transform_relative')) {
510
511   /**
512    * Temporary mock of file_url_transform_relative, until that is moved into
513    * Component/Utility.
514    */
515   function file_url_transform_relative($uri) {
516     return \Drupal\Tests\Core\Asset\file_url_transform_relative($uri);
517   }
518
519 }