Skip to content

Commit 9aa8646

Browse files
committed
Test set Attribute#quoteMark
1 parent 3c52465 commit 9aa8646

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

src/__tests__/attributes.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,3 +447,17 @@ testDeprecation('smart quotes', '[data-foo=bar]', (t, tree) => {
447447
attr.setValue('smart with "double quotes"', {smart: true});
448448
t.deepEqual(attr.toString(), "[data-foo='smart with \"double quotes\"']");
449449
});
450+
451+
testDeprecation('set Attribute#quoteMark', '[data-foo=bar]', (t, tree) => {
452+
let attr = tree.nodes[0].nodes[0];
453+
attr.quoteMark = '"';
454+
t.deepEqual(attr.toString(), '[data-foo="bar"]');
455+
attr.quoteMark = "'";
456+
t.deepEqual(attr.toString(), "[data-foo='bar']");
457+
attr.quoteMark = null;
458+
t.deepEqual(attr.toString(), "[data-foo=bar]");
459+
attr.value = "has space";
460+
t.deepEqual(attr.toString(), "[data-foo=has\\ space]");
461+
attr.quoteMark = '"';
462+
t.deepEqual(attr.toString(), '[data-foo="has space"]');
463+
});

src/selectors/attribute.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,9 @@ export default class Attribute extends Namespace {
218218
_syncRawValue () {
219219
let rawValue = cssesc(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);
220220
if (rawValue === this._value) {
221-
delete this.raws.value;
221+
if (this.raws) {
222+
delete this.raws.value;
223+
}
222224
} else {
223225
this.raws.value = rawValue;
224226
}
@@ -262,12 +264,8 @@ export default class Attribute extends Namespace {
262264
return;
263265
}
264266
this._value = unescaped;
265-
this.quoteMark = quoteMark;
266-
if (unescaped === this._value) {
267-
delete this.raws.value;
268-
} else {
269-
this.raws.value = v;
270-
}
267+
this._quoteMark = quoteMark;
268+
this._syncRawValue();
271269
} else {
272270
this._value = v;
273271
}

0 commit comments

Comments
 (0)