



























1-import { beforeEach, describe, expect, it, vi } from "vitest";
1+import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
22import type { GraphThreadMessage } from "./graph-thread.js";
33import {
44resetThreadParentContextCachesForTest,
@@ -95,6 +95,10 @@ describe("fetchParentMessageCached", () => {
9595resetThreadParentContextCachesForTest();
9696});
979798+afterEach(() => {
99+vi.useRealTimers();
100+});
101+98102it("invokes the fetcher on first call", async () => {
99103const mockMsg: GraphThreadMessage = {
100104id: "p1",
@@ -150,21 +154,31 @@ describe("fetchParentMessageCached", () => {
150154151155it("re-fetches after TTL expires", async () => {
152156vi.useFakeTimers();
153-try {
154-const fetcher = vi.fn(async () => ({
155-id: "p1",
156-body: { content: "hi", contentType: "text" },
157-}));
158-159-await fetchParentMessageCached("tok", "g1", "c1", "p1", fetcher);
160-// 5 min TTL: advance just beyond.
161-vi.advanceTimersByTime(5 * 60 * 1000 + 1);
162-await fetchParentMessageCached("tok", "g1", "c1", "p1", fetcher);
163-164-expect(fetcher).toHaveBeenCalledTimes(2);
165-} finally {
166-vi.useRealTimers();
167-}
157+const fetcher = vi.fn(async () => ({
158+id: "p1",
159+body: { content: "hi", contentType: "text" },
160+}));
161+162+await fetchParentMessageCached("tok", "g1", "c1", "p1", fetcher);
163+// 5 min TTL: advance just beyond.
164+vi.advanceTimersByTime(5 * 60 * 1000 + 1);
165+await fetchParentMessageCached("tok", "g1", "c1", "p1", fetcher);
166+167+expect(fetcher).toHaveBeenCalledTimes(2);
168+});
169+170+it("does not cache parent fetches when the expiry would exceed Date range", async () => {
171+vi.useFakeTimers();
172+vi.setSystemTime(new Date(8_640_000_000_000_000));
173+const fetcher = vi.fn(async () => ({
174+id: "p1",
175+body: { content: "hi", contentType: "text" },
176+}));
177+178+await fetchParentMessageCached("tok", "g1", "c1", "p1", fetcher);
179+await fetchParentMessageCached("tok", "g1", "c1", "p1", fetcher);
180+181+expect(fetcher).toHaveBeenCalledTimes(2);
168182});
169183170184it("evicts oldest entries when exceeding the 100-entry cap", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。