























@@ -3,12 +3,15 @@ import type { ChannelsStatusSnapshot } from "../types.ts";
33import { loadChannels, waitWhatsAppLogin, type ChannelsState } from "./channels.ts";
4455function createDeferred<T>() {
6-let resolve!: (value: T) => void;
7-let reject!: (reason?: unknown) => void;
6+let resolve: ((value: T) => void) | undefined;
7+let reject: ((reason?: unknown) => void) | undefined;
88const promise = new Promise<T>((res, rej) => {
99resolve = res;
1010reject = rej;
1111});
12+if (!resolve || !reject) {
13+throw new Error("Expected deferred callbacks to be initialized");
14+}
1215return { promise, resolve, reject };
1316}
1417@@ -29,14 +32,22 @@ function createState(): ChannelsState {
2932};
3033}
313435+function requireClientRequest(state: ChannelsState) {
36+const request = state.client?.request;
37+if (!request) {
38+throw new Error("Expected channels controller client request");
39+}
40+return vi.mocked(request);
41+}
42+3243describe("channels controller WhatsApp wait", () => {
3344beforeEach(() => {
3445vi.clearAllMocks();
3546});
36473748it("passes the currently displayed QR and replaces it when the login QR rotates", async () => {
3849const state = createState();
39-const request = vi.mocked(state.client!.request);
50+const request = requireClientRequest(state);
4051request.mockResolvedValueOnce({
4152connected: false,
4253message: "QR refreshed. Scan the latest code in WhatsApp → Linked Devices.",
@@ -76,7 +87,7 @@ describe("loadChannels", () => {
7687ts: 2,
7788};
7889const deferred = createDeferred<ChannelsStatusSnapshot | null>();
79-const request = vi.mocked(state.client!.request);
90+const request = requireClientRequest(state);
8091request.mockReturnValueOnce(deferred.promise);
8192state.channelsSnapshot = previous;
8293state.channelsLastSuccess = 10;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。