test(gateway): share deferred test helper

This commit is contained in:
Vincent Koc
2026-06-02 06:53:31 +02:00
parent 16808524cb
commit ebf20241bd
4 changed files with 21 additions and 56 deletions

View File

@@ -1,5 +1,6 @@
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import type { ExecApprovalRequest, ExecApprovalResolved } from "../infra/exec-approvals.js";
import { createDeferred } from "./test/deferred.js";
const listDevicePairingMock = vi.fn();
const loadApnsRegistrationMock = vi.fn();
@@ -10,25 +11,6 @@ const sendApnsExecApprovalAlertMock = vi.fn();
const sendApnsExecApprovalResolvedWakeMock = vi.fn();
let createExecApprovalIosPushDelivery: typeof import("./exec-approval-ios-push.js").createExecApprovalIosPushDelivery;
type Deferred<T> = {
promise: Promise<T>;
resolve: (value: T) => void;
reject: (error: unknown) => void;
};
function createDeferred<T>(): Deferred<T> {
let resolve: ((value: T) => void) | undefined;
let reject: ((error: unknown) => void) | undefined;
const promise = new Promise<T>((resolvePromise, rejectPromise) => {
resolve = resolvePromise;
reject = rejectPromise;
});
if (!resolve || !reject) {
throw new Error("Expected deferred callbacks to be initialized");
}
return { promise, resolve, reject };
}
function apnsRegistration(nodeId = "ios-device-1") {
return {
nodeId,

View File

@@ -3,27 +3,9 @@ import { ErrorCodes } from "../../../packages/gateway-protocol/src/index.js";
import type { OpenClawConfig } from "../../config/types.openclaw.js";
import { expectGatewayErrorResponse } from "./gateway-response.test-helpers.js";
import { modelsHandlers } from "./models.js";
import { createDeferred } from "../test/deferred.js";
import type { RespondFn } from "./types.js";
type Deferred<T> = {
promise: Promise<T>;
resolve: (value: T) => void;
reject: (error: unknown) => void;
};
function createDeferred<T>(): Deferred<T> {
let resolve: ((value: T) => void) | undefined;
let reject: ((error: unknown) => void) | undefined;
const promise = new Promise<T>((resolvePromise, rejectPromise) => {
resolve = resolvePromise;
reject = rejectPromise;
});
if (!resolve || !reject) {
throw new Error("Expected deferred callbacks to be initialized");
}
return { promise, resolve, reject };
}
function requestModelsList(params: {
view: "configured" | "all";
respond?: ReturnType<typeof vi.fn>;

View File

@@ -6,29 +6,12 @@ import {
loadGatewayModelCatalog,
markGatewayModelCatalogStaleForReload,
} from "./server-model-catalog.js";
import { createDeferred } from "./test/deferred.js";
type Deferred<T> = {
promise: Promise<T>;
resolve: (value: T) => void;
reject: (error: unknown) => void;
};
type LoadModelCatalogForTest = NonNullable<
NonNullable<Parameters<typeof loadGatewayModelCatalog>[0]>["loadModelCatalog"]
>;
function createDeferred<T>(): Deferred<T> {
let resolve: ((value: T) => void) | undefined;
let reject: ((error: unknown) => void) | undefined;
const promise = new Promise<T>((resolvePromise, rejectPromise) => {
resolve = resolvePromise;
reject = rejectPromise;
});
if (!resolve || !reject) {
throw new Error("Expected deferred callbacks to be initialized");
}
return { promise, resolve, reject };
}
function model(id: string): GatewayModelChoice {
return { id, name: id, provider: "openai" } as GatewayModelChoice;
}

View File

@@ -0,0 +1,18 @@
export type Deferred<T> = {
promise: Promise<T>;
resolve: (value: T) => void;
reject: (error: unknown) => void;
};
export function createDeferred<T>(): Deferred<T> {
let resolve: ((value: T) => void) | undefined;
let reject: ((error: unknown) => void) | undefined;
const promise = new Promise<T>((resolvePromise, rejectPromise) => {
resolve = resolvePromise;
reject = rejectPromise;
});
if (!resolve || !reject) {
throw new Error("Expected deferred callbacks to be initialized");
}
return { promise, resolve, reject };
}