11const { expect } = require ( 'chai' ) ;
2+ const { has } = require ( 'min-dash' ) ;
23
34
45function isDefined ( value ) {
@@ -21,30 +22,72 @@ function findVariable(variables, expectedVariable) {
2122}
2223
2324function 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