1import { scopeThreadRef } from "@t3tools/client-runtime/environment";
2import { EnvironmentId, ThreadId } from "@t3tools/contracts";
3import { describe, expect, it } from "vite-plus/test";
4
5import { registerSettleAndAdvance, settleAndAdvance } from "./settleAndAdvance";
6
7const threadRef = scopeThreadRef(
8 EnvironmentId.make("environment-local"),
9 ThreadId.make("thread-1"),
10);
11
12describe("settleAndAdvance", () => {
13 it("keeps a remounted sidebar's handler when the old one unmounts late", () => {
14 const settledBy: string[] = [];
15 const unregisterOld = registerSettleAndAdvance(() => settledBy.push("old"));
16 const unregisterNew = registerSettleAndAdvance(() => settledBy.push("new"));
17 unregisterOld();
18
19 expect(settleAndAdvance(threadRef)).toBe(true);
20 expect(settledBy).toEqual(["new"]);
21 unregisterNew();
22 expect(settleAndAdvance(threadRef)).toBe(false);
23 });
24});