ejv 2.1.0 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/.mocharc.json +8 -8
  2. package/CHANGELOG.md +134 -127
  3. package/README-KR.md +597 -597
  4. package/README.md +603 -603
  5. package/build/cjs/constants.js +124 -0
  6. package/build/cjs/constants.js.map +1 -0
  7. package/build/cjs/ejv.js +1341 -0
  8. package/build/cjs/ejv.js.map +1 -0
  9. package/build/cjs/index.js +14 -0
  10. package/build/cjs/index.js.map +1 -0
  11. package/build/cjs/interfaces.js +29 -0
  12. package/build/cjs/interfaces.js.map +1 -0
  13. package/build/cjs/package.json +1 -0
  14. package/build/cjs/tester.js +288 -0
  15. package/build/cjs/tester.js.map +1 -0
  16. package/build/cjs/util.js +103 -0
  17. package/build/cjs/util.js.map +1 -0
  18. package/build/constants.d.ts +107 -0
  19. package/build/ejv.d.ts +2 -0
  20. package/build/esm/constants.js +121 -0
  21. package/build/esm/constants.js.map +1 -0
  22. package/build/esm/ejv.js +1339 -0
  23. package/build/esm/ejv.js.map +1 -0
  24. package/build/esm/index.js +4 -0
  25. package/build/esm/index.js.map +1 -0
  26. package/build/esm/interfaces.js +33 -0
  27. package/build/esm/interfaces.js.map +1 -0
  28. package/build/esm/package.json +1 -0
  29. package/build/esm/tester.js +252 -0
  30. package/build/esm/tester.js.map +1 -0
  31. package/build/esm/util.js +96 -0
  32. package/build/esm/util.js.map +1 -0
  33. package/build/index.d.ts +3 -0
  34. package/build/interfaces.d.ts +77 -0
  35. package/build/scripts/add-js-extensions.js +46 -0
  36. package/build/scripts/add-js-extensions.js.map +1 -0
  37. package/build/tester.d.ts +35 -0
  38. package/build/util.d.ts +7 -0
  39. package/eslint.config.mjs +66 -59
  40. package/package.json +54 -55
  41. package/scripts/add-js-extensions.ts +59 -59
  42. package/spec/ArrayScheme.ts +1021 -1021
  43. package/spec/CommonScheme.ts +251 -251
  44. package/spec/DateScheme.ts +472 -472
  45. package/spec/NumberScheme.ts +1160 -1160
  46. package/spec/ObjectScheme.ts +499 -499
  47. package/spec/RegExpScheme.ts +112 -112
  48. package/spec/StringScheme.ts +1407 -1336
  49. package/spec/common-test-util.ts +63 -63
  50. package/spec/ejv.spec.ts +235 -235
  51. package/spec/testers.spec.ts +833 -833
  52. package/src/constants.ts +164 -162
  53. package/src/ejv.ts +1751 -1746
  54. package/src/index.ts +14 -14
  55. package/src/interfaces.ts +144 -144
  56. package/src/tester.ts +323 -312
  57. package/src/util.ts +124 -124
  58. package/tsconfig.cjs.json +8 -8
  59. package/tsconfig.esm.json +7 -7
  60. package/tsconfig.json +19 -18
  61. package/tsconfig.scripts.json +14 -14
  62. package/tsconfig.types.json +9 -9
