source: trip-planner-front/node_modules/postcss-selector-parser/dist/__tests__/attributes.js@ 6a3a178

Last change on this file since 6a3a178 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 25.4 KB
Line 
1"use strict";
2
3var _process = _interopRequireDefault(require("process"));
4
5var _attribute = _interopRequireDefault(require("../selectors/attribute"));
6
7var _helpers = require("./util/helpers");
8
9function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
11_process["default"].throwDeprecation = true;
12(0, _helpers.test)('attribute selector', '[href]', function (t, tree) {
13 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
14 t.deepEqual(tree.nodes[0].nodes[0].type, 'attribute');
15 t.falsy(tree.nodes[0].nodes[0].quoted);
16});
17(0, _helpers.test)('attribute selector spaces (before)', '[ href]', function (t, tree) {
18 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
19 t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.before, ' ');
20 t.deepEqual(tree.nodes[0].nodes[0].type, 'attribute');
21 t.falsy(tree.nodes[0].nodes[0].quoted);
22});
23(0, _helpers.test)('attribute selector spaces (after)', '[href ]', function (t, tree) {
24 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
25 t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.after, ' ');
26 t.deepEqual(tree.nodes[0].nodes[0].type, 'attribute');
27 t.falsy(tree.nodes[0].nodes[0].quoted);
28});
29(0, _helpers.test)('attribute selector spaces with namespace (both)', '[ foo|bar ]', function (t, tree) {
30 t.deepEqual(tree.nodes[0].nodes[0].ns, 'foo');
31 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'bar');
32 t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.before, ' ');
33 t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.after, ' ');
34 t.deepEqual(tree.nodes[0].nodes[0].type, 'attribute');
35 t.falsy(tree.nodes[0].nodes[0].quoted);
36});
37(0, _helpers.test)('attribute selector spaces (both)', '[ href ]', function (t, tree) {
38 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
39 t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.before, ' ');
40 t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.after, ' ');
41 t.deepEqual(tree.nodes[0].nodes[0].type, 'attribute');
42 t.falsy(tree.nodes[0].nodes[0].quoted);
43});
44(0, _helpers.test)('multiple attribute selectors', '[href][class][name]', function (t, tree) {
45 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
46 t.deepEqual(tree.nodes[0].nodes[1].attribute, 'class');
47 t.deepEqual(tree.nodes[0].nodes[2].attribute, 'name');
48});
49(0, _helpers.test)('select elements with or without a namespace', '[*|href]', function (t, tree) {
50 t.deepEqual(tree.nodes[0].nodes[0].namespace, '*');
51 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
52});
53(0, _helpers.test)('namespace with escapes', '[\\31 \\#\\32 |href]', function (t, tree) {
54 var attr = tree.nodes[0].nodes[0];
55 t.deepEqual(attr.namespace, '1#2');
56 t.deepEqual(attr.raws.namespace, '\\31 \\#\\32 ');
57 attr.namespace = "foo";
58 t.deepEqual(attr.namespace, 'foo');
59 t.deepEqual(attr.raws.namespace, undefined);
60 attr.namespace = "1";
61 t.deepEqual(attr.namespace, '1');
62 t.deepEqual(attr.raws.namespace, '\\31');
63});
64(0, _helpers.test)('attribute selector with a empty value', '[href=""]', function (t, tree) {
65 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
66 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
67 t.deepEqual(tree.nodes[0].nodes[0].value, '');
68 t["true"](tree.nodes[0].nodes[0].quoted);
69});
70(0, _helpers.test)('attribute selector with a value', '[name=james]', function (t, tree) {
71 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'name');
72 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
73 t.deepEqual(tree.nodes[0].nodes[0].value, 'james');
74 t.falsy(tree.nodes[0].nodes[0].quoted);
75});
76(0, _helpers.test)('attribute selector with quoted value', '[name="james"]', function (t, tree) {
77 var attr = tree.nodes[0].nodes[0];
78 t.deepEqual(attr.attribute, 'name');
79 t.deepEqual(attr.operator, '=');
80 t.deepEqual(attr.value, 'james');
81 t.deepEqual(attr.quoteMark, '"');
82 t.truthy(attr.quoted);
83 t.deepEqual(attr.getQuotedValue(), '"james"');
84});
85(0, _helpers.test)('attribute selector with escaped quote', '[title="Something \\"weird\\""]', function (t, tree) {
86 var attr = tree.nodes[0].nodes[0];
87 t.deepEqual(attr.value, 'Something "weird"');
88 t.deepEqual(attr.getQuotedValue(), '\"Something \\"weird\\"\"');
89 t.deepEqual(attr.getQuotedValue({
90 smart: true
91 }), '\'Something "weird"\'');
92 t.deepEqual(attr.getQuotedValue({
93 quoteMark: null
94 }), 'Something\\ \\"weird\\"');
95 t.deepEqual(attr.quoteMark, '"');
96 t.truthy(attr.quoted);
97 t.deepEqual(attr.raws.value, '"Something \\"weird\\""');
98 t.deepEqual(tree.toString(), '[title="Something \\"weird\\""]');
99});
100(0, _helpers.test)('attribute selector with escaped colon', '[ng\\:cloak]', function (t, tree) {
101 t.deepEqual(tree.toString(), '[ng\\:cloak]');
102 var attr = tree.nodes[0].nodes[0];
103 t.deepEqual(attr.raws.attribute, 'ng\\:cloak');
104 t.deepEqual(attr.attribute, 'ng:cloak');
105});
106(0, _helpers.test)('attribute selector with short hex escape', '[ng\\3a cloak]', function (t, tree) {
107 t.deepEqual(tree.toString(), '[ng\\3a cloak]');
108 var attr = tree.nodes[0].nodes[0];
109 t.deepEqual(attr.raws.attribute, 'ng\\3a cloak');
110 t.deepEqual(attr.attribute, 'ng:cloak');
111});
112(0, _helpers.test)('attribute selector with hex escape', '[ng\\00003acloak]', function (t, tree) {
113 t.deepEqual(tree.toString(), '[ng\\00003acloak]');
114 var attr = tree.nodes[0].nodes[0];
115 t.deepEqual(attr.raws.attribute, 'ng\\00003acloak');
116 t.deepEqual(attr.attribute, 'ng:cloak');
117});
118(0, _helpers.test)('assign attribute name requiring escape', '[ng\\:cloak]', function (t, tree) {
119 var attr = tree.nodes[0].nodes[0];
120 attr.attribute = "ng:foo";
121 t.deepEqual(attr.raws.attribute, 'ng\\:foo');
122 t.deepEqual(attr.attribute, 'ng:foo');
123 t.deepEqual(tree.toString(), '[ng\\:foo]');
124});
125(0, _helpers.test)('multiple attribute selectors + combinator', '[href][class][name] h1 > h2', function (t, tree) {
126 t.deepEqual(tree.nodes[0].nodes[2].attribute, 'name');
127 t.deepEqual(tree.nodes[0].nodes[3].value, ' ');
128 t.deepEqual(tree.nodes[0].nodes[5].value, '>');
129 t.deepEqual(tree.nodes[0].nodes[6].value, 'h2');
130});
131(0, _helpers.test)('attribute, class, combinator', '[href] > h2.test', function (t, tree) {
132 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
133 t.deepEqual(tree.nodes[0].nodes[1].value, '>');
134 t.deepEqual(tree.nodes[0].nodes[2].value, 'h2');
135 t.deepEqual(tree.nodes[0].nodes[3].value, 'test');
136});
137(0, _helpers.test)('attribute selector with quoted value & combinator', '[name="james"] > h1', function (t, tree) {
138 t.deepEqual(tree.nodes[0].nodes[0].value, 'james');
139 t.deepEqual(tree.nodes[0].nodes[0].quoteMark, '"');
140 t.deepEqual(tree.nodes[0].nodes[1].value, '>');
141 t.deepEqual(tree.nodes[0].nodes[2].value, 'h1');
142});
143(0, _helpers.test)('multiple quoted attribute selectors', '[href*="test.com"][rel=\'external\'][id][class~="test"] > [name]', function (t, tree) {
144 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
145 t.deepEqual(tree.nodes[0].nodes[0].value, 'test.com');
146 t.is(tree.nodes[0].nodes[0].quoteMark, '"');
147 t.deepEqual(tree.nodes[0].nodes[1].attribute, 'rel');
148 t.deepEqual(tree.nodes[0].nodes[1].value, 'external');
149 t.is(tree.nodes[0].nodes[1].quoteMark, "'");
150 t.deepEqual(tree.nodes[0].nodes[2].attribute, 'id');
151 t.falsy(tree.nodes[0].nodes[2].value, 'should not have a value');
152 t.is(tree.nodes[0].nodes[2].quoteMark, undefined, 'should not have a quoteMark set');
153 t.deepEqual(tree.nodes[0].nodes[3].attribute, 'class');
154 t.deepEqual(tree.nodes[0].nodes[3].value, 'test');
155 t.deepEqual(tree.nodes[0].nodes[3].quoteMark, '"');
156 t.deepEqual(tree.nodes[0].nodes[4].value, '>');
157 t.deepEqual(tree.nodes[0].nodes[5].attribute, 'name');
158 t.falsy(tree.nodes[0].nodes[5].value, 'should not have a value');
159 t.is(tree.nodes[0].nodes[5].quoteMark, undefined, 'should not have a quoteMark set');
160});
161(0, _helpers.test)('more attribute operators', '[href*=test],[href^=test],[href$=test],[href|=test]', function (t, tree) {
162 t.deepEqual(tree.nodes[0].nodes[0].operator, '*=');
163 t.deepEqual(tree.nodes[1].nodes[0].operator, '^=');
164 t.deepEqual(tree.nodes[2].nodes[0].operator, '$=');
165 t.deepEqual(tree.nodes[3].nodes[0].operator, '|=');
166});
167(0, _helpers.test)('attribute selector with quoted value containing "="', '[data-weird-attr="Something=weird"]', function (t, tree) {
168 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-attr');
169 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
170 t.deepEqual(tree.nodes[0].nodes[0].value, 'Something=weird');
171 t.is(tree.nodes[0].nodes[0].quoteMark, '"');
172 t.deepEqual(tree.nodes[0].nodes[0].getQuotedValue(), '"Something=weird"');
173});
174var selector = '[data-weird-attr*="Something=weird"],' + '[data-weird-attr^="Something=weird"],' + '[data-weird-attr$="Something=weird"],' + '[data-weird-attr|="Something=weird"]';
175(0, _helpers.test)('more attribute selector with quoted value containing "="', selector, function (t, tree) {
176 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-attr');
177 t.deepEqual(tree.nodes[0].nodes[0].operator, '*=');
178 t.deepEqual(tree.nodes[0].nodes[0].value, 'Something=weird');
179 t.deepEqual(tree.nodes[1].nodes[0].attribute, 'data-weird-attr');
180 t.deepEqual(tree.nodes[1].nodes[0].operator, '^=');
181 t.deepEqual(tree.nodes[1].nodes[0].value, 'Something=weird');
182 t.deepEqual(tree.nodes[2].nodes[0].attribute, 'data-weird-attr');
183 t.deepEqual(tree.nodes[2].nodes[0].operator, '$=');
184 t.deepEqual(tree.nodes[2].nodes[0].value, 'Something=weird');
185 t.deepEqual(tree.nodes[3].nodes[0].attribute, 'data-weird-attr');
186 t.deepEqual(tree.nodes[3].nodes[0].operator, '|=');
187 t.deepEqual(tree.nodes[3].nodes[0].value, 'Something=weird');
188});
189(0, _helpers.test)('attribute selector with quoted value containing multiple "="', '[data-weird-attr="Something=weird SomethingElse=weirder"]', function (t, tree) {
190 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-attr');
191 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
192 t.deepEqual(tree.nodes[0].nodes[0].value, 'Something=weird SomethingElse=weirder');
193});
194selector = '[data-weird-attr*="Something=weird SomethingElse=weirder"],' + '[data-weird-attr^="Something=weird SomethingElse=weirder"],' + '[data-weird-attr$="Something=weird SomethingElse=weirder"],' + '[data-weird-attr|="Something=weird SomethingElse=weirder"]';
195(0, _helpers.test)('more attribute selector with quoted value containing multiple "="', selector, function (t, tree) {
196 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-attr');
197 t.deepEqual(tree.nodes[0].nodes[0].operator, '*=');
198 t.deepEqual(tree.nodes[0].nodes[0].value, 'Something=weird SomethingElse=weirder');
199 t.deepEqual(tree.nodes[1].nodes[0].attribute, 'data-weird-attr');
200 t.deepEqual(tree.nodes[1].nodes[0].operator, '^=');
201 t.deepEqual(tree.nodes[1].nodes[0].value, 'Something=weird SomethingElse=weirder');
202 t.deepEqual(tree.nodes[2].nodes[0].attribute, 'data-weird-attr');
203 t.deepEqual(tree.nodes[2].nodes[0].operator, '$=');
204 t.deepEqual(tree.nodes[2].nodes[0].value, 'Something=weird SomethingElse=weirder');
205 t.deepEqual(tree.nodes[3].nodes[0].attribute, 'data-weird-attr');
206 t.deepEqual(tree.nodes[3].nodes[0].operator, '|=');
207 t.deepEqual(tree.nodes[3].nodes[0].value, 'Something=weird SomethingElse=weirder');
208});
209(0, _helpers.test)('multiple attribute selectors with quoted value containing "="', '[data-weird-foo="foo=weird"][data-weird-bar="bar=weird"]', function (t, tree) {
210 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-foo');
211 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
212 t.deepEqual(tree.nodes[0].nodes[0].value, 'foo=weird');
213 t.deepEqual(tree.nodes[0].nodes[1].attribute, 'data-weird-bar');
214 t.deepEqual(tree.nodes[0].nodes[1].operator, '=');
215 t.deepEqual(tree.nodes[0].nodes[1].value, 'bar=weird');
216});
217(0, _helpers.test)('multiple attribute selectors with value containing escaped "="', '[data-weird-foo=foo\\=weird][data-weird-bar=bar\\3d weird]', function (t, tree) {
218 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-foo');
219 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
220 t.deepEqual(tree.nodes[0].nodes[0].value, 'foo=weird');
221 t.deepEqual(tree.nodes[0].nodes[1].attribute, 'data-weird-bar');
222 t.deepEqual(tree.nodes[0].nodes[1].operator, '=');
223 t.deepEqual(tree.nodes[0].nodes[1].value, 'bar=weird');
224});
225selector = '[data-weird-foo*="foo2=weirder"][data-weird-bar*="bar2=weirder"],' + '[data-weird-foo^="foo2=weirder"][data-weird-bar^="bar2=weirder"],' + '[data-weird-foo$="foo2=weirder"][data-weird-bar$="bar2=weirder"],' + '[data-weird-foo|="foo2=weirder"][data-weird-bar|="bar2=weirder"]';
226(0, _helpers.test)('more multiple attribute selectors with quoted value containing "="', selector, function (t, tree) {
227 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-foo');
228 t.deepEqual(tree.nodes[0].nodes[0].operator, '*=');
229 t.deepEqual(tree.nodes[0].nodes[0].value, 'foo2=weirder');
230 t.deepEqual(tree.nodes[0].nodes[1].attribute, 'data-weird-bar');
231 t.deepEqual(tree.nodes[0].nodes[1].operator, '*=');
232 t.deepEqual(tree.nodes[0].nodes[1].value, 'bar2=weirder');
233 t.deepEqual(tree.nodes[1].nodes[0].attribute, 'data-weird-foo');
234 t.deepEqual(tree.nodes[1].nodes[0].operator, '^=');
235 t.deepEqual(tree.nodes[1].nodes[0].value, 'foo2=weirder');
236 t.deepEqual(tree.nodes[1].nodes[1].attribute, 'data-weird-bar');
237 t.deepEqual(tree.nodes[1].nodes[1].operator, '^=');
238 t.deepEqual(tree.nodes[1].nodes[1].value, 'bar2=weirder');
239 t.deepEqual(tree.nodes[2].nodes[0].attribute, 'data-weird-foo');
240 t.deepEqual(tree.nodes[2].nodes[0].operator, '$=');
241 t.deepEqual(tree.nodes[2].nodes[0].value, 'foo2=weirder');
242 t.deepEqual(tree.nodes[2].nodes[1].attribute, 'data-weird-bar');
243 t.deepEqual(tree.nodes[2].nodes[1].operator, '$=');
244 t.deepEqual(tree.nodes[2].nodes[1].value, 'bar2=weirder');
245 t.deepEqual(tree.nodes[3].nodes[0].attribute, 'data-weird-foo');
246 t.deepEqual(tree.nodes[3].nodes[0].operator, '|=');
247 t.deepEqual(tree.nodes[3].nodes[0].value, 'foo2=weirder');
248 t.deepEqual(tree.nodes[3].nodes[1].attribute, 'data-weird-bar');
249 t.deepEqual(tree.nodes[3].nodes[1].operator, '|=');
250 t.deepEqual(tree.nodes[3].nodes[1].value, 'bar2=weirder');
251});
252(0, _helpers.test)('multiple attribute selectors with quoted value containing multiple "="', '[data-weird-foo="foo1=weirder foo2=weirder"][data-weird-bar="bar1=weirder bar2=weirder"]', function (t, tree) {
253 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-foo');
254 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
255 t.deepEqual(tree.nodes[0].nodes[0].value, 'foo1=weirder foo2=weirder');
256 t.deepEqual(tree.nodes[0].nodes[1].attribute, 'data-weird-bar');
257 t.deepEqual(tree.nodes[0].nodes[1].operator, '=');
258 t.deepEqual(tree.nodes[0].nodes[1].value, 'bar1=weirder bar2=weirder');
259});
260selector = '[data-weird-foo*="foo1=weirder foo2=weirder"][data-weird-bar*="bar1=weirder bar2=weirder"],' + '[data-weird-foo^="foo1=weirder foo2=weirder"][data-weird-bar^="bar1=weirder bar2=weirder"],' + '[data-weird-foo$="foo1=weirder foo2=weirder"][data-weird-bar$="bar1=weirder bar2=weirder"],' + '[data-weird-foo|="foo1=weirder foo2=weirder"][data-weird-bar|="bar1=weirder bar2=weirder"]';
261(0, _helpers.test)('more multiple attribute selectors with quoted value containing multiple "="', selector, function (t, tree) {
262 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-foo');
263 t.deepEqual(tree.nodes[0].nodes[0].operator, '*=');
264 t.deepEqual(tree.nodes[0].nodes[0].value, 'foo1=weirder foo2=weirder');
265 t.deepEqual(tree.nodes[0].nodes[1].attribute, 'data-weird-bar');
266 t.deepEqual(tree.nodes[0].nodes[1].operator, '*=');
267 t.deepEqual(tree.nodes[0].nodes[1].value, 'bar1=weirder bar2=weirder');
268 t.deepEqual(tree.nodes[1].nodes[0].attribute, 'data-weird-foo');
269 t.deepEqual(tree.nodes[1].nodes[0].operator, '^=');
270 t.deepEqual(tree.nodes[1].nodes[0].value, 'foo1=weirder foo2=weirder');
271 t.deepEqual(tree.nodes[1].nodes[1].attribute, 'data-weird-bar');
272 t.deepEqual(tree.nodes[1].nodes[1].operator, '^=');
273 t.deepEqual(tree.nodes[1].nodes[1].value, 'bar1=weirder bar2=weirder');
274 t.deepEqual(tree.nodes[2].nodes[0].attribute, 'data-weird-foo');
275 t.deepEqual(tree.nodes[2].nodes[0].operator, '$=');
276 t.deepEqual(tree.nodes[2].nodes[0].value, 'foo1=weirder foo2=weirder');
277 t.deepEqual(tree.nodes[2].nodes[1].attribute, 'data-weird-bar');
278 t.deepEqual(tree.nodes[2].nodes[1].operator, '$=');
279 t.deepEqual(tree.nodes[2].nodes[1].value, 'bar1=weirder bar2=weirder');
280 t.deepEqual(tree.nodes[3].nodes[0].attribute, 'data-weird-foo');
281 t.deepEqual(tree.nodes[3].nodes[0].operator, '|=');
282 t.deepEqual(tree.nodes[3].nodes[0].value, 'foo1=weirder foo2=weirder');
283 t.deepEqual(tree.nodes[3].nodes[1].attribute, 'data-weird-bar');
284 t.deepEqual(tree.nodes[3].nodes[1].operator, '|=');
285 t.deepEqual(tree.nodes[3].nodes[1].value, 'bar1=weirder bar2=weirder');
286});
287(0, _helpers.test)('spaces in attribute selectors', 'h1[ href *= "test" ]', function (t, tree) {
288 var attr = tree.nodes[0].nodes[1];
289 t.deepEqual(attr.attribute, 'href');
290 t.deepEqual(attr.spaces.attribute.before, ' ');
291 t.deepEqual(attr.spaces.attribute.after, ' ');
292 t.deepEqual(attr.operator, '*=');
293 t.deepEqual(attr.spaces.operator.after, ' ');
294 t.deepEqual(attr.value, 'test');
295 t.deepEqual(attr.spaces.value.after, ' ');
296 t.truthy(tree.nodes[0].nodes[1].quoted);
297});
298(0, _helpers.test)('insensitive attribute selector 1', '[href="test" i]', function (t, tree) {
299 t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
300 t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
301 t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
302});
303(0, _helpers.test)('insensitive attribute selector with a empty value', '[href="" i]', function (t, tree) {
304 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
305 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
306 t.deepEqual(tree.nodes[0].nodes[0].value, '');
307 t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
308 t["true"](tree.nodes[0].nodes[0].quoted);
309});
310(0, _helpers.test)('insensitive attribute selector 2', '[href=TEsT i ]', function (t, tree) {
311 t.deepEqual(tree.nodes[0].nodes[0].value, 'TEsT');
312 t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
313 t.deepEqual(tree.nodes[0].nodes[0].spaces.value.after, ' ');
314 t.deepEqual(tree.nodes[0].nodes[0].spaces.insensitive.after, ' ');
315});
316(0, _helpers.test)('insensitive attribute selector 3', '[href=test i]', function (t, tree) {
317 t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
318 t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
319});
320(0, _helpers.test)('capitalized insensitive attribute selector 3', '[href=test I]', function (t, tree) {
321 t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
322 t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
323});
324(0, _helpers.test)('extraneous non-combinating whitespace', ' [href] , [class] ', function (t, tree) {
325 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
326 t.deepEqual(tree.nodes[0].nodes[0].spaces.before, ' ');
327 t.deepEqual(tree.nodes[0].nodes[0].spaces.after, ' ');
328 t.deepEqual(tree.nodes[1].nodes[0].attribute, 'class');
329 t.deepEqual(tree.nodes[1].nodes[0].spaces.before, ' ');
330 t.deepEqual(tree.nodes[1].nodes[0].spaces.after, ' ');
331});
332(0, _helpers.test)('newline in attribute selector', '[class="woop \\\nwoop woop"]', function (t, tree) {
333 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'class');
334 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
335 t.deepEqual(tree.nodes[0].nodes[0].value, 'woop \nwoop woop');
336 t["true"](tree.nodes[0].nodes[0].quoted);
337});
338(0, _helpers.test)('comments within attribute selectors', '[href/* wow */=/* wow */test]', function (t, tree) {
339 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
340 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
341 t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
342 t.deepEqual(tree.nodes[0].nodes[0].raws.attribute, 'href/* wow */');
343 t.deepEqual(tree.nodes[0].nodes[0].raws.operator, '=/* wow */');
344 t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
345});
346(0, _helpers.test)('comments within attribute selectors (2)', '[/* wow */href=test/* wow */]', function (t, tree) {
347 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
348 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
349 t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
350 t.deepEqual(tree.nodes[0].nodes[0].raws.spaces.attribute.before, '/* wow */');
351 t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
352 t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'test/* wow */');
353});
354(0, _helpers.test)('comments within attribute selectors (3)', '[href=test/* wow */i]', function (t, tree) {
355 t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
356 t.deepEqual(tree.nodes[0].nodes[0].value, 'testi');
357 t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'test/* wow */i');
358 t.falsy(tree.nodes[0].nodes[0].insensitive);
359});
360(0, _helpers.test)('comments within attribute selectors (4)', '[ /*before*/ href /* after-attr */ = /* after-operator */ te/*inside-value*/st/* wow */ /*omg*/i/*bbq*/ /*whodoesthis*/]', function (t, tree) {
361 var attr = tree.nodes[0].nodes[0];
362 t.deepEqual(attr.attribute, 'href');
363 t.deepEqual(attr.value, 'test');
364 t.deepEqual(attr.getQuotedValue(), 'test');
365 t.deepEqual(attr.raws.value, 'te/*inside-value*/st');
366 t.deepEqual(attr.raws.spaces.value.after, '/* wow */ /*omg*/');
367 t.truthy(attr.insensitive);
368 t.deepEqual(attr.offsetOf("attribute"), 13);
369 t.deepEqual(attr.offsetOf("operator"), 35);
370 t.deepEqual(attr.offsetOf("insensitive"), 95);
371 t.deepEqual(attr.raws.spaces.insensitive.after, '/*bbq*/ /*whodoesthis*/');
372 attr.value = "foo";
373 t.is(attr.raws.value, undefined);
374});
375(0, _helpers.test)('non standard modifiers', '[href="foo" y]', function (t, tree) {
376 var attr = tree.atPosition(1, 13);
377 t.deepEqual(attr.insensitive, false);
378 t.deepEqual(attr.insensitiveFlag, '');
379 t.deepEqual(attr.raws.insensitiveFlag, 'y');
380 t.deepEqual(tree.toString(), '[href="foo" y]');
381});
382(0, _helpers.test)('comment after insensitive(non space)', '[href="foo" i/**/]', function (t, tree) {
383 // https://github.com/postcss/postcss-selector-parser/issues/150
384 var attr = tree.atPosition(1, 13);
385 t.deepEqual(attr.insensitive, true);
386 t.deepEqual(attr.insensitiveFlag, 'i');
387 t.is(attr.raws.insensitiveFlag, undefined);
388 t.deepEqual(attr.raws.spaces.insensitive.after, '/**/');
389 t.deepEqual(tree.toString(), '[href="foo" i/**/]');
390});
391(0, _helpers.test)('comment after insensitive(space after)', '[href="foo" i/**/ ]', function (t, tree) {
392 var attr = tree.atPosition(1, 13);
393 t.deepEqual(attr.insensitive, true);
394 t.deepEqual(attr.insensitiveFlag, 'i');
395 t.deepEqual(attr.raws.spaces.insensitive.after, '/**/ ');
396 t.deepEqual(tree.toString(), '[href="foo" i/**/ ]');
397});
398(0, _helpers.test)('comment after insensitive(space before)', '[href="foo" i /**/]', function (t, tree) {
399 var attr = tree.atPosition(1, 13);
400 t.deepEqual(attr.insensitive, true);
401 t.deepEqual(attr.insensitiveFlag, 'i');
402 t.deepEqual(attr.raws.spaces.insensitive.after, ' /**/');
403 t.deepEqual(tree.toString(), '[href="foo" i /**/]');
404});
405var testDeprecation = (0, _helpers.nodeVersionAtLeast)('7.0.0') || (0, _helpers.nodeVersionBefore)('6.0.0') ? _helpers.test : _helpers.test.skip;
406testDeprecation('deprecated constructor', '', function (t) {
407 t["throws"](function () {
408 return new _attribute["default"]({
409 value: '"foo"',
410 attribute: "data-bar"
411 });
412 }, {
413 message: "Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now."
414 });
415});
416testDeprecation('deprecated get of raws.unquoted ', '', function (t) {
417 t["throws"](function () {
418 var attr = new _attribute["default"]({
419 value: 'foo',
420 quoteMark: '"',
421 attribute: "data-bar"
422 });
423 return attr.raws.unquoted;
424 }, {
425 message: "attr.raws.unquoted is deprecated. Call attr.value instead."
426 });
427});
428testDeprecation('deprecated set of raws.unquoted ', '', function (t) {
429 t["throws"](function () {
430 var attr = new _attribute["default"]({
431 value: 'foo',
432 quoteMark: '"',
433 attribute: "data-bar"
434 });
435 attr.raws.unquoted = 'fooooo';
436 }, {
437 message: "Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now."
438 });
439});
440testDeprecation('smart quotes', '[data-foo=bar]', function (t, tree) {
441 var attr = tree.nodes[0].nodes[0];
442 attr.setValue('changed', {
443 quoteMark: '"'
444 });
445 t.deepEqual(attr.toString(), '[data-foo="changed"]');
446 attr.setValue('changed again', {
447 quoteMark: "'",
448 preferCurrentQuoteMark: true
449 });
450 t.deepEqual(attr.toString(), '[data-foo="changed again"]');
451 attr.setValue('smart-ident', {
452 smart: true
453 });
454 t.deepEqual(attr.toString(), '[data-foo=smart-ident]');
455 attr.setValue('smart quoted', {
456 smart: true
457 });
458 t.deepEqual(attr.toString(), '[data-foo=smart\\ quoted]');
459 attr.setValue('smart quoted three spaces', {
460 smart: true
461 });
462 t.deepEqual(attr.toString(), '[data-foo="smart quoted three spaces"]');
463 attr.setValue('smart quoted three spaces', {
464 smart: true,
465 quoteMark: "'"
466 });
467 t.deepEqual(attr.toString(), "[data-foo='smart quoted three spaces']");
468 attr.setValue("smart with 'single quotes'", {
469 smart: true
470 });
471 t.deepEqual(attr.toString(), "[data-foo=\"smart with 'single quotes'\"]");
472 attr.setValue('smart with "double quotes"', {
473 smart: true
474 });
475 t.deepEqual(attr.toString(), "[data-foo='smart with \"double quotes\"']");
476});
477testDeprecation('set Attribute#quoteMark', '[data-foo=bar]', function (t, tree) {
478 var attr = tree.nodes[0].nodes[0];
479 attr.quoteMark = '"';
480 t.deepEqual(attr.toString(), '[data-foo="bar"]');
481 attr.quoteMark = "'";
482 t.deepEqual(attr.toString(), "[data-foo='bar']");
483 attr.quoteMark = null;
484 t.deepEqual(attr.toString(), "[data-foo=bar]");
485 attr.value = "has space";
486 t.deepEqual(attr.toString(), "[data-foo=has\\ space]");
487 attr.quoteMark = '"';
488 t.deepEqual(attr.toString(), '[data-foo="has space"]');
489});
Note: See TracBrowser for help on using the repository browser.