|
|
@@ -204,6 +204,27 @@ await check("busy 期间挂起,回安全态立刻补刷一次", async () => {
|
|
|
dispose();
|
|
|
});
|
|
|
|
|
|
+await check("合并窗口内进入 busy:窗口到期不许刷,回安全态补刷一次", async () => {
|
|
|
+ const stream = fakeStream();
|
|
|
+ const busy = ref(false);
|
|
|
+ let calls = 0;
|
|
|
+ const dispose = useLiveRefetch(["lsy_order"], () => { calls += 1; }, { ...OPTS, stream, busy });
|
|
|
+
|
|
|
+ stream.emit("lsy_order"); // 信号先到:窗口开始计时(此刻 busy = false)
|
|
|
+ busy.value = true; // 用户在窗口还没走完时开始操作
|
|
|
+ await nextTick();
|
|
|
+ await sleep(20); // 窗口到期
|
|
|
+ assert.equal(calls, 0, "已经起计时的窗口必须随 busy 一起撤掉:列表不许在用户操作期间跳");
|
|
|
+
|
|
|
+ busy.value = false;
|
|
|
+ await nextTick();
|
|
|
+ assert.equal(calls, 1, "那一帧没刷成,回安全态要补上(不能丢)");
|
|
|
+
|
|
|
+ await sleep(20);
|
|
|
+ assert.equal(calls, 1, "补刷只做一次");
|
|
|
+ dispose();
|
|
|
+});
|
|
|
+
|
|
|
await check("busy 翻转但期间没有信号 → 一次都不刷", async () => {
|
|
|
const stream = fakeStream();
|
|
|
const busy = ref(false);
|