@@ -1,63 +1,63 @@
1
- // to test common type easily
2
-
3
- import { expect } from 'chai';
4
-
5
- import { EjvError, Scheme } from '../src/interfaces';
6
- import { ejv } from '../src/ejv';
7
- import { ERROR_TYPE } from '../src/constants';
8
-
9
- export const commonTestRunner = (
10
- testFnc: (args: unknown) => unknown,
11
- nullResult: boolean,
12
- undefinedResult: boolean,
13
- booleanResult: boolean,
14
- numberResult: boolean,
15
- stringResult: boolean,
16
- arrayResult: boolean,
17
- objectResult: boolean
18
- ): boolean => {
19
- return testFnc(null) === nullResult
20
- && testFnc(undefined) === undefinedResult
21
- && testFnc(true) === booleanResult
22
- && testFnc(8) === numberResult
23
- && testFnc('hello') === stringResult
24
- && testFnc([1, 2, 3]) === arrayResult
25
- && testFnc({ a: 1 }) === objectResult;
26
- };
27
-
28
- export interface TypeTester {
29
- type: string;
30
- value: unknown;
31
- }
32
-
33
- export const typeTesterArr: TypeTester[] = [
34
- { type: 'boolean', value: true },
35
- { type: 'number', value: 123 },
36
- { type: 'string', value: 'ejv' },
37
- { type: 'object', value: {} },
38
- { type: 'date', value: new Date },
39
- { type: 'regexp', value: new RegExp('ejv') },
40
- { type: 'array', value: [1, 2, 3] }
41
- ];
42
-
43
-
44
- export const checkSchemeError = (param: {
45
- data: object,
46
- errorScheme: Scheme,
47
- message: string,
48
- }): void => {
49
- const ejvError: EjvError | null = ejv(param.data, [param.errorScheme]);
50
-
51
- expect(ejvError).to.be.instanceOf(EjvError);
52
- expect(ejvError).to.have.property('type', ERROR_TYPE.INVALID_SCHEMES);
53
- expect(ejvError).to.have.property('message', param.message);
54
-
55
- expect(ejvError).to.have.property('data', param.data);
56
- expect(ejvError).to.have.property('path', undefined);
57
-
58
- expect(ejvError).to.have.property('errorScheme', param.errorScheme);
59
- expect(ejvError).to.have.property('errorData', undefined);
60
-
61
- expect(ejvError).to.have.property('isSchemeError', true);
62
- expect(ejvError).to.have.property('isDataError', false);
63
- };
1
+ // to test common type easily
2
+
3
+ import { expect } from 'chai';
4
+
5
+ import { EjvError, Scheme } from '../src/interfaces';
6
+ import { ejv } from '../src/ejv';
7
+ import { ERROR_TYPE } from '../src/constants';
8
+
9
+ export const commonTestRunner = (
10
+ testFnc: (args: unknown) => unknown,
11
+ nullResult: boolean,
12
+ undefinedResult: boolean,
13
+ booleanResult: boolean,
14
+ numberResult: boolean,
15
+ stringResult: boolean,
16
+ arrayResult: boolean,
17
+ objectResult: boolean
18
+ ): boolean => {
19
+ return testFnc(null) === nullResult
20
+ && testFnc(undefined) === undefinedResult
21
+ && testFnc(true) === booleanResult
22
+ && testFnc(8) === numberResult
23
+ && testFnc('hello') === stringResult
24
+ && testFnc([1, 2, 3]) === arrayResult
25
+ && testFnc({ a: 1 }) === objectResult;
26
+ };
27
+
28
+ export interface TypeTester {
29
+ type: string;
30
+ value: unknown;
31
+ }
32
+
33
+ export const typeTesterArr: TypeTester[] = [
34
+ { type: 'boolean', value: true },
35
+ { type: 'number', value: 123 },
36
+ { type: 'string', value: 'ejv' },
37
+ { type: 'object', value: {} },
38
+ { type: 'date', value: new Date },
39
+ { type: 'regexp', value: new RegExp('ejv') },
40
+ { type: 'array', value: [1, 2, 3] }
41
+ ];
42
+
43
+
44
+ export const checkSchemeError = (param: {
45
+ data: object,
46
+ errorScheme: Scheme,
47
+ message: string,
48
+ }): void => {
49
+ const ejvError: EjvError | null = ejv(param.data, [param.errorScheme]);
50
+
51
+ expect(ejvError).to.be.instanceOf(EjvError);
52
+ expect(ejvError).to.have.property('type', ERROR_TYPE.INVALID_SCHEMES);
53
+ expect(ejvError).to.have.property('message', param.message);
54
+
55
+ expect(ejvError).to.have.property('data', param.data);
56
+ expect(ejvError).to.have.property('path', undefined);
57
+
58
+ expect(ejvError).to.have.property('errorScheme', param.errorScheme);
59
+ expect(ejvError).to.have.property('errorData', undefined);
60
+
61
+ expect(ejvError).to.have.property('isSchemeError', true);
62
+ expect(ejvError).to.have.property('isDataError', false);
63
+ };
package/spec/ejv.spec.ts CHANGED
@@ -1,235 +1,235 @@
1
- import { describe, it } from 'mocha';
2
- import { expect } from 'chai';
3
-
4
- import { ejv } from '../src/ejv';
5
- import { ERROR_MESSAGE, ERROR_TYPE } from '../src/constants';
6
- import { AnyObject, EjvError, Scheme } from '../src/interfaces';
7
- import { createErrorMsg } from '../src/util';
8
- import { checkSchemeError } from './common-test-util';
9
-
10
-
11
- describe('ejv()', () => {
12
- describe('ejv() itself', () => {
13
- describe('data', () => {
14
- it('no data', () => {
15
- const error: EjvError | null = ejv(
16
- undefined as unknown as AnyObject,
17
- undefined as unknown as Scheme[]
18
- );
19
-
20
- expect(error).to.be.instanceof(EjvError);
21
- expect(error).to.have.property('type', ERROR_TYPE.NO_DATA);
22
- expect(error).to.have.property('message', ERROR_MESSAGE.NO_DATA);
23
-
24
- expect(error).to.have.property('data', undefined);
25
- expect(error).to.have.property('path', undefined);
26
-
27
- expect(error).to.have.property('errorScheme', undefined);
28
- expect(error).to.have.property('errorData', undefined);
29
-
30
- expect(error).to.have.property('isSchemeError', false);
31
- expect(error).to.have.property('isDataError', true);
32
- });
33
-
34
- it('null data', () => {
35
- const error: EjvError | null = ejv(
36
- null as unknown as AnyObject,
37
- undefined as unknown as Scheme[]
38
- );
39
-
40
- expect(error).to.be.instanceof(EjvError);
41
- expect(error).to.have.property('type', ERROR_TYPE.NO_DATA);
42
- expect(error).to.have.property('message', ERROR_MESSAGE.NO_DATA);
43
-
44
- expect(error).to.have.property('data', null);
45
- expect(error).to.have.property('path', undefined);
46
-
47
- expect(error).to.have.property('errorScheme', undefined);
48
- expect(error).to.have.property('errorData', null);
49
-
50
- expect(error).to.have.property('isSchemeError', false);
51
- expect(error).to.have.property('isDataError', true);
52
- });
53
- });
54
-
55
- describe('scheme', () => {
56
- const data = {
57
- a: 'hello'
58
- };
59
-
60
- // can't use checkSchemeError()
61
- it('no scheme', () => {
62
- const error: EjvError | null = ejv(data, undefined as unknown as Scheme[]);
63
-
64
- expect(error).to.be.instanceof(EjvError);
65
-
66
- expect(error).to.have.property('type', ERROR_TYPE.NO_SCHEME);
67
- expect(error).to.have.property('message', ERROR_MESSAGE.NO_SCHEME);
68
-
69
- expect(error).to.have.property('data', data);
70
- expect(error).to.have.property('path', undefined);
71
-
72
- expect(error).to.have.property('errorScheme', undefined);
73
- expect(error).to.have.property('errorData', undefined);
74
-
75
- expect(error).to.have.property('isSchemeError', true);
76
- expect(error).to.have.property('isDataError', false);
77
- });
78
-
79
- // can't use checkSchemeError()
80
- it('null scheme', () => {
81
- const error: EjvError | null = ejv(data, null as unknown as Scheme[]);
82
-
83
- expect(error).to.be.instanceof(EjvError);
84
-
85
- expect(error).to.have.property('type', ERROR_TYPE.NO_SCHEME);
86
- expect(error).to.have.property('message', ERROR_MESSAGE.NO_SCHEME);
87
-
88
- expect(error).to.have.property('data', data);
89
- expect(error).to.have.property('path', undefined);
90
-
91
- expect(error).to.have.property('errorScheme', null);
92
- expect(error).to.have.property('errorData', undefined);
93
-
94
- expect(error).to.have.property('isSchemeError', true);
95
- expect(error).to.have.property('isDataError', false);
96
- });
97
-
98
- // can't use checkSchemeError()
99
- it('empty scheme array', () => {
100
- const errorScheme: Scheme[] = [];
101
-
102
- const error: EjvError | null = ejv(data, errorScheme);
103
-
104
- expect(error).to.be.instanceof(EjvError);
105
-
106
- expect(error).to.have.property('type', ERROR_TYPE.INVALID_SCHEMES);
107
- expect(error).to.have.property('message', ERROR_MESSAGE.EMPTY_SCHEME);
108
-
109
- expect(error).to.have.property('data', data);
110
- expect(error).to.have.property('path', undefined);
111
-
112
- expect(error).to.have.property('errorScheme', errorScheme);
113
- expect(error).to.have.property('errorData', undefined);
114
-
115
- expect(error).to.have.property('isSchemeError', true);
116
- expect(error).to.have.property('isDataError', false);
117
- });
118
-
119
- // can't use checkSchemeError()
120
- it('invalid scheme object', () => {
121
- const errorScheme: Scheme[] = ['string'];
122
-
123
- const error: EjvError | null = ejv(data, errorScheme);
124
-
125
- expect(error).to.be.instanceof(EjvError);
126
-
127
- expect(error).to.have.property('type', ERROR_TYPE.INVALID_SCHEMES);
128
- expect(error).to.have.property('message', ERROR_MESSAGE.NO_OBJECT_ARRAY_SCHEME);
129
-
130
- expect(error).to.have.property('data', data);
131
- expect(error).to.have.property('path', undefined);
132
-
133
- expect(error).to.have.property('errorScheme', errorScheme);
134
- expect(error).to.have.property('errorData', undefined);
135
-
136
- expect(error).to.have.property('isSchemeError', true);
137
- expect(error).to.have.property('isDataError', false);
138
- });
139
-
140
- it('no type', () => {
141
- const errorScheme: Scheme = {
142
- key: 'a'
143
- } as unknown as Scheme;
144
-
145
- checkSchemeError({
146
- data,
147
- errorScheme,
148
- message: ERROR_MESSAGE.SCHEMES_SHOULD_HAVE_TYPE
149
- });
150
- });
151
-
152
- it('invalid type', () => {
153
- const errorScheme: Scheme = {
154
- key: 'a',
155
- type: 'invalidType'
156
- };
157
-
158
- checkSchemeError({
159
- data,
160
- errorScheme,
161
- message: createErrorMsg(ERROR_MESSAGE.SCHEMES_HAS_INVALID_TYPE, {
162
- placeholders: ['invalidType']
163
- })
164
- });
165
- });
166
-
167
- it('duplicated type', () => {
168
- const errorScheme: Scheme = {
169
- key: 'a',
170
- type: ['string', 'string']
171
- };
172
-
173
- checkSchemeError({
174
- data,
175
- errorScheme,
176
- message: createErrorMsg(ERROR_MESSAGE.SCHEMES_HAS_DUPLICATED_TYPE, {
177
- placeholders: ['string']
178
- })
179
- });
180
- });
181
- });
182
-
183
- describe('options', () => {
184
- describe('customErrorMsg', () => {
185
- it('override required error', () => {
186
- const customErrorMsg = 'property \'a\' required';
187
-
188
- const error: EjvError | null = ejv({
189
- // empty
190
- }, [{
191
- key: 'a',
192
- type: 'number'
193
- }], {
194
- customErrorMsg: {
195
- [ERROR_TYPE.REQUIRED]: customErrorMsg
196
- }
197
- });
198
-
199
- expect(error).to.be.instanceof(EjvError);
200
-
201
- if (!error) {
202
- throw new Error('spec failed');
203
- }
204
-
205
- expect(error.type).to.be.eql(ERROR_TYPE.REQUIRED);
206
- expect(error.message).to.be.eql(customErrorMsg);
207
- });
208
-
209
- it('override type matching error', () => {
210
- const customErrorMsg = 'property \'a\' should be a number';
211
-
212
- const error: EjvError | null = ejv({
213
- a: 'a'
214
- }, [{
215
- key: 'a',
216
- type: 'number'
217
- }], {
218
- customErrorMsg: {
219
- [ERROR_TYPE.TYPE_MISMATCH]: customErrorMsg
220
- }
221
- });
222
-
223
- expect(error).to.be.instanceof(EjvError);
224
-
225
- if (!error) {
226
- throw new Error('spec failed');
227
- }
228
-
229
- expect(error.type).to.be.eql(ERROR_TYPE.TYPE_MISMATCH);
230
- expect(error.message).to.be.eql(customErrorMsg);
231
- });
232
- });
233
- });
234
- });
235
- });
1
+ import { describe, it } from 'mocha';
2
+ import { expect } from 'chai';
3
+
4
+ import { ejv } from '../src/ejv';
5
+ import { ERROR_MESSAGE, ERROR_TYPE } from '../src/constants';
6
+ import { AnyObject, EjvError, Scheme } from '../src/interfaces';
7
+ import { createErrorMsg } from '../src/util';
8
+ import { checkSchemeError } from './common-test-util';
9
+
10
+
11
+ describe('ejv()', () => {
12
+ describe('ejv() itself', () => {
13
+ describe('data', () => {
14
+ it('no data', () => {
15
+ const error: EjvError | null = ejv(
16
+ undefined as unknown as AnyObject,
17
+ undefined as unknown as Scheme[]
18
+ );
19
+
20
+ expect(error).to.be.instanceof(EjvError);
21
+ expect(error).to.have.property('type', ERROR_TYPE.NO_DATA);
22
+ expect(error).to.have.property('message', ERROR_MESSAGE.NO_DATA);
23
+
24
+ expect(error).to.have.property('data', undefined);
25
+ expect(error).to.have.property('path', undefined);
26
+
27
+ expect(error).to.have.property('errorScheme', undefined);
28
+ expect(error).to.have.property('errorData', undefined);
29
+
30
+ expect(error).to.have.property('isSchemeError', false);
31
+ expect(error).to.have.property('isDataError', true);
32
+ });
33
+
34
+ it('null data', () => {
35
+ const error: EjvError | null = ejv(
36
+ null as unknown as AnyObject,
37
+ undefined as unknown as Scheme[]
38
+ );
39
+
40
+ expect(error).to.be.instanceof(EjvError);
41
+ expect(error).to.have.property('type', ERROR_TYPE.NO_DATA);
42
+ expect(error).to.have.property('message', ERROR_MESSAGE.NO_DATA);
43
+
44
+ expect(error).to.have.property('data', null);
45
+ expect(error).to.have.property('path', undefined);
46
+
47
+ expect(error).to.have.property('errorScheme', undefined);
48
+ expect(error).to.have.property('errorData', null);
49
+
50
+ expect(error).to.have.property('isSchemeError', false);
51
+ expect(error).to.have.property('isDataError', true);
52
+ });
53
+ });
54
+
55
+ describe('scheme', () => {
56
+ const data = {
57
+ a: 'hello'
58
+ };
59
+
60
+ // can't use checkSchemeError()
61
+ it('no scheme', () => {
62
+ const error: EjvError | null = ejv(data, undefined as unknown as Scheme[]);
63
+
64
+ expect(error).to.be.instanceof(EjvError);
65
+
66
+ expect(error).to.have.property('type', ERROR_TYPE.NO_SCHEME);
67
+ expect(error).to.have.property('message', ERROR_MESSAGE.NO_SCHEME);
68
+
69
+ expect(error).to.have.property('data', data);
70
+ expect(error).to.have.property('path', undefined);
71
+
72
+ expect(error).to.have.property('errorScheme', undefined);
73
+ expect(error).to.have.property('errorData', undefined);
74
+
75
+ expect(error).to.have.property('isSchemeError', true);
76
+ expect(error).to.have.property('isDataError', false);
77
+ });
78
+
79
+ // can't use checkSchemeError()
80
+ it('null scheme', () => {
81
+ const error: EjvError | null = ejv(data, null as unknown as Scheme[]);
82
+
83
+ expect(error).to.be.instanceof(EjvError);
84
+
85
+ expect(error).to.have.property('type', ERROR_TYPE.NO_SCHEME);
86
+ expect(error).to.have.property('message', ERROR_MESSAGE.NO_SCHEME);
87
+
88
+ expect(error).to.have.property('data', data);
89
+ expect(error).to.have.property('path', undefined);
90
+
91
+ expect(error).to.have.property('errorScheme', null);
92
+ expect(error).to.have.property('errorData', undefined);
93
+
94
+ expect(error).to.have.property('isSchemeError', true);
95
+ expect(error).to.have.property('isDataError', false);
96
+ });
97
+
98
+ // can't use checkSchemeError()
99
+ it('empty scheme array', () => {
100
+ const errorScheme: Scheme[] = [];
101
+
102
+ const error: EjvError | null = ejv(data, errorScheme);
103
+
104
+ expect(error).to.be.instanceof(EjvError);
105
+
106
+ expect(error).to.have.property('type', ERROR_TYPE.INVALID_SCHEMES);
107
+ expect(error).to.have.property('message', ERROR_MESSAGE.EMPTY_SCHEME);
108
+
109
+ expect(error).to.have.property('data', data);
110
+ expect(error).to.have.property('path', undefined);
111
+
112
+ expect(error).to.have.property('errorScheme', errorScheme);
113
+ expect(error).to.have.property('errorData', undefined);
114
+
115
+ expect(error).to.have.property('isSchemeError', true);
116
+ expect(error).to.have.property('isDataError', false);
117
+ });
118
+
119
+ // can't use checkSchemeError()
120
+ it('invalid scheme object', () => {
121
+ const errorScheme: Scheme[] = ['string'];
122
+
123
+ const error: EjvError | null = ejv(data, errorScheme);
124
+
125
+ expect(error).to.be.instanceof(EjvError);
126
+
127
+ expect(error).to.have.property('type', ERROR_TYPE.INVALID_SCHEMES);
128
+ expect(error).to.have.property('message', ERROR_MESSAGE.NO_OBJECT_ARRAY_SCHEME);
129
+
130
+ expect(error).to.have.property('data', data);
131
+ expect(error).to.have.property('path', undefined);
132
+
133
+ expect(error).to.have.property('errorScheme', errorScheme);
134
+ expect(error).to.have.property('errorData', undefined);
135
+
136
+ expect(error).to.have.property('isSchemeError', true);
137
+ expect(error).to.have.property('isDataError', false);
138
+ });
139
+
140
+ it('no type', () => {
141
+ const errorScheme: Scheme = {
142
+ key: 'a'
143
+ } as unknown as Scheme;
144
+
145
+ checkSchemeError({
146
+ data,
147
+ errorScheme,
148
+ message: ERROR_MESSAGE.SCHEMES_SHOULD_HAVE_TYPE
149
+ });
150
+ });
151
+
152
+ it('invalid type', () => {
153
+ const errorScheme: Scheme = {
154
+ key: 'a',
155
+ type: 'invalidType'
156
+ };
157
+
158
+ checkSchemeError({
159
+ data,
160
+ errorScheme,
161
+ message: createErrorMsg(ERROR_MESSAGE.SCHEMES_HAS_INVALID_TYPE, {
162
+ placeholders: ['invalidType']
163
+ })
164
+ });
165
+ });
166
+
167
+ it('duplicated type', () => {
168
+ const errorScheme: Scheme = {
169
+ key: 'a',
170
+ type: ['string', 'string']
171
+ };
172
+
173
+ checkSchemeError({
174
+ data,
175
+ errorScheme,
176
+ message: createErrorMsg(ERROR_MESSAGE.SCHEMES_HAS_DUPLICATED_TYPE, {
177
+ placeholders: ['string']
178
+ })
179
+ });
180
+ });
181
+ });
182
+
183
+ describe('options', () => {
184
+ describe('customErrorMsg', () => {
185
+ it('override required error', () => {
186
+ const customErrorMsg = 'property \'a\' required';
187
+
188
+ const error: EjvError | null = ejv({
189
+ // empty
190
+ }, [{
191
+ key: 'a',
192
+ type: 'number'
193
+ }], {
194
+ customErrorMsg: {
195
+ [ERROR_TYPE.REQUIRED]: customErrorMsg
196
+ }
197
+ });
198
+
199
+ expect(error).to.be.instanceof(EjvError);
200
+
201
+ if (!error) {
202
+ throw new Error('spec failed');
203
+ }
204
+
205
+ expect(error.type).to.be.eql(ERROR_TYPE.REQUIRED);
206
+ expect(error.message).to.be.eql(customErrorMsg);
207
+ });
208
+
209
+ it('override type matching error', () => {
210
+ const customErrorMsg = 'property \'a\' should be a number';
211
+
212
+ const error: EjvError | null = ejv({
213
+ a: 'a'
214
+ }, [{
215
+ key: 'a',
216
+ type: 'number'
217
+ }], {
218
+ customErrorMsg: {
219
+ [ERROR_TYPE.TYPE_MISMATCH]: customErrorMsg
220
+ }
221
+ });
222
+
223
+ expect(error).to.be.instanceof(EjvError);
224
+
225
+ if (!error) {
226
+ throw new Error('spec failed');
227
+ }
228
+
229
+ expect(error.type).to.be.eql(ERROR_TYPE.TYPE_MISMATCH);
230
+ expect(error.message).to.be.eql(customErrorMsg);
231
+ });
232
+ });
233
+ });
234
+ });
235
+ });