@zudojs/testing 0.0.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/README.md +35 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/assertions/errorAssertions.core.d.ts +37 -0
- package/dist/assertions/errorAssertions.core.d.ts.map +1 -0
- package/dist/assertions/errorAssertions.core.js +82 -0
- package/dist/assertions/errorAssertions.core.js.map +1 -0
- package/dist/assertions/eventAssertions.core.d.ts +44 -0
- package/dist/assertions/eventAssertions.core.d.ts.map +1 -0
- package/dist/assertions/eventAssertions.core.js +63 -0
- package/dist/assertions/eventAssertions.core.js.map +1 -0
- package/dist/assertions/httpAssertions.core.d.ts +54 -0
- package/dist/assertions/httpAssertions.core.d.ts.map +1 -0
- package/dist/assertions/httpAssertions.core.js +80 -0
- package/dist/assertions/httpAssertions.core.js.map +1 -0
- package/dist/assertions/index.d.ts +9 -0
- package/dist/assertions/index.d.ts.map +1 -0
- package/dist/assertions/index.js +9 -0
- package/dist/assertions/index.js.map +1 -0
- package/dist/cleanupManager/cleanupManager.core.d.ts +54 -0
- package/dist/cleanupManager/cleanupManager.core.d.ts.map +1 -0
- package/dist/cleanupManager/cleanupManager.core.js +60 -0
- package/dist/cleanupManager/cleanupManager.core.js.map +1 -0
- package/dist/cleanupManager/index.d.ts +8 -0
- package/dist/cleanupManager/index.d.ts.map +1 -0
- package/dist/cleanupManager/index.js +7 -0
- package/dist/cleanupManager/index.js.map +1 -0
- package/dist/fixtures/eventFixtures.core.d.ts +53 -0
- package/dist/fixtures/eventFixtures.core.d.ts.map +1 -0
- package/dist/fixtures/eventFixtures.core.js +59 -0
- package/dist/fixtures/eventFixtures.core.js.map +1 -0
- package/dist/fixtures/index.d.ts +10 -0
- package/dist/fixtures/index.d.ts.map +1 -0
- package/dist/fixtures/index.js +8 -0
- package/dist/fixtures/index.js.map +1 -0
- package/dist/fixtures/messageFixtures.core.d.ts +53 -0
- package/dist/fixtures/messageFixtures.core.d.ts.map +1 -0
- package/dist/fixtures/messageFixtures.core.js +59 -0
- package/dist/fixtures/messageFixtures.core.js.map +1 -0
- package/dist/httpTesting/httpRequest.core.d.ts +69 -0
- package/dist/httpTesting/httpRequest.core.d.ts.map +1 -0
- package/dist/httpTesting/httpRequest.core.js +114 -0
- package/dist/httpTesting/httpRequest.core.js.map +1 -0
- package/dist/httpTesting/httpResponse.core.d.ts +20 -0
- package/dist/httpTesting/httpResponse.core.d.ts.map +1 -0
- package/dist/httpTesting/httpResponse.core.js +77 -0
- package/dist/httpTesting/httpResponse.core.js.map +1 -0
- package/dist/httpTesting/httpResponse.helpers.d.ts +24 -0
- package/dist/httpTesting/httpResponse.helpers.d.ts.map +1 -0
- package/dist/httpTesting/httpResponse.helpers.js +41 -0
- package/dist/httpTesting/httpResponse.helpers.js.map +1 -0
- package/dist/httpTesting/httpResponse.type.d.ts +25 -0
- package/dist/httpTesting/httpResponse.type.d.ts.map +1 -0
- package/dist/httpTesting/httpResponse.type.js +7 -0
- package/dist/httpTesting/httpResponse.type.js.map +1 -0
- package/dist/httpTesting/httpStatusCode.type.d.ts +10 -0
- package/dist/httpTesting/httpStatusCode.type.d.ts.map +1 -0
- package/dist/httpTesting/httpStatusCode.type.js +9 -0
- package/dist/httpTesting/httpStatusCode.type.js.map +1 -0
- package/dist/httpTesting/index.d.ts +11 -0
- package/dist/httpTesting/index.d.ts.map +1 -0
- package/dist/httpTesting/index.js +9 -0
- package/dist/httpTesting/index.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/mocking/index.d.ts +11 -0
- package/dist/mocking/index.d.ts.map +1 -0
- package/dist/mocking/index.js +9 -0
- package/dist/mocking/index.js.map +1 -0
- package/dist/mocking/mockFn.core.d.ts +40 -0
- package/dist/mocking/mockFn.core.d.ts.map +1 -0
- package/dist/mocking/mockFn.core.js +104 -0
- package/dist/mocking/mockFn.core.js.map +1 -0
- package/dist/mocking/spy.core.d.ts +66 -0
- package/dist/mocking/spy.core.d.ts.map +1 -0
- package/dist/mocking/spy.core.js +100 -0
- package/dist/mocking/spy.core.js.map +1 -0
- package/dist/mocking/stub.core.d.ts +56 -0
- package/dist/mocking/stub.core.d.ts.map +1 -0
- package/dist/mocking/stub.core.js +77 -0
- package/dist/mocking/stub.core.js.map +1 -0
- package/dist/spyLogger/index.d.ts +8 -0
- package/dist/spyLogger/index.d.ts.map +1 -0
- package/dist/spyLogger/index.js +7 -0
- package/dist/spyLogger/index.js.map +1 -0
- package/dist/spyLogger/spyLogger.core.d.ts +16 -0
- package/dist/spyLogger/spyLogger.core.d.ts.map +1 -0
- package/dist/spyLogger/spyLogger.core.js +69 -0
- package/dist/spyLogger/spyLogger.core.js.map +1 -0
- package/dist/spyLogger/spyLogger.type.d.ts +23 -0
- package/dist/spyLogger/spyLogger.type.d.ts.map +1 -0
- package/dist/spyLogger/spyLogger.type.js +7 -0
- package/dist/spyLogger/spyLogger.type.js.map +1 -0
- package/dist/testApplication/index.d.ts +8 -0
- package/dist/testApplication/index.d.ts.map +1 -0
- package/dist/testApplication/index.js +7 -0
- package/dist/testApplication/index.js.map +1 -0
- package/dist/testApplication/testApplication.core.d.ts +49 -0
- package/dist/testApplication/testApplication.core.d.ts.map +1 -0
- package/dist/testApplication/testApplication.core.js +51 -0
- package/dist/testApplication/testApplication.core.js.map +1 -0
- package/dist/testClock/index.d.ts +8 -0
- package/dist/testClock/index.d.ts.map +1 -0
- package/dist/testClock/index.js +7 -0
- package/dist/testClock/index.js.map +1 -0
- package/dist/testClock/testClock.core.d.ts +54 -0
- package/dist/testClock/testClock.core.d.ts.map +1 -0
- package/dist/testClock/testClock.core.js +57 -0
- package/dist/testClock/testClock.core.js.map +1 -0
- package/dist/testConfig/index.d.ts +8 -0
- package/dist/testConfig/index.d.ts.map +1 -0
- package/dist/testConfig/index.js +7 -0
- package/dist/testConfig/index.js.map +1 -0
- package/dist/testConfig/testConfig.core.d.ts +58 -0
- package/dist/testConfig/testConfig.core.d.ts.map +1 -0
- package/dist/testConfig/testConfig.core.js +53 -0
- package/dist/testConfig/testConfig.core.js.map +1 -0
- package/dist/testContainer/index.d.ts +8 -0
- package/dist/testContainer/index.d.ts.map +1 -0
- package/dist/testContainer/index.js +7 -0
- package/dist/testContainer/index.js.map +1 -0
- package/dist/testContainer/testContainer.core.d.ts +60 -0
- package/dist/testContainer/testContainer.core.d.ts.map +1 -0
- package/dist/testContainer/testContainer.core.js +47 -0
- package/dist/testContainer/testContainer.core.js.map +1 -0
- package/dist/testContext/index.d.ts +10 -0
- package/dist/testContext/index.d.ts.map +1 -0
- package/dist/testContext/index.js +8 -0
- package/dist/testContext/index.js.map +1 -0
- package/dist/testContext/testContext.core.d.ts +32 -0
- package/dist/testContext/testContext.core.d.ts.map +1 -0
- package/dist/testContext/testContext.core.js +28 -0
- package/dist/testContext/testContext.core.js.map +1 -0
- package/dist/testContext/testContext.recorder.core.d.ts +19 -0
- package/dist/testContext/testContext.recorder.core.d.ts.map +1 -0
- package/dist/testContext/testContext.recorder.core.js +74 -0
- package/dist/testContext/testContext.recorder.core.js.map +1 -0
- package/dist/testContext/testContext.recorder.type.d.ts +59 -0
- package/dist/testContext/testContext.recorder.type.d.ts.map +1 -0
- package/dist/testContext/testContext.recorder.type.js +7 -0
- package/dist/testContext/testContext.recorder.type.js.map +1 -0
- package/dist/testEventBus/index.d.ts +8 -0
- package/dist/testEventBus/index.d.ts.map +1 -0
- package/dist/testEventBus/index.js +7 -0
- package/dist/testEventBus/index.js.map +1 -0
- package/dist/testEventBus/testEventBus.core.d.ts +61 -0
- package/dist/testEventBus/testEventBus.core.d.ts.map +1 -0
- package/dist/testEventBus/testEventBus.core.js +61 -0
- package/dist/testEventBus/testEventBus.core.js.map +1 -0
- package/dist/testMessageBus/index.d.ts +8 -0
- package/dist/testMessageBus/index.d.ts.map +1 -0
- package/dist/testMessageBus/index.js +7 -0
- package/dist/testMessageBus/index.js.map +1 -0
- package/dist/testMessageBus/testMessageBus.core.d.ts +61 -0
- package/dist/testMessageBus/testMessageBus.core.d.ts.map +1 -0
- package/dist/testMessageBus/testMessageBus.core.js +61 -0
- package/dist/testMessageBus/testMessageBus.core.js.map +1 -0
- package/dist/testQueue/index.d.ts +8 -0
- package/dist/testQueue/index.d.ts.map +1 -0
- package/dist/testQueue/index.js +7 -0
- package/dist/testQueue/index.js.map +1 -0
- package/dist/testQueue/testQueue.core.d.ts +46 -0
- package/dist/testQueue/testQueue.core.d.ts.map +1 -0
- package/dist/testQueue/testQueue.core.js +36 -0
- package/dist/testQueue/testQueue.core.js.map +1 -0
- package/dist/testSerialization/index.d.ts +7 -0
- package/dist/testSerialization/index.d.ts.map +1 -0
- package/dist/testSerialization/index.js +7 -0
- package/dist/testSerialization/index.js.map +1 -0
- package/dist/testSerialization/serializationAssertions.core.d.ts +37 -0
- package/dist/testSerialization/serializationAssertions.core.d.ts.map +1 -0
- package/dist/testSerialization/serializationAssertions.core.js +63 -0
- package/dist/testSerialization/serializationAssertions.core.js.map +1 -0
- package/dist/testStorage/index.d.ts +7 -0
- package/dist/testStorage/index.d.ts.map +1 -0
- package/dist/testStorage/index.js +7 -0
- package/dist/testStorage/index.js.map +1 -0
- package/dist/testStorage/testStorageMemory.core.d.ts +30 -0
- package/dist/testStorage/testStorageMemory.core.d.ts.map +1 -0
- package/dist/testStorage/testStorageMemory.core.js +52 -0
- package/dist/testStorage/testStorageMemory.core.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/testing — Spy logger for testing.
|
|
3
|
+
*
|
|
4
|
+
* Records all log calls for assertion without side effects.
|
|
5
|
+
*/
|
|
6
|
+
function recordCall(calls, method, level, message, metadata) {
|
|
7
|
+
calls.push({ method, level, message, metadata, timestamp: new Date() });
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Creates a spy logger that records all log calls.
|
|
11
|
+
*
|
|
12
|
+
* @param name - Logger name.
|
|
13
|
+
* @param level - Optional minimum level (defaults to TRACE = all).
|
|
14
|
+
* @returns A SpyLogger instance.
|
|
15
|
+
*/
|
|
16
|
+
export function createSpyLogger(name = "test", level = 5) {
|
|
17
|
+
const calls = [];
|
|
18
|
+
return {
|
|
19
|
+
get name() {
|
|
20
|
+
return name;
|
|
21
|
+
},
|
|
22
|
+
get level() {
|
|
23
|
+
return level;
|
|
24
|
+
},
|
|
25
|
+
get enabled() {
|
|
26
|
+
return true;
|
|
27
|
+
},
|
|
28
|
+
get calls() {
|
|
29
|
+
return calls;
|
|
30
|
+
},
|
|
31
|
+
fatal: (message, metadata) => {
|
|
32
|
+
recordCall(calls, "fatal", 0, message, metadata);
|
|
33
|
+
},
|
|
34
|
+
error: (message, metadata) => {
|
|
35
|
+
recordCall(calls, "error", 1, message, metadata);
|
|
36
|
+
},
|
|
37
|
+
warn: (message, metadata) => {
|
|
38
|
+
recordCall(calls, "warn", 2, message, metadata);
|
|
39
|
+
},
|
|
40
|
+
info: (message, metadata) => {
|
|
41
|
+
recordCall(calls, "info", 3, message, metadata);
|
|
42
|
+
},
|
|
43
|
+
debug: (message, metadata) => {
|
|
44
|
+
recordCall(calls, "debug", 4, message, metadata);
|
|
45
|
+
},
|
|
46
|
+
trace: (message, metadata) => {
|
|
47
|
+
recordCall(calls, "trace", 5, message, metadata);
|
|
48
|
+
},
|
|
49
|
+
log: (logLevel, message, options) => {
|
|
50
|
+
recordCall(calls, "log", logLevel, message, options?.metadata);
|
|
51
|
+
},
|
|
52
|
+
child: (_options) => createSpyLogger(`${name}.child`, level),
|
|
53
|
+
withContext: (_context) => createSpyLogger(name, level),
|
|
54
|
+
setLevel: (newLevel) => {
|
|
55
|
+
level = newLevel;
|
|
56
|
+
},
|
|
57
|
+
enable: () => { },
|
|
58
|
+
disable: () => { },
|
|
59
|
+
flush: async () => { },
|
|
60
|
+
close: async () => { },
|
|
61
|
+
clear: () => {
|
|
62
|
+
calls.length = 0;
|
|
63
|
+
},
|
|
64
|
+
findByMethod: (method) => calls.filter((c) => c.method === method),
|
|
65
|
+
findByMessage: (substring) => calls.filter((c) => c.message.includes(substring)),
|
|
66
|
+
findByMetadata: (key, value) => calls.filter((c) => c.metadata !== undefined && c.metadata[key] === value),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=spyLogger.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spyLogger.core.js","sourceRoot":"","sources":["../../src/spyLogger/spyLogger.core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/testing — Spy logger types.
|
|
3
|
+
*
|
|
4
|
+
* Types for the spy logger used in testing.
|
|
5
|
+
*/
|
|
6
|
+
import type { Logger, LoggerLevel, LogMetadata } from "@zudojs/logger";
|
|
7
|
+
/** A recorded log call. */
|
|
8
|
+
export interface LogCall {
|
|
9
|
+
readonly method: string;
|
|
10
|
+
readonly level: LoggerLevel;
|
|
11
|
+
readonly message: string;
|
|
12
|
+
readonly metadata?: LogMetadata;
|
|
13
|
+
readonly timestamp: Date;
|
|
14
|
+
}
|
|
15
|
+
/** A spy logger that records all log calls. */
|
|
16
|
+
export interface SpyLogger extends Logger {
|
|
17
|
+
readonly calls: readonly LogCall[];
|
|
18
|
+
clear: () => void;
|
|
19
|
+
findByMethod: (method: string) => readonly LogCall[];
|
|
20
|
+
findByMessage: (substring: string) => readonly LogCall[];
|
|
21
|
+
findByMetadata: (key: string, value: unknown) => readonly LogCall[];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=spyLogger.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spyLogger.type.d.ts","sourceRoot":"","sources":["../../src/spyLogger/spyLogger.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEvE,2BAA2B;AAC3B,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED,+CAA+C;AAC/C,MAAM,WAAW,SAAU,SAAQ,MAAM;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,OAAO,EAAE,CAAC;IACrD,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,SAAS,OAAO,EAAE,CAAC;IACzD,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,SAAS,OAAO,EAAE,CAAC;CACrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spyLogger.type.js","sourceRoot":"","sources":["../../src/spyLogger/spyLogger.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test application builder.
|
|
3
|
+
*
|
|
4
|
+
* Simplified test application context creation.
|
|
5
|
+
*/
|
|
6
|
+
export { createTestApplication } from "./testApplication.core.js";
|
|
7
|
+
export type { TestApplication, TestApplicationOptions, } from "./testApplication.core.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testApplication/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,YAAY,EACV,eAAe,EACf,sBAAsB,GACvB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testApplication/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test application builder.
|
|
3
|
+
*
|
|
4
|
+
* Provides a simplified builder for creating test application
|
|
5
|
+
* contexts without the full Runtime lifecycle.
|
|
6
|
+
*/
|
|
7
|
+
import type { Container } from "@zudojs/container";
|
|
8
|
+
import type { Logger } from "@zudojs/logger";
|
|
9
|
+
import type { CleanupManager } from "../cleanupManager/cleanupManager.core.js";
|
|
10
|
+
import type { TestClock } from "../testClock/testClock.core.js";
|
|
11
|
+
/**
|
|
12
|
+
* Options for creating a test application.
|
|
13
|
+
*/
|
|
14
|
+
export interface TestApplicationOptions {
|
|
15
|
+
readonly name?: string;
|
|
16
|
+
readonly container?: Container;
|
|
17
|
+
readonly logger?: Logger;
|
|
18
|
+
readonly clock?: TestClock;
|
|
19
|
+
readonly cleanup?: CleanupManager;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A test application context.
|
|
23
|
+
*/
|
|
24
|
+
export interface TestApplication {
|
|
25
|
+
readonly name: string;
|
|
26
|
+
readonly container: Container;
|
|
27
|
+
readonly logger: Logger;
|
|
28
|
+
readonly clock: TestClock;
|
|
29
|
+
readonly cleanup: CleanupManager;
|
|
30
|
+
dispose: () => Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Creates a test application context.
|
|
34
|
+
*
|
|
35
|
+
* @param options - Test application options.
|
|
36
|
+
* @returns A TestApplication instance.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const app = createTestApplication({ name: "user-service" });
|
|
41
|
+
*
|
|
42
|
+
* app.container.registerValue(token, implementation);
|
|
43
|
+
* const service = app.container.resolve(token);
|
|
44
|
+
*
|
|
45
|
+
* await app.dispose();
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function createTestApplication(options?: TestApplicationOptions): TestApplication;
|
|
49
|
+
//# sourceMappingURL=testApplication.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testApplication.core.d.ts","sourceRoot":"","sources":["../../src/testApplication/testApplication.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAU7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,sBAA2B,GACnC,eAAe,CA2BjB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test application builder.
|
|
3
|
+
*
|
|
4
|
+
* Provides a simplified builder for creating test application
|
|
5
|
+
* contexts without the full Runtime lifecycle.
|
|
6
|
+
*/
|
|
7
|
+
import { createStartedContainer } from "@zudojs/container";
|
|
8
|
+
import { createLogger } from "@zudojs/logger";
|
|
9
|
+
import { createCleanupManager } from "../cleanupManager/cleanupManager.core.js";
|
|
10
|
+
import { createTestClock } from "../testClock/testClock.core.js";
|
|
11
|
+
/**
|
|
12
|
+
* Creates a test application context.
|
|
13
|
+
*
|
|
14
|
+
* @param options - Test application options.
|
|
15
|
+
* @returns A TestApplication instance.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const app = createTestApplication({ name: "user-service" });
|
|
20
|
+
*
|
|
21
|
+
* app.container.registerValue(token, implementation);
|
|
22
|
+
* const service = app.container.resolve(token);
|
|
23
|
+
*
|
|
24
|
+
* await app.dispose();
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function createTestApplication(options = {}) {
|
|
28
|
+
const name = options.name ?? "test-app";
|
|
29
|
+
const container = options.container ?? createStartedContainer();
|
|
30
|
+
const logger = options.logger ?? createLogger({ name });
|
|
31
|
+
const clock = options.clock ?? createTestClock();
|
|
32
|
+
const cleanup = options.cleanup ?? createCleanupManager();
|
|
33
|
+
cleanup.register(async () => {
|
|
34
|
+
container.dispose();
|
|
35
|
+
}, "container-dispose");
|
|
36
|
+
cleanup.register(async () => {
|
|
37
|
+
await logger.close();
|
|
38
|
+
}, "logger-close");
|
|
39
|
+
const dispose = async () => {
|
|
40
|
+
await cleanup.dispose();
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
name,
|
|
44
|
+
container,
|
|
45
|
+
logger,
|
|
46
|
+
clock,
|
|
47
|
+
cleanup,
|
|
48
|
+
dispose,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=testApplication.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testApplication.core.js","sourceRoot":"","sources":["../../src/testApplication/testApplication.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AA6BjE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAO,GAA2B,EAAE;IAEpC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,sBAAsB,EAAE,CAAC;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,oBAAoB,EAAE,CAAC;IAE1D,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;QAC1B,SAAS,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAExB,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;QAC1B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,EAAE,cAAc,CAAC,CAAC;IAEnB,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,SAAS;QACT,MAAM;QACN,KAAK;QACL,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testClock/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testClock/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic test clock.
|
|
3
|
+
*
|
|
4
|
+
* Provides control over time in tests for testing JWT expiration,
|
|
5
|
+
* sessions, cache TTL, queue retry delays, timeouts, and rate limits
|
|
6
|
+
* without actually waiting.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* A fake timer that can be advanced or set to a specific time.
|
|
10
|
+
*/
|
|
11
|
+
export interface TestClock {
|
|
12
|
+
readonly now: Date;
|
|
13
|
+
readonly timestamp: number;
|
|
14
|
+
/**
|
|
15
|
+
* Set the clock to a specific date.
|
|
16
|
+
*/
|
|
17
|
+
set: (date: Date | string | number) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Advance the clock by a given number of milliseconds.
|
|
20
|
+
*/
|
|
21
|
+
advance: (ms: number) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Move the clock forward by the given duration.
|
|
24
|
+
*/
|
|
25
|
+
add: (duration: {
|
|
26
|
+
seconds?: number;
|
|
27
|
+
minutes?: number;
|
|
28
|
+
hours?: number;
|
|
29
|
+
days?: number;
|
|
30
|
+
}) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Reset the clock to the real current time.
|
|
33
|
+
*/
|
|
34
|
+
reset: () => void;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates a deterministic test clock.
|
|
38
|
+
*
|
|
39
|
+
* @param initialTime - Optional initial time. Defaults to current time.
|
|
40
|
+
* @returns A TestClock instance.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* const clock = createTestClock();
|
|
45
|
+
*
|
|
46
|
+
* clock.set("2026-01-01T00:00:00Z");
|
|
47
|
+
* expect(clock.now.toISOString()).toBe("2026-01-01T00:00:00.000Z");
|
|
48
|
+
*
|
|
49
|
+
* clock.advance(60_000);
|
|
50
|
+
* expect(clock.now.toISOString()).toBe("2026-01-01T00:01:00.000Z");
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function createTestClock(initialTime?: Date | string | number): TestClock;
|
|
54
|
+
//# sourceMappingURL=testClock.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testClock.core.d.ts","sourceRoot":"","sources":["../../src/testClock/testClock.core.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9B;;OAEG;IACH,GAAG,EAAE,CAAC,QAAQ,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,KAAK,IAAI,CAAC;IAEX;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAC7B,WAAW,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GACnC,SAAS,CA4CX"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic test clock.
|
|
3
|
+
*
|
|
4
|
+
* Provides control over time in tests for testing JWT expiration,
|
|
5
|
+
* sessions, cache TTL, queue retry delays, timeouts, and rate limits
|
|
6
|
+
* without actually waiting.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Creates a deterministic test clock.
|
|
10
|
+
*
|
|
11
|
+
* @param initialTime - Optional initial time. Defaults to current time.
|
|
12
|
+
* @returns A TestClock instance.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const clock = createTestClock();
|
|
17
|
+
*
|
|
18
|
+
* clock.set("2026-01-01T00:00:00Z");
|
|
19
|
+
* expect(clock.now.toISOString()).toBe("2026-01-01T00:00:00.000Z");
|
|
20
|
+
*
|
|
21
|
+
* clock.advance(60_000);
|
|
22
|
+
* expect(clock.now.toISOString()).toBe("2026-01-01T00:01:00.000Z");
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export function createTestClock(initialTime) {
|
|
26
|
+
let currentTime = initialTime ? new Date(initialTime).getTime() : Date.now();
|
|
27
|
+
const now = () => new Date(currentTime);
|
|
28
|
+
const set = (date) => {
|
|
29
|
+
currentTime = new Date(date).getTime();
|
|
30
|
+
};
|
|
31
|
+
const advance = (ms) => {
|
|
32
|
+
currentTime += ms;
|
|
33
|
+
};
|
|
34
|
+
const add = (duration) => {
|
|
35
|
+
const ms = (duration.seconds ?? 0) * 1000 +
|
|
36
|
+
(duration.minutes ?? 0) * 60_000 +
|
|
37
|
+
(duration.hours ?? 0) * 3_600_000 +
|
|
38
|
+
(duration.days ?? 0) * 86_400_000;
|
|
39
|
+
currentTime += ms;
|
|
40
|
+
};
|
|
41
|
+
const reset = () => {
|
|
42
|
+
currentTime = Date.now();
|
|
43
|
+
};
|
|
44
|
+
return {
|
|
45
|
+
get now() {
|
|
46
|
+
return now();
|
|
47
|
+
},
|
|
48
|
+
get timestamp() {
|
|
49
|
+
return currentTime;
|
|
50
|
+
},
|
|
51
|
+
set,
|
|
52
|
+
advance,
|
|
53
|
+
add,
|
|
54
|
+
reset,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=testClock.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testClock.core.js","sourceRoot":"","sources":["../../src/testClock/testClock.core.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmCH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAoC;IAEpC,IAAI,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7E,MAAM,GAAG,GAAG,GAAS,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IAE9C,MAAM,GAAG,GAAG,CAAC,IAA4B,EAAQ,EAAE;QACjD,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,EAAU,EAAQ,EAAE;QACnC,WAAW,IAAI,EAAE,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,QAKZ,EAAQ,EAAE;QACT,MAAM,EAAE,GACN,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI;YAC9B,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM;YAChC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS;YACjC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC;QAEpC,WAAW,IAAI,EAAE,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,GAAG;YACL,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,IAAI,SAAS;YACX,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,GAAG;QACH,OAAO;QACP,GAAG;QACH,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test configuration manager.
|
|
3
|
+
*
|
|
4
|
+
* Wraps ConfigManager with test-friendly defaults.
|
|
5
|
+
*/
|
|
6
|
+
export { createTestConfigManager } from "./testConfig.core.js";
|
|
7
|
+
export type { TestConfigManager } from "./testConfig.core.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testConfig/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testConfig/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test configuration manager.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the real ConfigManager with test-friendly defaults
|
|
5
|
+
* for loading configuration in tests.
|
|
6
|
+
*/
|
|
7
|
+
import { ConfigManager } from "@zudojs/config";
|
|
8
|
+
import type { ConfigValue, ConfigManagerOptions, ConfigManagerStatus } from "@zudojs/config";
|
|
9
|
+
/**
|
|
10
|
+
* A test configuration manager with convenience methods.
|
|
11
|
+
*/
|
|
12
|
+
export interface TestConfigManager {
|
|
13
|
+
/**
|
|
14
|
+
* The underlying ConfigManager instance.
|
|
15
|
+
*/
|
|
16
|
+
readonly manager: ConfigManager;
|
|
17
|
+
/**
|
|
18
|
+
* Set a configuration value directly.
|
|
19
|
+
*/
|
|
20
|
+
set: <T extends ConfigValue>(key: string, value: T) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Get a configuration value.
|
|
23
|
+
*/
|
|
24
|
+
get: <T extends ConfigValue = ConfigValue>(key: string) => T | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Load the configuration from sources.
|
|
27
|
+
*/
|
|
28
|
+
load: () => Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Get the current manager status.
|
|
31
|
+
*/
|
|
32
|
+
getStatus: () => ConfigManagerStatus;
|
|
33
|
+
/**
|
|
34
|
+
* Dispose the configuration manager.
|
|
35
|
+
*/
|
|
36
|
+
dispose: () => Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Creates a test configuration manager with pre-loaded values.
|
|
40
|
+
*
|
|
41
|
+
* @param initialValues - Optional initial configuration values.
|
|
42
|
+
* @param options - Optional ConfigManager options.
|
|
43
|
+
* @returns A TestConfigManager instance.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* const config = createTestConfigManager({
|
|
48
|
+
* "database.host": "localhost",
|
|
49
|
+
* "database.port": 5432,
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* expect(config.get("database.host")).toBe("localhost");
|
|
53
|
+
*
|
|
54
|
+
* await config.dispose();
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function createTestConfigManager(initialValues?: Readonly<Record<string, ConfigValue>>, options?: Partial<ConfigManagerOptions>): TestConfigManager;
|
|
58
|
+
//# sourceMappingURL=testConfig.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testConfig.core.d.ts","sourceRoot":"","sources":["../../src/testConfig/testConfig.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAEhC;;OAEG;IACH,GAAG,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAE5D;;OAEG;IACH,GAAG,EAAE,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;IAEzE;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;OAEG;IACH,SAAS,EAAE,MAAM,mBAAmB,CAAC;IAErC;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAM,EACzD,OAAO,GAAE,OAAO,CAAC,oBAAoB,CAAM,GAC1C,iBAAiB,CAiCnB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test configuration manager.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the real ConfigManager with test-friendly defaults
|
|
5
|
+
* for loading configuration in tests.
|
|
6
|
+
*/
|
|
7
|
+
import { ConfigManager } from "@zudojs/config";
|
|
8
|
+
/**
|
|
9
|
+
* Creates a test configuration manager with pre-loaded values.
|
|
10
|
+
*
|
|
11
|
+
* @param initialValues - Optional initial configuration values.
|
|
12
|
+
* @param options - Optional ConfigManager options.
|
|
13
|
+
* @returns A TestConfigManager instance.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const config = createTestConfigManager({
|
|
18
|
+
* "database.host": "localhost",
|
|
19
|
+
* "database.port": 5432,
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* expect(config.get("database.host")).toBe("localhost");
|
|
23
|
+
*
|
|
24
|
+
* await config.dispose();
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function createTestConfigManager(initialValues = {}, options = {}) {
|
|
28
|
+
const manager = new ConfigManager({
|
|
29
|
+
initialValues,
|
|
30
|
+
autoLoad: false,
|
|
31
|
+
...options,
|
|
32
|
+
});
|
|
33
|
+
const set = (key, value) => {
|
|
34
|
+
manager.set(key, value);
|
|
35
|
+
};
|
|
36
|
+
const get = (key) => manager.get(key);
|
|
37
|
+
const load = async () => {
|
|
38
|
+
await manager.load();
|
|
39
|
+
};
|
|
40
|
+
const getStatus = () => manager.getStatus();
|
|
41
|
+
const dispose = async () => {
|
|
42
|
+
await manager.dispose();
|
|
43
|
+
};
|
|
44
|
+
return {
|
|
45
|
+
manager,
|
|
46
|
+
set,
|
|
47
|
+
get,
|
|
48
|
+
load,
|
|
49
|
+
getStatus,
|
|
50
|
+
dispose,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=testConfig.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testConfig.core.js","sourceRoot":"","sources":["../../src/testConfig/testConfig.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA2C/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,uBAAuB,CACrC,aAAa,GAA0C,EAAE,EACzD,OAAO,GAAkC,EAAE;IAE3C,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC;QAChC,aAAa;QACb,QAAQ,EAAE,KAAK;QACf,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,CAAwB,GAAW,EAAE,KAAQ,EAAQ,EAAE;QACjE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CACV,GAAW,EACI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;IAExC,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAwB,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAEjE,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO;QACL,OAAO;QACP,GAAG;QACH,GAAG;QACH,IAAI;QACJ,SAAS;QACT,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test container helpers.
|
|
3
|
+
*
|
|
4
|
+
* Pre-started containers with override support.
|
|
5
|
+
*/
|
|
6
|
+
export { createTestContainer } from "./testContainer.core.js";
|
|
7
|
+
export type { DependencyOverride, TestContainer, TestContainerOptions, } from "./testContainer.core.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testContainer/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,oBAAoB,GACrB,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testContainer/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test container helpers.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the real Zudojs container with test-friendly defaults
|
|
5
|
+
* and override support for dependency injection testing.
|
|
6
|
+
*/
|
|
7
|
+
import type { Container, RegistrationToken } from "@zudojs/container";
|
|
8
|
+
/**
|
|
9
|
+
* A dependency override for test containers.
|
|
10
|
+
*/
|
|
11
|
+
export interface DependencyOverride<T = unknown> {
|
|
12
|
+
readonly token: RegistrationToken<T>;
|
|
13
|
+
readonly useValue: T;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Options for creating a test container.
|
|
17
|
+
*/
|
|
18
|
+
export interface TestContainerOptions {
|
|
19
|
+
readonly overrides?: readonly DependencyOverride[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A test container with convenience methods.
|
|
23
|
+
*/
|
|
24
|
+
export interface TestContainer {
|
|
25
|
+
readonly container: Container;
|
|
26
|
+
/**
|
|
27
|
+
* Resolve a dependency from the container.
|
|
28
|
+
*/
|
|
29
|
+
resolve: <T>(token: RegistrationToken<T>) => T;
|
|
30
|
+
/**
|
|
31
|
+
* Check if a token is registered.
|
|
32
|
+
*/
|
|
33
|
+
has: <T>(token: RegistrationToken<T>) => boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Dispose the container and clean up resources.
|
|
36
|
+
*/
|
|
37
|
+
dispose: () => Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Creates a pre-started test container with optional overrides.
|
|
41
|
+
*
|
|
42
|
+
* @param options - Test container configuration.
|
|
43
|
+
* @returns A TestContainer instance.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* const testContainer = createTestContainer({
|
|
48
|
+
* overrides: [
|
|
49
|
+
* { token: paymentToken, useValue: fakePaymentService },
|
|
50
|
+
* ],
|
|
51
|
+
* });
|
|
52
|
+
*
|
|
53
|
+
* const service = testContainer.resolve(userToken);
|
|
54
|
+
* expect(service).toBeDefined();
|
|
55
|
+
*
|
|
56
|
+
* await testContainer.dispose();
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare function createTestContainer(options?: TestContainerOptions): TestContainer;
|
|
60
|
+
//# sourceMappingURL=testContainer.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testContainer.core.d.ts","sourceRoot":"","sources":["../../src/testContainer/testContainer.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC7C,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B;;OAEG;IACH,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAE/C;;OAEG;IACH,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IAEjD;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAwBf"}
|