Skip to content

Commit dd98569

Browse files
author
Steven Orvell
committed
Merge branch 'master' into shadydom-upgrade
2 parents 3af9f34 + ddcfc63 commit dd98569

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed

lib/legacy/legacy-data-mixin.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ export const LegacyDataMixin = dedupingMixin(superClass => {
9494
// undefined or not. Multi-property observers must have all arguments defined
9595
if (this._legacyUndefinedCheck && vals.length > 1) {
9696
for (let i=0; i<vals.length; i++) {
97-
if (vals[i] === undefined) {
97+
if (vals[i] === undefined ||
98+
(args[i].wildcard && vals[i].base === undefined)) {
9899
// Break out of effect's control flow; will be caught in
99100
// wrapped property effect function below
100101
const name = args[i].name;

test/unit/legacy-data.html

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,20 +51,24 @@
5151
},
5252
computedMulti: {
5353
computed: 'computeMulti(computedMultiDep1, computedMultiDep2)'
54-
}
54+
},
55+
wildcardProp: String,
56+
wildcardObj: Object
5557
},
5658
observers: [
5759
'staticObserver("staticObserver")',
5860
'singlePropObserver(singleProp)',
5961
'multiPropObserver(multiProp1, multiProp2)',
60-
'throws(throwProp)'
62+
'throws(throwProp)',
63+
'wildcardObserver(wildcardProp, wildcardObj.*)'
6164
],
6265
created() {
6366
this.singlePropObserver = sinon.spy();
6467
this.multiPropObserver = sinon.spy();
6568
this.staticObserver = sinon.spy();
6669
this.computeSingle = sinon.spy((inlineSingleDep) => `[${inlineSingleDep}]`);
6770
this.computeMulti = sinon.spy((inlineMultiDep1, inlineMultiDep2) => `[${inlineMultiDep1},${inlineMultiDep2}]`);
71+
this.wildcardObserver = sinon.spy();
6872
},
6973
throws() {
7074
throw new Error('real error');
@@ -145,6 +149,18 @@
145149
</template>
146150
</test-fixture>
147151

152+
<test-fixture id="declarative-wildcard-one">
153+
<template>
154+
<x-data wildcard-prop='prop'></x-data>
155+
</template>
156+
</test-fixture>
157+
158+
<test-fixture id="declarative-wildcard-all">
159+
<template>
160+
<x-data wildcard-prop="prop" wildcard-obj='{"prop": "wildcardObj"}'></x-data>
161+
</template>
162+
</test-fixture>
163+
148164
<script type="module">
149165
import {flush} from '../../lib/utils/flush.js';
150166

@@ -192,6 +208,8 @@
192208
const inlineMultiDep2 = 'inlineMultiDep2';
193209
const inlineMultiIfDep1 = 'inlineMultiIfDep1';
194210
const inlineMultiIfDep2 = 'inlineMultiIfDep2';
211+
const wildcardProp = 'wildcardProp';
212+
const wildcardObj = {prop: 'wildcardObj'};
195213

196214
suite('check disabled', () => {
197215
test('no arguments defined', () => {
@@ -270,6 +288,14 @@
270288
assertEffects({computeMulti: 1});
271289
assert.equal(el.$$('#ifChild').computedMulti, '[inlineMultiIfDep1,inlineMultiIfDep2]');
272290
});
291+
test('one wildcard argument defined', () => {
292+
setupElement(false, {wildcardProp});
293+
assertEffects({wildcardObserver: 1});
294+
});
295+
test('all wildcard arguments defined', () => {
296+
setupElement(false, {wildcardProp, wildcardObj});
297+
assertEffects({wildcardObserver: 1});
298+
});
273299
});
274300

275301
suite('warn', () => {
@@ -349,6 +375,14 @@
349375
assertEffects({computeMulti: 1});
350376
assert.equal(el.$$('#ifChild').computedMulti, '[inlineMultiIfDep1,inlineMultiIfDep2]');
351377
});
378+
test('one wildcard argument defined', () => {
379+
setupElement(true, {wildcardProp});
380+
assertEffects({warn: 1});
381+
});
382+
test('all wildcard arguments defined', () => {
383+
setupElement(true, {wildcardProp, wildcardObj});
384+
assertEffects({wildcardObserver: 1});
385+
});
352386
});
353387
});
354388

@@ -416,6 +450,16 @@
416450
assertEffects({computeMulti: 1});
417451
assert.equal(el.$$('#ifChild').computedMulti, '[b,c]');
418452
});
453+
test('one wildcard argument defined', () => {
454+
el = fixture('declarative-wildcard-one');
455+
flush();
456+
assertEffects({warn: 1});
457+
});
458+
test('all wildcard arguments defined', () => {
459+
el = fixture('declarative-wildcard-all');
460+
flush();
461+
assertEffects({wildcardObserver: 1});
462+
});
419463
});
420464
});
421465

0 commit comments

Comments
 (0)