Skip to content

Commit c14f11d

Browse files
committed
test: add usedBy matcher / allow scope and origin to be undefined
You may verify that scope is not defined via ```javascript expect(variables).to.variableInclude({ name: 'no-scope-var', scope: undefined }); ```
1 parent 4ca7017 commit c14f11d

File tree

1 file changed

+64
-21
lines changed

1 file changed

+64
-21
lines changed

test/assertions.js

Lines changed: 64 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const { expect } = require('chai');
2+
const { has } = require('min-dash');
23

34

45
function isDefined(value) {
@@ -21,30 +22,72 @@ function findVariable(variables, expectedVariable) {
2122
}
2223

2324
function assertVariableMatches(variable, expectedVariable) {
24-
const {
25-
name,
26-
type,
27-
detail,
28-
info,
29-
scope,
30-
isList,
31-
origin,
32-
entries
33-
} = expectedVariable;
3425

35-
isDefined(type) && expect(variable.type, `variable[name=${name}].type`).to.eql(type);
36-
isDefined(info) && expect(variable.info, `variable[name=${name}].info`).to.eql(info);
37-
isDefined(detail) && expect(variable.detail, `variable[name=${name}].detail`).to.eql(detail);
38-
isDefined(scope) && expect(variable.scope.id, `variable[name=${name}].scope.id`).to.eql(scope);
39-
isDefined(isList) && expect(!!variable.isList, `variable[name=${name}].isList`).to.eql(!!isList);
40-
isDefined(entries) && expect(variable.entries, `variable[name=${name}].entries`).to.variableEqual(entries);
26+
const { name } = variable;
4127

42-
isDefined(origin) && origin.forEach((expectedOrigin) => {
43-
const foundOrigin = variable.origin.find(o => o.id === expectedOrigin);
44-
expect(foundOrigin, `origin[name=${expectedOrigin}]`).to.exist;
45-
});
28+
if (has(expectedVariable, 'type')) {
29+
expect(variable.type, `variable[name=${name}].type`).to.eql(expectedVariable.type);
30+
}
31+
32+
if (has(expectedVariable, 'info')) {
33+
expect(variable.info, `variable[name=${name}].info`).to.eql(expectedVariable.info);
34+
}
35+
36+
if (has(expectedVariable, 'detail')) {
37+
expect(variable.detail, `variable[name=${name}].detail`).to.eql(expectedVariable.detail);
38+
}
39+
40+
if (has(expectedVariable, 'scope')) {
41+
42+
if (expectedVariable.scope) {
43+
expect(variable.scope, `variable[name=${name}].scope`).to.exist;
44+
expect(variable.scope.id, `variable[name=${name}].scope.id`).to.eql(expectedVariable.scope);
45+
} else {
46+
expect(variable.scope, `variable[name=${name}].scope`).not.to.exist;
47+
}
48+
}
49+
50+
if (has(expectedVariable, 'isList')) {
51+
expect(!!variable.isList, `variable[name=${name}].isList`).to.eql(!!expectedVariable.isList);
52+
}
4653

47-
isDefined(origin) && expect(variable.origin.length, `variable[name=${name}].origin.length`).to.eql(origin.length);
54+
if (has(expectedVariable, 'entries')) {
55+
expect(variable.entries, `variable[name=${name}].entries`).to.variableEqual(expectedVariable.entries);
56+
}
57+
58+
if (has(expectedVariable, 'origin')) {
59+
60+
if (expectedVariable.origin) {
61+
expect(variable.origin, `variable[name=${name}].origin`).to.exist;
62+
63+
expectedVariable.origin.forEach((expectedId) => {
64+
const foundOrigin = variable.origin.find(e => e.id === expectedId);
65+
66+
expect(foundOrigin, `variable[name=${name}] > origin[id=${expectedId}]`).to.exist;
67+
});
68+
69+
expect(variable.origin.length, `variable[name=${name}].origin.length`).to.eql(expectedVariable.origin.length);
70+
} else {
71+
expect(variable.origin, `variable[name=${name}].origin`).not.to.exist;
72+
}
73+
}
74+
75+
if (has(expectedVariable, 'usedBy')) {
76+
77+
if (expectedVariable.usedBy) {
78+
expect(variable.usedBy, `variable[name=${name}].usedBy`).to.exist;
79+
80+
expectedVariable.usedBy.forEach((expectedId) => {
81+
const foundUsedBy = variable.usedBy.find(e => e.id === expectedId);
82+
83+
expect(foundUsedBy, `variable[name=${name}] > usedBy[id=${expectedId}]`).to.exist;
84+
});
85+
86+
expect(variable.usedBy.length, `variable[name=${name}].usedBy.length`).to.eql(expectedVariable.usedBy.length);
87+
} else {
88+
expect(variable.usedBy, `variable[name=${name}].usedBy`).not.to.exist;
89+
}
90+
}
4891
}
4992

5093
/**

0 commit comments

Comments
 (0)