@sprucelabs/test-utils 5.1.382 → 5.1.383

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.
@@ -7,7 +7,7 @@ type IsAny<T> = IfAny<T, true, never>;
7
7
  type TypeEqual<T, U> = IsAny<T> extends never ? Exclude<T, U> extends never ? Exclude<U, T> extends never ? true : false : false : false;
8
8
  declare function isExactType<T, E, Pass = TypeEqual<T, E>>(_: Pass): void;
9
9
  export interface ISpruceAssert {
10
- isInstanceOf<T>(test: T, Test: new (...props: any[]) => T): void;
10
+ isInstanceOf<T>(test: T, Test: new (...props: any[]) => T, message?: string): void;
11
11
  isNumber(actual: any, message?: string): asserts actual is number;
12
12
  isType: typeof expectType;
13
13
  isExactType: typeof isExactType;
@@ -34,7 +34,7 @@ const assert = {
34
34
  isEqualDeep(actual, expected, message, shouldAppendDelta = true) {
35
35
  if (!(0, deep_equal_1.default)(actual, expected, { strict: true })) {
36
36
  let result = (0, variable_diff_1.default)(actual, expected);
37
- this.fail(`${message !== null && message !== void 0 ? message : `Deep equal failed.\n\nActual would need the following changes to match expected:`}${shouldAppendDelta ? `\n\n${result.text}` : ``}`);
37
+ this.fail(buildErrorMessage(`${`Deep equal failed.\n\nActual would need the following changes to match expected:`}${shouldAppendDelta ? `\n\n${result.text}` : ``}`, message));
38
38
  }
39
39
  },
40
40
  isNotEqualDeep(actual, expected, message) {
@@ -42,23 +42,23 @@ const assert = {
42
42
  },
43
43
  isAbove(actual, floor, message) {
44
44
  if (typeof actual !== 'number') {
45
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not a number!`);
45
+ this.fail(buildErrorMessage(`${stringify(actual)} is not a number!`, message));
46
46
  }
47
47
  if (actual <= floor) {
48
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not above ${stringify(floor)}`);
48
+ this.fail(buildErrorMessage(`${stringify(actual)} is not above ${stringify(floor)}`, message));
49
49
  }
50
50
  },
51
51
  isBelow(actual, ceiling, message) {
52
52
  if (typeof actual !== 'number') {
53
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not a number!`);
53
+ this.fail(buildErrorMessage(`${stringify(actual)} is not a number!`, message));
54
54
  }
55
55
  if (actual >= ceiling) {
56
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not below ${stringify(ceiling)}`);
56
+ this.fail(buildErrorMessage(`${stringify(actual)} is not below ${stringify(ceiling)}`, message));
57
57
  }
58
58
  },
59
59
  isUndefined(actual, message) {
60
60
  if (typeof actual !== 'undefined') {
61
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not undefined`);
61
+ this.fail(buildErrorMessage(`${stringify(actual)} is not undefined`, message));
62
62
  }
63
63
  },
64
64
  isTruthy(actual, message) {
@@ -66,17 +66,17 @@ const assert = {
66
66
  actual === null ||
67
67
  typeof actual === 'undefined' ||
68
68
  actual === 0) {
69
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not truthy`);
69
+ this.fail(buildErrorMessage(`${stringify(actual)} is not truthy`, message));
70
70
  }
71
71
  },
72
72
  isFalsy(actual, message) {
73
73
  if (actual) {
74
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not falsy`);
74
+ this.fail(buildErrorMessage(`${stringify(actual)} is not falsy`, message));
75
75
  }
76
76
  },
77
77
  isNull(actual, message) {
78
78
  if (actual !== null) {
79
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not null`);
79
+ this.fail(buildErrorMessage(`${stringify(actual)} is not null`, message));
80
80
  }
81
81
  },
82
82
  isString(actual, message) {
@@ -95,20 +95,20 @@ const assert = {
95
95
  },
96
96
  isObject(actual, message) {
97
97
  if (!(0, isObjectLike_1.default)(actual)) {
98
- throw this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not an object`);
98
+ throw this.fail(buildErrorMessage(`${stringify(actual)} is not an object`, message));
99
99
  }
100
100
  },
101
101
  isArray(actual, message) {
102
102
  if (!Array.isArray(actual)) {
103
- throw this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not an array`);
103
+ throw this.fail(buildErrorMessage(`${stringify(actual)} is not an array`, message));
104
104
  }
105
105
  },
106
106
  isLength(actual, expected, message) {
107
107
  if (!actual) {
108
- throw this.fail(message !== null && message !== void 0 ? message : `Expected array of length ${expected}, but got ${stringify(actual)}`);
108
+ throw this.fail(buildErrorMessage(`Expected array of length ${expected}, but got ${stringify(actual)}`, message));
109
109
  }
110
110
  //@ts-ignore
111
- this.isEqual(actual.length, expected, message !== null && message !== void 0 ? message : `Your array is not the expected length!`);
111
+ this.isEqual(actual.length, expected, buildErrorMessage(`Your array is not the expected length!`, message));
112
112
  },
