@nexustools/nwjstestrunner 0.0.0-stage → 1.0.0-beta.1
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/AGENTS.md +21 -0
- package/README.md +142 -2
- package/bin/nwjstestrunner.js +13 -0
- package/dist/cli/nwjs-cli-launcher.d.ts +10 -0
- package/dist/cli/nwjs-cli-launcher.d.ts.map +1 -0
- package/dist/cli/nwjs-cli-launcher.js +281 -0
- package/dist/cli/nwjs-cli-launcher.js.map +1 -0
- package/dist/config/harness-config-loader.d.ts +10 -0
- package/dist/config/harness-config-loader.d.ts.map +1 -0
- package/dist/config/harness-config-loader.js +242 -0
- package/dist/config/harness-config-loader.js.map +1 -0
- package/dist/core/test-runner.d.ts +61 -0
- package/dist/core/test-runner.d.ts.map +1 -0
- package/dist/core/test-runner.js +450 -0
- package/dist/core/test-runner.js.map +1 -0
- package/dist/esm/index.d.mts +2 -0
- package/dist/esm/index.mjs +26 -0
- package/dist/harness/graphical-overlay-view.d.ts +18 -0
- package/dist/harness/graphical-overlay-view.d.ts.map +1 -0
- package/dist/harness/graphical-overlay-view.js +213 -0
- package/dist/harness/graphical-overlay-view.js.map +1 -0
- package/dist/harness/nwjs-graphical-test-harness.d.ts +40 -0
- package/dist/harness/nwjs-graphical-test-harness.d.ts.map +1 -0
- package/dist/harness/nwjs-graphical-test-harness.js +398 -0
- package/dist/harness/nwjs-graphical-test-harness.js.map +1 -0
- package/dist/harness/test-http-server.d.ts +12 -0
- package/dist/harness/test-http-server.d.ts.map +1 -0
- package/dist/harness/test-http-server.js +183 -0
- package/dist/harness/test-http-server.js.map +1 -0
- package/dist/harness/test-log-writer.d.ts +29 -0
- package/dist/harness/test-log-writer.d.ts.map +1 -0
- package/dist/harness/test-log-writer.js +173 -0
- package/dist/harness/test-log-writer.js.map +1 -0
- package/dist/harness/webview-test-controller.d.ts +18 -0
- package/dist/harness/webview-test-controller.d.ts.map +1 -0
- package/dist/harness/webview-test-controller.js +163 -0
- package/dist/harness/webview-test-controller.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/matchers/deep-equality-helper.d.ts +10 -0
- package/dist/matchers/deep-equality-helper.d.ts.map +1 -0
- package/dist/matchers/deep-equality-helper.js +188 -0
- package/dist/matchers/deep-equality-helper.js.map +1 -0
- package/dist/matchers/expect-matcher.d.ts +7 -0
- package/dist/matchers/expect-matcher.d.ts.map +1 -0
- package/dist/matchers/expect-matcher.js +261 -0
- package/dist/matchers/expect-matcher.js.map +1 -0
- package/dist/mock/jest-mock-factory.d.ts +20 -0
- package/dist/mock/jest-mock-factory.d.ts.map +1 -0
- package/dist/mock/jest-mock-factory.js +141 -0
- package/dist/mock/jest-mock-factory.js.map +1 -0
- package/dist/tests/NwjsTestRunnerSuites.d.ts +3 -0
- package/dist/tests/NwjsTestRunnerSuites.d.ts.map +1 -0
- package/dist/tests/NwjsTestRunnerSuites.js +266 -0
- package/dist/tests/NwjsTestRunnerSuites.js.map +1 -0
- package/dist/types/test-runner-types.d.ts +321 -0
- package/dist/types/test-runner-types.d.ts.map +1 -0
- package/dist/types/test-runner-types.js +3 -0
- package/dist/types/test-runner-types.js.map +1 -0
- package/package.json +56 -4
- package/runner/demo-client.html +70 -0
- package/runner/index.html +223 -0
- package/runner/package.json +27 -0
- package/src/cli/nwjs-cli-launcher.ts +243 -0
- package/src/config/harness-config-loader.ts +214 -0
- package/src/core/test-runner.ts +553 -0
- package/src/harness/graphical-overlay-view.ts +219 -0
- package/src/harness/nwjs-graphical-test-harness.ts +468 -0
- package/src/harness/test-http-server.ts +162 -0
- package/src/harness/test-log-writer.ts +154 -0
- package/src/harness/webview-test-controller.ts +192 -0
- package/src/index.ts +28 -0
- package/src/matchers/deep-equality-helper.ts +193 -0
- package/src/matchers/expect-matcher.ts +361 -0
- package/src/mock/jest-mock-factory.ts +170 -0
- package/src/tests/NwjsTestRunnerSuites.ts +267 -0
- package/src/types/test-runner-types.ts +335 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from './types/test-runner-types';
|
|
2
|
+
export { DeepEqualityHelper } from './matchers/deep-equality-helper';
|
|
3
|
+
export { ExpectMatcherBuilder, expect } from './matchers/expect-matcher';
|
|
4
|
+
export { JestMockFactory, jest } from './mock/jest-mock-factory';
|
|
5
|
+
export { SuiteBuilderScope, TestRunner, DescribeFunction, ItFunction, describe, it, test, beforeAll, afterAll, beforeEach, afterEach, installJestGlobals } from './core/test-runner';
|
|
6
|
+
export { TestLogWriter } from './harness/test-log-writer';
|
|
7
|
+
export { TestHttpServer } from './harness/test-http-server';
|
|
8
|
+
export { GraphicalOverlayView } from './harness/graphical-overlay-view';
|
|
9
|
+
export { WebviewTestController } from './harness/webview-test-controller';
|
|
10
|
+
export { NwjsGraphicalTestHarness, runNwjsTestHarness } from './harness/nwjs-graphical-test-harness';
|
|
11
|
+
export { HarnessConfigLoader } from './config/harness-config-loader';
|
|
12
|
+
export { NwjsCliLauncher } from './cli/nwjs-cli-launcher';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,EAAE,EACF,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,SAAS,EACT,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.NwjsCliLauncher = exports.HarnessConfigLoader = exports.runNwjsTestHarness = exports.NwjsGraphicalTestHarness = exports.WebviewTestController = exports.GraphicalOverlayView = exports.TestHttpServer = exports.TestLogWriter = exports.installJestGlobals = exports.afterEach = exports.beforeEach = exports.afterAll = exports.beforeAll = exports.test = exports.it = exports.describe = exports.TestRunner = exports.jest = exports.JestMockFactory = exports.expect = exports.ExpectMatcherBuilder = exports.DeepEqualityHelper = void 0;
|
|
18
|
+
__exportStar(require("./types/test-runner-types"), exports);
|
|
19
|
+
var deep_equality_helper_1 = require("./matchers/deep-equality-helper");
|
|
20
|
+
Object.defineProperty(exports, "DeepEqualityHelper", { enumerable: true, get: function () { return deep_equality_helper_1.DeepEqualityHelper; } });
|
|
21
|
+
var expect_matcher_1 = require("./matchers/expect-matcher");
|
|
22
|
+
Object.defineProperty(exports, "ExpectMatcherBuilder", { enumerable: true, get: function () { return expect_matcher_1.ExpectMatcherBuilder; } });
|
|
23
|
+
Object.defineProperty(exports, "expect", { enumerable: true, get: function () { return expect_matcher_1.expect; } });
|
|
24
|
+
var jest_mock_factory_1 = require("./mock/jest-mock-factory");
|
|
25
|
+
Object.defineProperty(exports, "JestMockFactory", { enumerable: true, get: function () { return jest_mock_factory_1.JestMockFactory; } });
|
|
26
|
+
Object.defineProperty(exports, "jest", { enumerable: true, get: function () { return jest_mock_factory_1.jest; } });
|
|
27
|
+
var test_runner_1 = require("./core/test-runner");
|
|
28
|
+
Object.defineProperty(exports, "TestRunner", { enumerable: true, get: function () { return test_runner_1.TestRunner; } });
|
|
29
|
+
Object.defineProperty(exports, "describe", { enumerable: true, get: function () { return test_runner_1.describe; } });
|
|
30
|
+
Object.defineProperty(exports, "it", { enumerable: true, get: function () { return test_runner_1.it; } });
|
|
31
|
+
Object.defineProperty(exports, "test", { enumerable: true, get: function () { return test_runner_1.test; } });
|
|
32
|
+
Object.defineProperty(exports, "beforeAll", { enumerable: true, get: function () { return test_runner_1.beforeAll; } });
|
|
33
|
+
Object.defineProperty(exports, "afterAll", { enumerable: true, get: function () { return test_runner_1.afterAll; } });
|
|
34
|
+
Object.defineProperty(exports, "beforeEach", { enumerable: true, get: function () { return test_runner_1.beforeEach; } });
|
|
35
|
+
Object.defineProperty(exports, "afterEach", { enumerable: true, get: function () { return test_runner_1.afterEach; } });
|
|
36
|
+
Object.defineProperty(exports, "installJestGlobals", { enumerable: true, get: function () { return test_runner_1.installJestGlobals; } });
|
|
37
|
+
var test_log_writer_1 = require("./harness/test-log-writer");
|
|
38
|
+
Object.defineProperty(exports, "TestLogWriter", { enumerable: true, get: function () { return test_log_writer_1.TestLogWriter; } });
|
|
39
|
+
var test_http_server_1 = require("./harness/test-http-server");
|
|
40
|
+
Object.defineProperty(exports, "TestHttpServer", { enumerable: true, get: function () { return test_http_server_1.TestHttpServer; } });
|
|
41
|
+
var graphical_overlay_view_1 = require("./harness/graphical-overlay-view");
|
|
42
|
+
Object.defineProperty(exports, "GraphicalOverlayView", { enumerable: true, get: function () { return graphical_overlay_view_1.GraphicalOverlayView; } });
|
|
43
|
+
var webview_test_controller_1 = require("./harness/webview-test-controller");
|
|
44
|
+
Object.defineProperty(exports, "WebviewTestController", { enumerable: true, get: function () { return webview_test_controller_1.WebviewTestController; } });
|
|
45
|
+
var nwjs_graphical_test_harness_1 = require("./harness/nwjs-graphical-test-harness");
|
|
46
|
+
Object.defineProperty(exports, "NwjsGraphicalTestHarness", { enumerable: true, get: function () { return nwjs_graphical_test_harness_1.NwjsGraphicalTestHarness; } });
|
|
47
|
+
Object.defineProperty(exports, "runNwjsTestHarness", { enumerable: true, get: function () { return nwjs_graphical_test_harness_1.runNwjsTestHarness; } });
|
|
48
|
+
var harness_config_loader_1 = require("./config/harness-config-loader");
|
|
49
|
+
Object.defineProperty(exports, "HarnessConfigLoader", { enumerable: true, get: function () { return harness_config_loader_1.HarnessConfigLoader; } });
|
|
50
|
+
var nwjs_cli_launcher_1 = require("./cli/nwjs-cli-launcher");
|
|
51
|
+
Object.defineProperty(exports, "NwjsCliLauncher", { enumerable: true, get: function () { return nwjs_cli_launcher_1.NwjsCliLauncher; } });
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAC3B,4DAAyE;AAAhE,sHAAA,oBAAoB,OAAA;AAAE,wGAAA,MAAM,OAAA;AACrC,8DAAiE;AAAxD,oHAAA,eAAe,OAAA;AAAE,yGAAA,IAAI,OAAA;AAC9B,kDAa4B;AAX1B,yGAAA,UAAU,OAAA;AAGV,uGAAA,QAAQ,OAAA;AACR,iGAAA,EAAE,OAAA;AACF,mGAAA,IAAI,OAAA;AACJ,wGAAA,SAAS,OAAA;AACT,uGAAA,QAAQ,OAAA;AACR,yGAAA,UAAU,OAAA;AACV,wGAAA,SAAS,OAAA;AACT,iHAAA,kBAAkB,OAAA;AAEpB,6DAA0D;AAAjD,gHAAA,aAAa,OAAA;AACtB,+DAA4D;AAAnD,kHAAA,cAAc,OAAA;AACvB,2EAAwE;AAA/D,8HAAA,oBAAoB,OAAA;AAC7B,6EAA0E;AAAjE,gIAAA,qBAAqB,OAAA;AAC9B,qFAG+C;AAF7C,uIAAA,wBAAwB,OAAA;AACxB,iIAAA,kBAAkB,OAAA;AAEpB,wEAAqE;AAA5D,4HAAA,mBAAmB,OAAA;AAC5B,6DAA0D;AAAjD,oHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class DeepEqualityHelper {
|
|
2
|
+
static deepEquals(a: any, b: any, strict?: boolean, seen?: Map<any, any>): boolean;
|
|
3
|
+
static matchesObject(actual: any, expected: any): boolean;
|
|
4
|
+
static resolvePropertyPath(target: any, keyPath: string | string[]): {
|
|
5
|
+
exists: boolean;
|
|
6
|
+
value: any;
|
|
7
|
+
};
|
|
8
|
+
static formatValue(value: any): string;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=deep-equality-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-equality-helper.d.ts","sourceRoot":"","sources":["../../src/matchers/deep-equality-helper.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;WACf,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,UAAQ,EAAE,IAAI,gBAAsB,GAAG,OAAO;WAgH/E,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO;WAyClD,mBAAmB,CAC/B,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GACzB;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE;WAsBpB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAa9C"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeepEqualityHelper = void 0;
|
|
4
|
+
class DeepEqualityHelper {
|
|
5
|
+
static deepEquals(a, b, strict = false, seen = new Map()) {
|
|
6
|
+
if (Object.is(a, b)) {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
if (a === null || b === null || a === undefined || b === undefined) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (typeof a !== typeof b) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
if (typeof a !== 'object') {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
if (seen.has(a) && seen.get(a) === b) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
seen.set(a, b);
|
|
22
|
+
if (strict && a.constructor !== b.constructor) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
if (a instanceof Date && b instanceof Date) {
|
|
26
|
+
return Object.is(a.getTime(), b.getTime());
|
|
27
|
+
}
|
|
28
|
+
if (a instanceof RegExp && b instanceof RegExp) {
|
|
29
|
+
return a.source === b.source && a.flags === b.flags;
|
|
30
|
+
}
|
|
31
|
+
if (a instanceof Error && b instanceof Error) {
|
|
32
|
+
return a.name === b.name && a.message === b.message;
|
|
33
|
+
}
|
|
34
|
+
if (Buffer.isBuffer(a) && Buffer.isBuffer(b)) {
|
|
35
|
+
return a.equals(b);
|
|
36
|
+
}
|
|
37
|
+
if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
|
|
38
|
+
if (a.byteLength !== b.byteLength)
|
|
39
|
+
return false;
|
|
40
|
+
const ua = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
|
|
41
|
+
const ub = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
|
|
42
|
+
for (let i = 0; i < ua.length; i++) {
|
|
43
|
+
if (ua[i] !== ub[i])
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
if (a instanceof Map && b instanceof Map) {
|
|
49
|
+
if (a.size !== b.size)
|
|
50
|
+
return false;
|
|
51
|
+
for (const [k, v] of a.entries()) {
|
|
52
|
+
if (!b.has(k) || !DeepEqualityHelper.deepEquals(v, b.get(k), strict, seen)) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
if (a instanceof Set && b instanceof Set) {
|
|
59
|
+
if (a.size !== b.size)
|
|
60
|
+
return false;
|
|
61
|
+
const bValues = Array.from(b.values());
|
|
62
|
+
for (const aVal of a.values()) {
|
|
63
|
+
const matchIdx = bValues.findIndex((bVal) => DeepEqualityHelper.deepEquals(aVal, bVal, strict, seen));
|
|
64
|
+
if (matchIdx === -1)
|
|
65
|
+
return false;
|
|
66
|
+
bValues.splice(matchIdx, 1);
|
|
67
|
+
}
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
if (Array.isArray(a) || Array.isArray(b)) {
|
|
71
|
+
if (!Array.isArray(a) || !Array.isArray(b))
|
|
72
|
+
return false;
|
|
73
|
+
if (a.length !== b.length)
|
|
74
|
+
return false;
|
|
75
|
+
for (let i = 0; i < a.length; i++) {
|
|
76
|
+
if (strict && (i in a) !== (i in b)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
if (!DeepEqualityHelper.deepEquals(a[i], b[i], strict, seen)) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
const keysA = strict
|
|
86
|
+
? Reflect.ownKeys(a)
|
|
87
|
+
: Object.keys(a).filter((k) => a[k] !== undefined);
|
|
88
|
+
const keysB = strict
|
|
89
|
+
? Reflect.ownKeys(b)
|
|
90
|
+
: Object.keys(b).filter((k) => b[k] !== undefined);
|
|
91
|
+
if (keysA.length !== keysB.length) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
for (const key of keysA) {
|
|
95
|
+
if (!Object.prototype.hasOwnProperty.call(b, key)) {
|
|
96
|
+
if (strict || b[key] !== undefined) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (!DeepEqualityHelper.deepEquals(a[key], b[key], strict, seen)) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
static matchesObject(actual, expected) {
|
|
107
|
+
if (Object.is(actual, expected)) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
if (actual === null || actual === undefined || typeof actual !== 'object') {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
if (expected === null || expected === undefined || typeof expected !== 'object') {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
if (Array.isArray(expected)) {
|
|
117
|
+
if (!Array.isArray(actual) || actual.length < expected.length) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
for (let i = 0; i < expected.length; i++) {
|
|
121
|
+
if (!DeepEqualityHelper.matchesObject(actual[i], expected[i])) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
for (const key of Object.keys(expected)) {
|
|
128
|
+
if (!(key in actual)) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
const expVal = expected[key];
|
|
132
|
+
const actVal = actual[key];
|
|
133
|
+
if (expVal !== null && typeof expVal === 'object' && !(expVal instanceof RegExp) && !(expVal instanceof Date)) {
|
|
134
|
+
if (!DeepEqualityHelper.matchesObject(actVal, expVal)) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else if (!DeepEqualityHelper.deepEquals(actVal, expVal)) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
static resolvePropertyPath(target, keyPath) {
|
|
145
|
+
if (target === null || target === undefined) {
|
|
146
|
+
return { exists: false, value: undefined };
|
|
147
|
+
}
|
|
148
|
+
const segments = Array.isArray(keyPath) ? keyPath : keyPath.split('.');
|
|
149
|
+
let current = target;
|
|
150
|
+
for (const seg of segments) {
|
|
151
|
+
if (current === null || current === undefined) {
|
|
152
|
+
return { exists: false, value: undefined };
|
|
153
|
+
}
|
|
154
|
+
if (typeof current === 'object' || typeof current === 'function') {
|
|
155
|
+
if (!(seg in Object(current))) {
|
|
156
|
+
return { exists: false, value: undefined };
|
|
157
|
+
}
|
|
158
|
+
current = current[seg];
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
return { exists: false, value: undefined };
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return { exists: true, value: current };
|
|
165
|
+
}
|
|
166
|
+
static formatValue(value) {
|
|
167
|
+
if (value === undefined)
|
|
168
|
+
return 'undefined';
|
|
169
|
+
if (value === null)
|
|
170
|
+
return 'null';
|
|
171
|
+
if (typeof value === 'number' && Number.isNaN(value))
|
|
172
|
+
return 'NaN';
|
|
173
|
+
if (typeof value === 'function')
|
|
174
|
+
return `[Function ${value.name || 'anonymous'}]`;
|
|
175
|
+
if (value instanceof RegExp)
|
|
176
|
+
return value.toString();
|
|
177
|
+
if (value instanceof Error)
|
|
178
|
+
return `[${value.name}: ${value.message}]`;
|
|
179
|
+
try {
|
|
180
|
+
return JSON.stringify(value);
|
|
181
|
+
}
|
|
182
|
+
catch (_e) {
|
|
183
|
+
return String(value);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
exports.DeepEqualityHelper = DeepEqualityHelper;
|
|
188
|
+
//# sourceMappingURL=deep-equality-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-equality-helper.js","sourceRoot":"","sources":["../../src/matchers/deep-equality-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AsyncExpectMatcher, ExpectMatcher } from '../types/test-runner-types';
|
|
2
|
+
export declare class ExpectMatcherBuilder {
|
|
3
|
+
static createMatcher(actual: any, isNot?: boolean): ExpectMatcher;
|
|
4
|
+
static createAsyncMatcher(promiseOrFn: any, mode: 'resolves' | 'rejects', isNot?: boolean): AsyncExpectMatcher;
|
|
5
|
+
}
|
|
6
|
+
export declare function expect(actual: any): ExpectMatcher;
|
|
7
|
+
//# sourceMappingURL=expect-matcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expect-matcher.d.ts","sourceRoot":"","sources":["../../src/matchers/expect-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG/E,qBAAa,oBAAoB;WACjB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,UAAQ,GAAG,aAAa;WA8RxD,kBAAkB,CAC9B,WAAW,EAAE,GAAG,EAChB,IAAI,EAAE,UAAU,GAAG,SAAS,EAC5B,KAAK,UAAQ,GACZ,kBAAkB;CA8DtB;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,CAEjD"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExpectMatcherBuilder = void 0;
|
|
4
|
+
exports.expect = expect;
|
|
5
|
+
const deep_equality_helper_1 = require("./deep-equality-helper");
|
|
6
|
+
class ExpectMatcherBuilder {
|
|
7
|
+
static createMatcher(actual, isNot = false) {
|
|
8
|
+
const check = (condition, msg) => {
|
|
9
|
+
const pass = isNot ? !condition : condition;
|
|
10
|
+
if (!pass) {
|
|
11
|
+
throw new Error(msg);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const notPrefix = isNot ? 'not.' : '';
|
|
15
|
+
const fmt = deep_equality_helper_1.DeepEqualityHelper.formatValue;
|
|
16
|
+
const verifyErrorMatch = (caughtError, expectedError) => {
|
|
17
|
+
if (expectedError === undefined) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
const message = caughtError instanceof Error
|
|
21
|
+
? caughtError.message
|
|
22
|
+
: typeof caughtError === 'string'
|
|
23
|
+
? caughtError
|
|
24
|
+
: String(caughtError);
|
|
25
|
+
if (typeof expectedError === 'string') {
|
|
26
|
+
return message.includes(expectedError);
|
|
27
|
+
}
|
|
28
|
+
if (expectedError instanceof RegExp) {
|
|
29
|
+
return expectedError.test(message);
|
|
30
|
+
}
|
|
31
|
+
if (expectedError instanceof Error) {
|
|
32
|
+
return message.includes(expectedError.message);
|
|
33
|
+
}
|
|
34
|
+
if (typeof expectedError === 'function') {
|
|
35
|
+
return caughtError instanceof expectedError;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
};
|
|
39
|
+
const matchers = {
|
|
40
|
+
toBe(expected) {
|
|
41
|
+
check(Object.is(actual, expected) || actual === expected, `expect(${fmt(actual)}).${notPrefix}toBe(${fmt(expected)}) failed`);
|
|
42
|
+
},
|
|
43
|
+
toEqual(expected) {
|
|
44
|
+
const match = deep_equality_helper_1.DeepEqualityHelper.deepEquals(actual, expected, false);
|
|
45
|
+
check(match, `expect(${fmt(actual)}).${notPrefix}toEqual(${fmt(expected)}) failed`);
|
|
46
|
+
},
|
|
47
|
+
toStrictEqual(expected) {
|
|
48
|
+
const match = deep_equality_helper_1.DeepEqualityHelper.deepEquals(actual, expected, true);
|
|
49
|
+
check(match, `expect(${fmt(actual)}).${notPrefix}toStrictEqual(${fmt(expected)}) failed`);
|
|
50
|
+
},
|
|
51
|
+
toBeTruthy() {
|
|
52
|
+
check(Boolean(actual) === true, `expect(${fmt(actual)}).${notPrefix}toBeTruthy() failed`);
|
|
53
|
+
},
|
|
54
|
+
toBeFalsy() {
|
|
55
|
+
check(Boolean(actual) === false, `expect(${fmt(actual)}).${notPrefix}toBeFalsy() failed`);
|
|
56
|
+
},
|
|
57
|
+
toBeNull() {
|
|
58
|
+
check(actual === null, `expect(${fmt(actual)}).${notPrefix}toBeNull() failed`);
|
|
59
|
+
},
|
|
60
|
+
toBeUndefined() {
|
|
61
|
+
check(actual === undefined, `expect(${fmt(actual)}).${notPrefix}toBeUndefined() failed`);
|
|
62
|
+
},
|
|
63
|
+
toBeDefined() {
|
|
64
|
+
check(actual !== undefined && actual !== null, `expect(${fmt(actual)}).${notPrefix}toBeDefined() failed`);
|
|
65
|
+
},
|
|
66
|
+
toBeNaN() {
|
|
67
|
+
check(Number.isNaN(actual), `expect(${fmt(actual)}).${notPrefix}toBeNaN() failed`);
|
|
68
|
+
},
|
|
69
|
+
toBeInstanceOf(expectedConstructor) {
|
|
70
|
+
const isInst = typeof expectedConstructor === 'function' && actual instanceof expectedConstructor;
|
|
71
|
+
const ctorName = expectedConstructor?.name || fmt(expectedConstructor);
|
|
72
|
+
check(isInst, `expect(${fmt(actual)}).${notPrefix}toBeInstanceOf(${ctorName}) failed`);
|
|
73
|
+
},
|
|
74
|
+
toBeGreaterThan(expected) {
|
|
75
|
+
check(actual > expected, `expect(${fmt(actual)}).${notPrefix}toBeGreaterThan(${fmt(expected)}) failed`);
|
|
76
|
+
},
|
|
77
|
+
toBeGreaterThanOrEqual(expected) {
|
|
78
|
+
check(actual >= expected, `expect(${fmt(actual)}).${notPrefix}toBeGreaterThanOrEqual(${fmt(expected)}) failed`);
|
|
79
|
+
},
|
|
80
|
+
toBeLessThan(expected) {
|
|
81
|
+
check(actual < expected, `expect(${fmt(actual)}).${notPrefix}toBeLessThan(${fmt(expected)}) failed`);
|
|
82
|
+
},
|
|
83
|
+
toBeLessThanOrEqual(expected) {
|
|
84
|
+
check(actual <= expected, `expect(${fmt(actual)}).${notPrefix}toBeLessThanOrEqual(${fmt(expected)}) failed`);
|
|
85
|
+
},
|
|
86
|
+
toBeCloseTo(expected, numDigits = 2) {
|
|
87
|
+
const precision = Math.pow(10, -numDigits) / 2;
|
|
88
|
+
const diff = Math.abs(Number(actual) - expected);
|
|
89
|
+
check(!Number.isNaN(diff) && diff < precision, `expect(${fmt(actual)}).${notPrefix}toBeCloseTo(${fmt(expected)}, ${numDigits}) failed`);
|
|
90
|
+
},
|
|
91
|
+
toContain(item) {
|
|
92
|
+
let contains = false;
|
|
93
|
+
if (typeof actual === 'string') {
|
|
94
|
+
contains = actual.includes(String(item));
|
|
95
|
+
}
|
|
96
|
+
else if (Array.isArray(actual)) {
|
|
97
|
+
contains = actual.includes(item);
|
|
98
|
+
}
|
|
99
|
+
else if (actual instanceof Set) {
|
|
100
|
+
contains = actual.has(item);
|
|
101
|
+
}
|
|
102
|
+
else if (actual && typeof actual[Symbol.iterator] === 'function') {
|
|
103
|
+
for (const entry of actual) {
|
|
104
|
+
if (entry === item) {
|
|
105
|
+
contains = true;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
check(contains, `expect(${fmt(actual)}).${notPrefix}toContain(${fmt(item)}) failed`);
|
|
111
|
+
},
|
|
112
|
+
toContainEqual(item) {
|
|
113
|
+
let contains = false;
|
|
114
|
+
if (Array.isArray(actual) || (actual && typeof actual[Symbol.iterator] === 'function')) {
|
|
115
|
+
for (const entry of actual) {
|
|
116
|
+
if (deep_equality_helper_1.DeepEqualityHelper.deepEquals(entry, item)) {
|
|
117
|
+
contains = true;
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
check(contains, `expect(${fmt(actual)}).${notPrefix}toContainEqual(${fmt(item)}) failed`);
|
|
123
|
+
},
|
|
124
|
+
toHaveLength(expectedLength) {
|
|
125
|
+
const actualLen = actual !== null && actual !== undefined ? actual.length : undefined;
|
|
126
|
+
check(actualLen === expectedLength, `expect(${fmt(actual)}).${notPrefix}toHaveLength(${expectedLength}) failed (received length: ${fmt(actualLen)})`);
|
|
127
|
+
},
|
|
128
|
+
toHaveProperty(keyPath, expectedValue) {
|
|
129
|
+
const resolved = deep_equality_helper_1.DeepEqualityHelper.resolvePropertyPath(actual, keyPath);
|
|
130
|
+
const hasValueCheck = arguments.length >= 2;
|
|
131
|
+
const passCondition = resolved.exists &&
|
|
132
|
+
(!hasValueCheck || deep_equality_helper_1.DeepEqualityHelper.deepEquals(resolved.value, expectedValue));
|
|
133
|
+
check(passCondition, `expect(${fmt(actual)}).${notPrefix}toHaveProperty(${fmt(keyPath)}${hasValueCheck ? `, ${fmt(expectedValue)}` : ''}) failed`);
|
|
134
|
+
},
|
|
135
|
+
toMatch(expected) {
|
|
136
|
+
const str = typeof actual === 'string' ? actual : String(actual ?? '');
|
|
137
|
+
const matched = expected instanceof RegExp ? expected.test(str) : str.includes(String(expected));
|
|
138
|
+
check(matched, `expect(${fmt(actual)}).${notPrefix}toMatch(${fmt(expected)}) failed`);
|
|
139
|
+
},
|
|
140
|
+
toMatchObject(expected) {
|
|
141
|
+
const matched = deep_equality_helper_1.DeepEqualityHelper.matchesObject(actual, expected);
|
|
142
|
+
check(matched, `expect(${fmt(actual)}).${notPrefix}toMatchObject(${fmt(expected)}) failed`);
|
|
143
|
+
},
|
|
144
|
+
toThrow(expectedError) {
|
|
145
|
+
let threw = false;
|
|
146
|
+
let caught;
|
|
147
|
+
if (typeof actual === 'function') {
|
|
148
|
+
try {
|
|
149
|
+
actual();
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
threw = true;
|
|
153
|
+
caught = err;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const matched = threw && verifyErrorMatch(caught, expectedError);
|
|
157
|
+
check(matched, `expect(fn).${notPrefix}toThrow(${expectedError !== undefined ? fmt(expectedError) : ''}) failed: ${!threw
|
|
158
|
+
? 'function did not throw'
|
|
159
|
+
: `threw ${fmt(caught)} which did not match ${fmt(expectedError)}`}`);
|
|
160
|
+
},
|
|
161
|
+
toHaveBeenCalled() {
|
|
162
|
+
if (!actual || !actual._isMockFunction || !actual.mock) {
|
|
163
|
+
throw new Error('expect(fn).toHaveBeenCalled() requires a mock/spy function');
|
|
164
|
+
}
|
|
165
|
+
check(actual.mock.calls.length > 0, `expect(mockFn).${notPrefix}toHaveBeenCalled() failed (called ${actual.mock.calls.length} times)`);
|
|
166
|
+
},
|
|
167
|
+
toHaveBeenCalledTimes(expectedCount) {
|
|
168
|
+
if (!actual || !actual._isMockFunction || !actual.mock) {
|
|
169
|
+
throw new Error('expect(fn).toHaveBeenCalledTimes() requires a mock/spy function');
|
|
170
|
+
}
|
|
171
|
+
check(actual.mock.calls.length === expectedCount, `expect(mockFn).${notPrefix}toHaveBeenCalledTimes(${expectedCount}) failed (called ${actual.mock.calls.length} times)`);
|
|
172
|
+
},
|
|
173
|
+
toHaveBeenCalledWith(...expectedArgs) {
|
|
174
|
+
if (!actual || !actual._isMockFunction || !actual.mock) {
|
|
175
|
+
throw new Error('expect(fn).toHaveBeenCalledWith() requires a mock/spy function');
|
|
176
|
+
}
|
|
177
|
+
const matched = actual.mock.calls.some((callArgs) => deep_equality_helper_1.DeepEqualityHelper.deepEquals(callArgs, expectedArgs));
|
|
178
|
+
check(matched, `expect(mockFn).${notPrefix}toHaveBeenCalledWith(${expectedArgs.map(fmt).join(', ')}) failed (calls: ${fmt(actual.mock.calls)})`);
|
|
179
|
+
},
|
|
180
|
+
toHaveBeenLastCalledWith(...expectedArgs) {
|
|
181
|
+
if (!actual || !actual._isMockFunction || !actual.mock) {
|
|
182
|
+
throw new Error('expect(fn).toHaveBeenLastCalledWith() requires a mock/spy function');
|
|
183
|
+
}
|
|
184
|
+
const lastCall = actual.mock.lastCall;
|
|
185
|
+
const matched = actual.mock.calls.length > 0 && deep_equality_helper_1.DeepEqualityHelper.deepEquals(lastCall, expectedArgs);
|
|
186
|
+
check(matched, `expect(mockFn).${notPrefix}toHaveBeenLastCalledWith(${expectedArgs.map(fmt).join(', ')}) failed (lastCall: ${fmt(lastCall)})`);
|
|
187
|
+
},
|
|
188
|
+
get not() {
|
|
189
|
+
return ExpectMatcherBuilder.createMatcher(actual, !isNot);
|
|
190
|
+
},
|
|
191
|
+
get resolves() {
|
|
192
|
+
return ExpectMatcherBuilder.createAsyncMatcher(actual, 'resolves', false);
|
|
193
|
+
},
|
|
194
|
+
get rejects() {
|
|
195
|
+
return ExpectMatcherBuilder.createAsyncMatcher(actual, 'rejects', false);
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
return matchers;
|
|
199
|
+
}
|
|
200
|
+
static createAsyncMatcher(promiseOrFn, mode, isNot = false) {
|
|
201
|
+
const awaitTarget = async () => {
|
|
202
|
+
const targetPromise = typeof promiseOrFn === 'function' ? Promise.resolve().then(() => promiseOrFn()) : Promise.resolve(promiseOrFn);
|
|
203
|
+
if (mode === 'resolves') {
|
|
204
|
+
try {
|
|
205
|
+
return await targetPromise;
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
throw new Error(`expect(promise).resolves failed because promise rejected with: ${deep_equality_helper_1.DeepEqualityHelper.formatValue(err)}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
let didReject = false;
|
|
213
|
+
let rejectedVal;
|
|
214
|
+
try {
|
|
215
|
+
await targetPromise;
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
didReject = true;
|
|
219
|
+
rejectedVal = err;
|
|
220
|
+
}
|
|
221
|
+
if (!didReject) {
|
|
222
|
+
throw new Error('expect(promise).rejects failed because promise resolved instead of rejecting');
|
|
223
|
+
}
|
|
224
|
+
return rejectedVal;
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
const runSyncMatcher = async (invoke) => {
|
|
228
|
+
const val = await awaitTarget();
|
|
229
|
+
const syncMatcher = ExpectMatcherBuilder.createMatcher(val, isNot);
|
|
230
|
+
invoke(syncMatcher, val);
|
|
231
|
+
};
|
|
232
|
+
return {
|
|
233
|
+
toBe: (expected) => runSyncMatcher((m) => m.toBe(expected)),
|
|
234
|
+
toEqual: (expected) => runSyncMatcher((m) => m.toEqual(expected)),
|
|
235
|
+
toStrictEqual: (expected) => runSyncMatcher((m) => m.toStrictEqual(expected)),
|
|
236
|
+
toBeTruthy: () => runSyncMatcher((m) => m.toBeTruthy()),
|
|
237
|
+
toBeFalsy: () => runSyncMatcher((m) => m.toBeFalsy()),
|
|
238
|
+
toBeNull: () => runSyncMatcher((m) => m.toBeNull()),
|
|
239
|
+
toBeUndefined: () => runSyncMatcher((m) => m.toBeUndefined()),
|
|
240
|
+
toBeDefined: () => runSyncMatcher((m) => m.toBeDefined()),
|
|
241
|
+
toContain: (item) => runSyncMatcher((m) => m.toContain(item)),
|
|
242
|
+
toMatch: (expected) => runSyncMatcher((m) => m.toMatch(expected)),
|
|
243
|
+
toMatchObject: (expected) => runSyncMatcher((m) => m.toMatchObject(expected)),
|
|
244
|
+
toThrow: async (expectedError) => {
|
|
245
|
+
const val = await awaitTarget();
|
|
246
|
+
const syncMatcher = ExpectMatcherBuilder.createMatcher(() => {
|
|
247
|
+
throw val;
|
|
248
|
+
}, isNot);
|
|
249
|
+
syncMatcher.toThrow(expectedError);
|
|
250
|
+
},
|
|
251
|
+
get not() {
|
|
252
|
+
return ExpectMatcherBuilder.createAsyncMatcher(promiseOrFn, mode, !isNot);
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
exports.ExpectMatcherBuilder = ExpectMatcherBuilder;
|
|
258
|
+
function expect(actual) {
|
|
259
|
+
return ExpectMatcherBuilder.createMatcher(actual, false);
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=expect-matcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expect-matcher.js","sourceRoot":"","sources":["../../src/matchers/expect-matcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MockFunction } from '../types/test-runner-types';
|
|
2
|
+
export declare class JestMockFactory {
|
|
3
|
+
private static activeMocks;
|
|
4
|
+
private static activeSpies;
|
|
5
|
+
static fn<TArgs extends any[] = any[], TReturn = any>(initialImpl?: (...args: TArgs) => TReturn): MockFunction<TArgs, TReturn>;
|
|
6
|
+
static spyOn<T extends object, K extends keyof T>(target: T, methodName: K): MockFunction<any[], any>;
|
|
7
|
+
static isMockFunction(fn: any): fn is MockFunction<any, any>;
|
|
8
|
+
static clearAllMocks(): void;
|
|
9
|
+
static resetAllMocks(): void;
|
|
10
|
+
static restoreAllMocks(): void;
|
|
11
|
+
}
|
|
12
|
+
export declare const jest: {
|
|
13
|
+
fn: typeof JestMockFactory.fn;
|
|
14
|
+
spyOn: typeof JestMockFactory.spyOn;
|
|
15
|
+
isMockFunction: typeof JestMockFactory.isMockFunction;
|
|
16
|
+
clearAllMocks: typeof JestMockFactory.clearAllMocks;
|
|
17
|
+
resetAllMocks: typeof JestMockFactory.resetAllMocks;
|
|
18
|
+
restoreAllMocks: typeof JestMockFactory.restoreAllMocks;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=jest-mock-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jest-mock-factory.d.ts","sourceRoot":"","sources":["../../src/mock/jest-mock-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,4BAA4B,CAAC;AAErE,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,WAAW,CAAqC;IAC/D,OAAO,CAAC,MAAM,CAAC,WAAW,CAAyB;WAErC,EAAE,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,EACzD,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,GACxC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;WAkGjB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EACrD,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,CAAC,GACZ,YAAY,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;WA6Bb,cAAc,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;WAIrD,aAAa,IAAI,IAAI;WAMrB,aAAa,IAAI,IAAI;WAMrB,eAAe,IAAI,IAAI;CAMtC;AAED,eAAO,MAAM,IAAI;;;;;;;CAOhB,CAAC"}
|