@sprucelabs/test-utils 5.1.552 → 5.2.0
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.
- package/build/assert/assert.js +2 -2
- package/build/esm/assert/assert.js +2 -2
- package/build/esm/index.d.ts +2 -0
- package/build/esm/index.js +2 -0
- package/build/esm/utilities/spies/Spier.d.ts +6 -0
- package/build/esm/utilities/spies/Spier.js +20 -0
- package/build/esm/utilities/spies/Spy.d.ts +11 -0
- package/build/esm/utilities/spies/Spy.js +26 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +5 -1
- package/build/utilities/spies/Spier.d.ts +6 -0
- package/build/utilities/spies/Spier.js +25 -0
- package/build/utilities/spies/Spy.d.ts +11 -0
- package/build/utilities/spies/Spy.js +32 -0
- package/package.json +1 -1
package/build/assert/assert.js
CHANGED
@@ -258,7 +258,7 @@ const assert = {
|
|
258
258
|
};
|
259
259
|
exports.default = assert;
|
260
260
|
function buildErrorMessage(defaultMessage, customMessage) {
|
261
|
-
return customMessage
|
261
|
+
return ((customMessage
|
262
262
|
? `${customMessage}\n\n${defaultMessage}`
|
263
|
-
: defaultMessage;
|
263
|
+
: defaultMessage) + '\n\n');
|
264
264
|
}
|
@@ -239,7 +239,7 @@ const assert = {
|
|
239
239
|
};
|
240
240
|
export default assert;
|
241
241
|
function buildErrorMessage(defaultMessage, customMessage) {
|
242
|
-
return customMessage
|
242
|
+
return ((customMessage
|
243
243
|
? `${customMessage}\n\n${defaultMessage}`
|
244
|
-
: defaultMessage;
|
244
|
+
: defaultMessage) + '\n\n');
|
245
245
|
}
|
package/build/esm/index.d.ts
CHANGED
@@ -7,3 +7,5 @@ export * from './assert/assert';
|
|
7
7
|
export { default as test } from './decorators';
|
8
8
|
export { default as assertUtil } from './assert/assert.utility';
|
9
9
|
export { default as StackCleaner } from './StackCleaner';
|
10
|
+
export { default as Spier } from './utilities/spies/Spier';
|
11
|
+
export { default as Spy } from './utilities/spies/Spy';
|
package/build/esm/index.js
CHANGED
@@ -7,3 +7,5 @@ export * from './assert/assert.js';
|
|
7
7
|
export { default as test } from './decorators.js';
|
8
8
|
export { default as assertUtil } from './assert/assert.utility.js';
|
9
9
|
export { default as StackCleaner } from './StackCleaner.js';
|
10
|
+
export { default as Spier } from './utilities/spies/Spier.js';
|
11
|
+
export { default as Spy } from './utilities/spies/Spy.js';
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import Spy from './Spy.js';
|
2
|
+
class Spier {
|
3
|
+
static Spier() {
|
4
|
+
for (const spy of Spier.spyInstances) {
|
5
|
+
spy.reset();
|
6
|
+
}
|
7
|
+
Spier.spyInstances = [];
|
8
|
+
return new Spier();
|
9
|
+
}
|
10
|
+
spy(object, method) {
|
11
|
+
if (!object) {
|
12
|
+
throw new Error('You must pass a function to spy on');
|
13
|
+
}
|
14
|
+
const spy = new Spy(object, method);
|
15
|
+
Spier.spyInstances.push(spy);
|
16
|
+
return spy;
|
17
|
+
}
|
18
|
+
}
|
19
|
+
Spier.spyInstances = [];
|
20
|
+
export default Spier;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
export default class Spy<T extends Record<string, any>, M extends keyof T> {
|
2
|
+
private method;
|
3
|
+
private hitCount;
|
4
|
+
private originalMethod;
|
5
|
+
private object;
|
6
|
+
private lastArgs?;
|
7
|
+
constructor(object: T, method: M);
|
8
|
+
assertCalledTotalTimes(expected: number): void;
|
9
|
+
assertLastCalledWith(args: string[]): void;
|
10
|
+
reset(): void;
|
11
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import assert from '../../assert/assert.js';
|
2
|
+
export default class Spy {
|
3
|
+
constructor(object, method) {
|
4
|
+
this.hitCount = 0;
|
5
|
+
this.originalMethod = object[method].bind(object);
|
6
|
+
this.method = method;
|
7
|
+
this.object = object;
|
8
|
+
//@ts-ignore
|
9
|
+
this.object[method] = (...args) => {
|
10
|
+
this.hitCount++;
|
11
|
+
this.lastArgs = args;
|
12
|
+
return this.originalMethod(...args);
|
13
|
+
};
|
14
|
+
}
|
15
|
+
assertCalledTotalTimes(expected) {
|
16
|
+
if (this.hitCount !== expected) {
|
17
|
+
throw new Error(`${String(this.method)} was not called ${expected} time(s)! It was called ${this.hitCount} time(s).`);
|
18
|
+
}
|
19
|
+
}
|
20
|
+
assertLastCalledWith(args) {
|
21
|
+
assert.isEqualDeep(this.lastArgs, args, `${String(this.method)} was not called with the expected argument`);
|
22
|
+
}
|
23
|
+
reset() {
|
24
|
+
this.object[this.method] = this.originalMethod;
|
25
|
+
}
|
26
|
+
}
|
package/build/index.d.ts
CHANGED
@@ -7,3 +7,5 @@ export * from './assert/assert';
|
|
7
7
|
export { default as test } from './decorators';
|
8
8
|
export { default as assertUtil } from './assert/assert.utility';
|
9
9
|
export { default as StackCleaner } from './StackCleaner';
|
10
|
+
export { default as Spier } from './utilities/spies/Spier';
|
11
|
+
export { default as Spy } from './utilities/spies/Spy';
|
package/build/index.js
CHANGED
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
18
18
|
};
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
20
|
-
exports.StackCleaner = exports.assertUtil = exports.test = exports.assert = exports.default = exports.generateId = exports.errorAssertUtil = exports.errorAssert = void 0;
|
20
|
+
exports.Spy = exports.Spier = exports.StackCleaner = exports.assertUtil = exports.test = exports.assert = exports.default = exports.generateId = exports.errorAssertUtil = exports.errorAssert = void 0;
|
21
21
|
var errorAssert_1 = require("./utilities/errorAssert");
|
22
22
|
Object.defineProperty(exports, "errorAssert", { enumerable: true, get: function () { return __importDefault(errorAssert_1).default; } });
|
23
23
|
var errorAssert_utility_1 = require("./utilities/errorAssert.utility");
|
@@ -35,3 +35,7 @@ var assert_utility_1 = require("./assert/assert.utility");
|
|
35
35
|
Object.defineProperty(exports, "assertUtil", { enumerable: true, get: function () { return __importDefault(assert_utility_1).default; } });
|
36
36
|
var StackCleaner_1 = require("./StackCleaner");
|
37
37
|
Object.defineProperty(exports, "StackCleaner", { enumerable: true, get: function () { return __importDefault(StackCleaner_1).default; } });
|
38
|
+
var Spier_1 = require("./utilities/spies/Spier");
|
39
|
+
Object.defineProperty(exports, "Spier", { enumerable: true, get: function () { return __importDefault(Spier_1).default; } });
|
40
|
+
var Spy_1 = require("./utilities/spies/Spy");
|
41
|
+
Object.defineProperty(exports, "Spy", { enumerable: true, get: function () { return __importDefault(Spy_1).default; } });
|
@@ -0,0 +1,25 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const Spy_1 = __importDefault(require("./Spy"));
|
7
|
+
class Spier {
|
8
|
+
static Spier() {
|
9
|
+
for (const spy of Spier.spyInstances) {
|
10
|
+
spy.reset();
|
11
|
+
}
|
12
|
+
Spier.spyInstances = [];
|
13
|
+
return new Spier();
|
14
|
+
}
|
15
|
+
spy(object, method) {
|
16
|
+
if (!object) {
|
17
|
+
throw new Error('You must pass a function to spy on');
|
18
|
+
}
|
19
|
+
const spy = new Spy_1.default(object, method);
|
20
|
+
Spier.spyInstances.push(spy);
|
21
|
+
return spy;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
Spier.spyInstances = [];
|
25
|
+
exports.default = Spier;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
export default class Spy<T extends Record<string, any>, M extends keyof T> {
|
2
|
+
private method;
|
3
|
+
private hitCount;
|
4
|
+
private originalMethod;
|
5
|
+
private object;
|
6
|
+
private lastArgs?;
|
7
|
+
constructor(object: T, method: M);
|
8
|
+
assertCalledTotalTimes(expected: number): void;
|
9
|
+
assertLastCalledWith(args: string[]): void;
|
10
|
+
reset(): void;
|
11
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const assert_1 = __importDefault(require("../../assert/assert"));
|
7
|
+
class Spy {
|
8
|
+
constructor(object, method) {
|
9
|
+
this.hitCount = 0;
|
10
|
+
this.originalMethod = object[method].bind(object);
|
11
|
+
this.method = method;
|
12
|
+
this.object = object;
|
13
|
+
//@ts-ignore
|
14
|
+
this.object[method] = (...args) => {
|
15
|
+
this.hitCount++;
|
16
|
+
this.lastArgs = args;
|
17
|
+
return this.originalMethod(...args);
|
18
|
+
};
|
19
|
+
}
|
20
|
+
assertCalledTotalTimes(expected) {
|
21
|
+
if (this.hitCount !== expected) {
|
22
|
+
throw new Error(`${String(this.method)} was not called ${expected} time(s)! It was called ${this.hitCount} time(s).`);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
assertLastCalledWith(args) {
|
26
|
+
assert_1.default.isEqualDeep(this.lastArgs, args, `${String(this.method)} was not called with the expected argument`);
|
27
|
+
}
|
28
|
+
reset() {
|
29
|
+
this.object[this.method] = this.originalMethod;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
exports.default = Spy;
|