113
113
  doesNotInclude(haystack, needle, message) {
114
114
  let doesInclude = false;
@@ -120,14 +120,11 @@ const assert = {
120
120
  doesInclude = false;
121
121
  }
122
122
  if (doesInclude) {
123
- this.fail(message !== null && message !== void 0 ? message : `${stringify(haystack)} should not include ${stringify(needle)}, but it does`);
123
+ this.fail(buildErrorMessage(`${stringify(haystack)} should not include ${stringify(needle)}, but it does`, message));
124
124
  }
125
125
  },
126
126
  doesInclude(haystack, needle, message) {
127
127
  let msg = `Could not find ${stringify(needle)} in ${stringify(haystack)}`;
128
- if (message) {
129
- msg = message + `\n\n` + msg;
130
- }
131
128
  const isNeedleString = typeof needle === 'string';
132
129
  const isNeedleRegex = needle instanceof RegExp;
133
130
  if (typeof haystack === 'string' &&
@@ -198,12 +195,12 @@ const assert = {
198
195
  }
199
196
  msg = `Could not find match ${stringify(expected)} at ${stringify(pathAfterFirstArray)} in ${stringify(actualBeforeArray)}.`;
200
197
  }
201
- this.fail(msg);
198
+ this.fail(buildErrorMessage(msg, message));
202
199
  },
203
- hasAllFunctions(obj, functionNames) {
200
+ hasAllFunctions(obj, functionNames, message) {
204
201
  functionNames.forEach((name) => {
205
202
  if (typeof obj[name] !== 'function') {
206
- this.fail(`A function named "${name}" does not exist on ${stringify(obj)}`);
203
+ this.fail(buildErrorMessage(`A function named "${name}" does not exist on ${stringify(obj)}`, message));
207
204
  }
208
205
  });
209
206
  },
@@ -215,7 +212,7 @@ const assert = {
215
212
  assert_utility_1.default.checkDoesThrowError(matcher, err, msg);
216
213
  return err;
217
214
  }
218
- this.fail(msg !== null && msg !== void 0 ? msg : 'Expected a thrown error, but never got one!');
215
+ this.fail(buildErrorMessage('Expected a thrown error, but never got one!', msg));
219
216
  },
