Skip to content

Commit ebf2024

Browse files
committed
test(gateway): share deferred test helper
1 parent 1680852 commit ebf2024

4 files changed

Lines changed: 21 additions & 56 deletions

File tree

src/gateway/exec-approval-ios-push.test.ts

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
22
import type { ExecApprovalRequest, ExecApprovalResolved } from "../infra/exec-approvals.js";
3+
import { createDeferred } from "./test/deferred.js";
34

45
const listDevicePairingMock = vi.fn();
56
const loadApnsRegistrationMock = vi.fn();
@@ -10,25 +11,6 @@ const sendApnsExecApprovalAlertMock = vi.fn();
1011
const sendApnsExecApprovalResolvedWakeMock = vi.fn();
1112
let createExecApprovalIosPushDelivery: typeof import("./exec-approval-ios-push.js").createExecApprovalIosPushDelivery;
1213

13-
type Deferred<T> = {
14-
promise: Promise<T>;
15-
resolve: (value: T) => void;
16-
reject: (error: unknown) => void;
17-
};
18-
19-
function createDeferred<T>(): Deferred<T> {
20-
let resolve: ((value: T) => void) | undefined;
21-
let reject: ((error: unknown) => void) | undefined;
22-
const promise = new Promise<T>((resolvePromise, rejectPromise) => {
23-
resolve = resolvePromise;
24-
reject = rejectPromise;
25-
});
26-
if (!resolve || !reject) {
27-
throw new Error("Expected deferred callbacks to be initialized");
28-
}
29-
return { promise, resolve, reject };
30-
}
31-
3214
function apnsRegistration(nodeId = "ios-device-1") {
3315
return {
3416
nodeId,

src/gateway/server-methods/models.test.ts

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,9 @@ import { ErrorCodes } from "../../../packages/gateway-protocol/src/index.js";
33
import type { OpenClawConfig } from "../../config/types.openclaw.js";
44
import { expectGatewayErrorResponse } from "./gateway-response.test-helpers.js";
55
import { modelsHandlers } from "./models.js";
6+
import { createDeferred } from "../test/deferred.js";
67
import type { RespondFn } from "./types.js";
78

8-
type Deferred<T> = {
9-
promise: Promise<T>;
10-
resolve: (value: T) => void;
11-
reject: (error: unknown) => void;
12-
};
13-
14-
function createDeferred<T>(): Deferred<T> {
15-
let resolve: ((value: T) => void) | undefined;
16-
let reject: ((error: unknown) => void) | undefined;
17-
const promise = new Promise<T>((resolvePromise, rejectPromise) => {
18-
resolve = resolvePromise;
19-
reject = rejectPromise;
20-
});
21-
if (!resolve || !reject) {
22-
throw new Error("Expected deferred callbacks to be initialized");
23-
}
24-
return { promise, resolve, reject };
25-
}
26-
279
function requestModelsList(params: {
2810
view: "configured" | "all";
2911
respond?: ReturnType<typeof vi.fn>;

src/gateway/server-model-catalog.test.ts

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,12 @@ import {
66
loadGatewayModelCatalog,
77
markGatewayModelCatalogStaleForReload,
88
} from "./server-model-catalog.js";
9+
import { createDeferred } from "./test/deferred.js";
910

10-
type Deferred<T> = {
11-
promise: Promise<T>;
12-
resolve: (value: T) => void;
13-
reject: (error: unknown) => void;
14-
};
1511
type LoadModelCatalogForTest = NonNullable<
1612
NonNullable<Parameters<typeof loadGatewayModelCatalog>[0]>["loadModelCatalog"]
1713
>;
1814

19-
function createDeferred<T>(): Deferred<T> {
20-
let resolve: ((value: T) => void) | undefined;
21-
let reject: ((error: unknown) => void) | undefined;
22-
const promise = new Promise<T>((resolvePromise, rejectPromise) => {
23-
resolve = resolvePromise;
24-
reject = rejectPromise;
25-
});
26-
if (!resolve || !reject) {
27-
throw new Error("Expected deferred callbacks to be initialized");
28-
}
29-
return { promise, resolve, reject };
30-
}
31-
3215
function model(id: string): GatewayModelChoice {
3316
return { id, name: id, provider: "openai" } as GatewayModelChoice;
3417
}

src/gateway/test/deferred.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
export type Deferred<T> = {
2+
promise: Promise<T>;
3+
resolve: (value: T) => void;
4+
reject: (error: unknown) => void;
5+
};
6+
7+
export function createDeferred<T>(): Deferred<T> {
8+
let resolve: ((value: T) => void) | undefined;
9+
let reject: ((error: unknown) => void) | undefined;
10+
const promise = new Promise<T>((resolvePromise, rejectPromise) => {
11+
resolve = resolvePromise;
12+
reject = rejectPromise;
13+
});
14+
if (!resolve || !reject) {
15+
throw new Error("Expected deferred callbacks to be initialized");
16+
}
17+
return { promise, resolve, reject };
18+
}

0 commit comments

Comments
 (0)