mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-27 21:07:01 -06:00
test: use immediate for chat refresh race
This commit is contained in:
+10
-20
@@ -179,23 +179,13 @@ function createDeferred<T>() {
|
||||
return { promise, resolve, reject };
|
||||
}
|
||||
|
||||
async function raceWithMacrotask(
|
||||
promise: Promise<unknown>,
|
||||
delayMs: number,
|
||||
): Promise<"resolved" | "pending"> {
|
||||
let timer: NodeJS.Timeout | undefined;
|
||||
try {
|
||||
return await Promise.race([
|
||||
promise.then(() => "resolved" as const),
|
||||
new Promise<"pending">((resolve) => {
|
||||
timer = setTimeout(() => resolve("pending"), delayMs);
|
||||
}),
|
||||
]);
|
||||
} finally {
|
||||
if (timer) {
|
||||
clearTimeout(timer);
|
||||
}
|
||||
}
|
||||
async function raceWithMacrotask(promise: Promise<unknown>): Promise<"resolved" | "pending"> {
|
||||
return await Promise.race([
|
||||
promise.then(() => "resolved" as const),
|
||||
new Promise<"pending">((resolve) => {
|
||||
setImmediate(() => resolve("pending"));
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
describe("refreshChat", () => {
|
||||
@@ -213,7 +203,7 @@ describe("refreshChat", () => {
|
||||
});
|
||||
|
||||
const refresh = refreshChat(host);
|
||||
const outcome = await raceWithMacrotask(refresh, 0);
|
||||
const outcome = await raceWithMacrotask(refresh);
|
||||
|
||||
expect(outcome).toBe("resolved");
|
||||
expect(host.chatLoading).toBe(true);
|
||||
@@ -255,7 +245,7 @@ describe("refreshChat", () => {
|
||||
});
|
||||
|
||||
const refresh = refreshChat(host, { awaitHistory: true, scheduleScroll: false });
|
||||
const pendingOutcome = await raceWithMacrotask(refresh, 0);
|
||||
const pendingOutcome = await raceWithMacrotask(refresh);
|
||||
|
||||
expect(pendingOutcome).toBe("pending");
|
||||
history.resolve({
|
||||
@@ -565,7 +555,7 @@ describe("refreshChat", () => {
|
||||
sessionKey: "main",
|
||||
});
|
||||
|
||||
const outcome = await raceWithMacrotask(refreshChat(host), 20);
|
||||
const outcome = await raceWithMacrotask(refreshChat(host));
|
||||
|
||||
expect(outcome).toBe("resolved");
|
||||
expect(host.chatMessages).toEqual([
|
||||
|
||||
Reference in New Issue
Block a user