220
217
  async doesThrowAsync(cb, matcher, msg) {
221
218
  try {
@@ -225,11 +222,11 @@ const assert = {
225
222
  assert_utility_1.default.checkDoesThrowError(matcher, err, msg);
226
223
  return err;
227
224
  }
228
- this.fail(msg !== null && msg !== void 0 ? msg : 'Expected a thrown error, but never got one!');
225
+ this.fail(buildErrorMessage('Expected a thrown error, but never got one!', msg));
229
226
  },
230
227
  fail: assert_utility_1.default.fail,
231
- isInstanceOf(actual, Class) {
232
- assert.isTrue(actual instanceof Class, `${assert_utility_1.default.stringify(actual)} is not an instance of:\n\n${Class}`);
228
+ isInstanceOf(actual, Class, message) {
229
+ assert.isTrue(actual instanceof Class, buildErrorMessage(`${assert_utility_1.default.stringify(actual)} is not an instance of:\n\n${Class}`, message));
233
230
  },
234
231
  isBetween(actual, floor, ceiling, message) {
235
232
  assert.isBelow(actual, ceiling, message);
@@ -241,7 +238,7 @@ const assert = {
241
238
  if (actual >= floor && actual <= ceiling) {
242
239
  return;
243
240
  }
244
- assert.fail(message !== null && message !== void 0 ? message : `${actual} is not between ${floor} and ${ceiling} (inclusive)`);
241
+ assert.fail(buildErrorMessage(`${actual} is not between ${floor} and ${ceiling} (inclusive)`, message));
245
242
  },
246
243
  };
247
244
  exports.default = assert;
@@ -117,8 +117,8 @@ const assertUtil = {
117
117
  }
118
118
  },
119
119
  checkDoesThrowError(matcher, err, msg) {
120
- var _a, _b;
121
- const message = (_b = (_a = err.stack) !== null && _a !== void 0 ? _a : err.message) !== null && _b !== void 0 ? _b : '**MISSING ERROR MESSAGE**';
120
+ var _a;
121
+ const message = (_a = err.message) !== null && _a !== void 0 ? _a : '';
122
122
  if (typeof matcher === 'string' &&
123
123
  message.search(matcher) === -1 &&
124
124
  !message.includes(matcher)) {
@@ -7,7 +7,7 @@ type IsAny<T> = IfAny<T, true, never>;
7
7
  type TypeEqual<T, U> = IsAny<T> extends never ? Exclude<T, U> extends never ? Exclude<U, T> extends never ? true : false : false : false;
8
8
  declare function isExactType<T, E, Pass = TypeEqual<T, E>>(_: Pass): void;
9
9
  export interface ISpruceAssert {
10
- isInstanceOf<T>(test: T, Test: new (...props: any[]) => T): void;
10
+ isInstanceOf<T>(test: T, Test: new (...props: any[]) => T, message?: string): void;
11
11
  isNumber(actual: any, message?: string): asserts actual is number;
12
12
  isType: typeof expectType;
13
13
  isExactType: typeof isExactType;
@@ -29,7 +29,7 @@ const assert = {
29
29
  isEqualDeep(actual, expected, message, shouldAppendDelta = true) {
30
30
  if (!deepEqual(actual, expected, { strict: true })) {
31
31
  let result = diff(actual, expected);
32
- this.fail(`${message !== null && message !== void 0 ? message : `Deep equal failed.\n\nActual would need the following changes to match expected:`}${shouldAppendDelta ? `\n\n${result.text}` : ``}`);
32
+ this.fail(buildErrorMessage(`${`Deep equal failed.\n\nActual would need the following changes to match expected:`}${shouldAppendDelta ? `\n\n${result.text}` : ``}`, message));
33
33
  }
34
34
  },
35
35
  isNotEqualDeep(actual, expected, message) {
@@ -37,23 +37,23 @@ const assert = {
37
37
  },
38
38
  isAbove(actual, floor, message) {
39
39
  if (typeof actual !== 'number') {
40
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not a number!`);
40
+ this.fail(buildErrorMessage(`${stringify(actual)} is not a number!`, message));
41
41
  }
42
42
  if (actual <= floor) {
43
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not above ${stringify(floor)}`);
43
+ this.fail(buildErrorMessage(`${stringify(actual)} is not above ${stringify(floor)}`, message));
44
44
  }
45
45
  },
46
46
  isBelow(actual, ceiling, message) {
47
47
  if (typeof actual !== 'number') {
48
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not a number!`);
48
+ this.fail(buildErrorMessage(`${stringify(actual)} is not a number!`, message));
49
49
  }
50
50
  if (actual >= ceiling) {
51
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not below ${stringify(ceiling)}`);
51
+ this.fail(buildErrorMessage(`${stringify(actual)} is not below ${stringify(ceiling)}`, message));
52
52
  }
53
53
  },
54
54
  isUndefined(actual, message) {
55
55
  if (typeof actual !== 'undefined') {
56
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not undefined`);
56
+ this.fail(buildErrorMessage(`${stringify(actual)} is not undefined`, message));
57
57
  }
58
58
  },
59
59
  isTruthy(actual, message) {
@@ -61,17 +61,17 @@ const assert = {
61
61
  actual === null ||
62
62
  typeof actual === 'undefined' ||
63
63
  actual === 0) {
64
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not truthy`);
64
+ this.fail(buildErrorMessage(`${stringify(actual)} is not truthy`, message));
65
65
  }
66
66
  },
67
67
  isFalsy(actual, message) {
68
68
  if (actual) {
69
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not falsy`);
69
+ this.fail(buildErrorMessage(`${stringify(actual)} is not falsy`, message));
70
70
  }
71
71
  },
72
72
  isNull(actual, message) {
73
73
  if (actual !== null) {
74
- this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not null`);
74
+ this.fail(buildErrorMessage(`${stringify(actual)} is not null`, message));
75
75
  }
76
76
  },
77
77
  isString(actual, message) {
@@ -90,20 +90,20 @@ const assert = {
90
90
  },
91
91
  isObject(actual, message) {
92
92
  if (!isObjectLike(actual)) {
93
- throw this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not an object`);
93
+ throw this.fail(buildErrorMessage(`${stringify(actual)} is not an object`, message));
94
94
  }
95
95
  },
96
96
  isArray(actual, message) {
97
97
  if (!Array.isArray(actual)) {
98
- throw this.fail(message !== null && message !== void 0 ? message : `${stringify(actual)} is not an array`);
98
+ throw this.fail(buildErrorMessage(`${stringify(actual)} is not an array`, message));
99
99
  }
100
100
  },
101
101
  isLength(actual, expected, message) {
102
102
  if (!actual) {
103
- throw this.fail(message !== null && message !== void 0 ? message : `Expected array of length ${expected}, but got ${stringify(actual)}`);
103
+ throw this.fail(buildErrorMessage(`Expected array of length ${expected}, but got ${stringify(actual)}`, message));
104
104
  }
105
105
  //@ts-ignore
106
- this.isEqual(actual.length, expected, message !== null && message !== void 0 ? message : `Your array is not the expected length!`);
106
+ this.isEqual(actual.length, expected, buildErrorMessage(`Your array is not the expected length!`, message));
107
107
  },
108
108
  doesNotInclude(haystack, needle, message) {
109
109
  let doesInclude = false;
@@ -115,14 +115,11 @@ const assert = {
115
115
  doesInclude = false;
116
116
  }
117
117
  if (doesInclude) {
118
- this.fail(message !== null && message !== void 0 ? message : `${stringify(haystack)} should not include ${stringify(needle)}, but it does`);
118
+ this.fail(buildErrorMessage(`${stringify(haystack)} should not include ${stringify(needle)}, but it does`, message));
119
119
  }
120
120
  },
121
121
  doesInclude(haystack, needle, message) {
122
122
  let msg = `Could not find ${stringify(needle)} in ${stringify(haystack)}`;
123
- if (message) {
124
- msg = message + `\n\n` + msg;
125
- }
126
123
  const isNeedleString = typeof needle === 'string';
127
124
  const isNeedleRegex = needle instanceof RegExp;
128
125
  if (typeof haystack === 'string' &&
@@ -193,12 +190,12 @@ const assert = {
193
190
  }
194
191
  msg = `Could not find match ${stringify(expected)} at ${stringify(pathAfterFirstArray)} in ${stringify(actualBeforeArray)}.`;
195
192
  }
196
- this.fail(msg);
193
+ this.fail(buildErrorMessage(msg, message));
197
194
  },
198
- hasAllFunctions(obj, functionNames) {
195
+ hasAllFunctions(obj, functionNames, message) {
199
196
  functionNames.forEach((name) => {
200
197
  if (typeof obj[name] !== 'function') {
201
- this.fail(`A function named "${name}" does not exist on ${stringify(obj)}`);
198
+ this.fail(buildErrorMessage(`A function named "${name}" does not exist on ${stringify(obj)}`, message));
202
199
  }
203
200
  });
204
201
  },
@@ -210,7 +207,7 @@ const assert = {
210
207
  assertUtil.checkDoesThrowError(matcher, err, msg);
211
208
  return err;
212
209
  }
213
- this.fail(msg !== null && msg !== void 0 ? msg : 'Expected a thrown error, but never got one!');
210
+ this.fail(buildErrorMessage('Expected a thrown error, but never got one!', msg));
214
211
  },
215
212
  async doesThrowAsync(cb, matcher, msg) {
216
213
  try {
@@ -220,11 +217,11 @@ const assert = {
220
217
  assertUtil.checkDoesThrowError(matcher, err, msg);
221
218
  return err;
222
219
  }
223
- this.fail(msg !== null && msg !== void 0 ? msg : 'Expected a thrown error, but never got one!');
220
+ this.fail(buildErrorMessage('Expected a thrown error, but never got one!', msg));
224
221
  },
225
222
  fail: assertUtil.fail,
226
- isInstanceOf(actual, Class) {
227
- assert.isTrue(actual instanceof Class, `${assertUtil.stringify(actual)} is not an instance of:\n\n${Class}`);
223
+ isInstanceOf(actual, Class, message) {
224
+ assert.isTrue(actual instanceof Class, buildErrorMessage(`${assertUtil.stringify(actual)} is not an instance of:\n\n${Class}`, message));
228
225
  },
229
226
  isBetween(actual, floor, ceiling, message) {
230
227
  assert.isBelow(actual, ceiling, message);
@@ -236,7 +233,7 @@ const assert = {
236
233
  if (actual >= floor && actual <= ceiling) {
237
234
  return;
238
235
  }
239
- assert.fail(message !== null && message !== void 0 ? message : `${actual} is not between ${floor} and ${ceiling} (inclusive)`);
236
+ assert.fail(buildErrorMessage(`${actual} is not between ${floor} and ${ceiling} (inclusive)`, message));
240
237
  },
241
238
  };
242
239
  export default assert;
@@ -111,8 +111,8 @@ const assertUtil = {
111
111
  }
112
112
  },
113
113
  checkDoesThrowError(matcher, err, msg) {
114
- var _a, _b;
115
- const message = (_b = (_a = err.stack) !== null && _a !== void 0 ? _a : err.message) !== null && _b !== void 0 ? _b : '**MISSING ERROR MESSAGE**';
114
+ var _a;
115
+ const message = (_a = err.message) !== null && _a !== void 0 ? _a : '';
116
116
  if (typeof matcher === 'string' &&
117
117
  message.search(matcher) === -1 &&
118
118
  !message.includes(matcher)) {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "5.1.382",
6
+ "version": "5.1.383",
7
7
  "files": [
8
8
  "build"
9
9
  ],