@sprucelabs/test-utils 5.1.552 → 5.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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;
|