test: dedupe agent tests and session helpers

This commit is contained in:
Peter Steinberger
2026-02-22 17:11:17 +00:00
parent 415686244a
commit ad1072842e
31 changed files with 1021 additions and 1109 deletions

View File

@@ -34,26 +34,22 @@ describe("compaction retry integration", () => {
model: "claude-3-opus",
} as unknown as NonNullable<ExtensionContext["model"]>;
const invokeGenerateSummary = (signal = new AbortController().signal) =>
mockGenerateSummary(testMessages, testModel, 1000, "test-api-key", signal);
const runSummaryRetry = (options: Parameters<typeof retryAsync>[1]) =>
retryAsync(() => invokeGenerateSummary(), options);
it("should successfully call generateSummary with retry wrapper", async () => {
mockGenerateSummary.mockResolvedValueOnce("Test summary");
const result = await retryAsync(
() =>
mockGenerateSummary(
testMessages,
testModel,
1000,
"test-api-key",
new AbortController().signal,
),
{
attempts: 3,
minDelayMs: 500,
maxDelayMs: 5000,
jitter: 0.2,
label: "compaction/generateSummary",
},
);
const result = await runSummaryRetry({
attempts: 3,
minDelayMs: 500,
maxDelayMs: 5000,
jitter: 0.2,
label: "compaction/generateSummary",
});
expect(result).toBe("Test summary");
expect(mockGenerateSummary).toHaveBeenCalledTimes(1);
@@ -64,22 +60,12 @@ describe("compaction retry integration", () => {
.mockRejectedValueOnce(new Error("Network timeout"))
.mockResolvedValueOnce("Success after retry");
const result = await retryAsync(
() =>
mockGenerateSummary(
testMessages,
testModel,
1000,
"test-api-key",
new AbortController().signal,
),
{
attempts: 3,
minDelayMs: 0,
maxDelayMs: 0,
label: "compaction/generateSummary",
},
);
const result = await runSummaryRetry({
attempts: 3,
minDelayMs: 0,
maxDelayMs: 0,
label: "compaction/generateSummary",
});
expect(result).toBe("Success after retry");
expect(mockGenerateSummary).toHaveBeenCalledTimes(2);
@@ -93,22 +79,12 @@ describe("compaction retry integration", () => {
mockGenerateSummary.mockRejectedValueOnce(abortErr);
await expect(
retryAsync(
() =>
mockGenerateSummary(
testMessages,
testModel,
1000,
"test-api-key",
new AbortController().signal,
),
{
attempts: 3,
minDelayMs: 0,
label: "compaction/generateSummary",
shouldRetry: (err: unknown) => !(err instanceof Error && err.name === "AbortError"),
},
),
retryAsync(() => invokeGenerateSummary(), {
attempts: 3,
minDelayMs: 0,
label: "compaction/generateSummary",
shouldRetry: (err: unknown) => !(err instanceof Error && err.name === "AbortError"),
}),
).rejects.toThrow("aborted");
// Should NOT retry on user cancellation (AbortError filtered by shouldRetry)
@@ -119,22 +95,12 @@ describe("compaction retry integration", () => {
mockGenerateSummary.mockRejectedValue(new Error("Persistent API error"));
await expect(
retryAsync(
() =>
mockGenerateSummary(
testMessages,
testModel,
1000,
"test-api-key",
new AbortController().signal,
),
{
attempts: 3,
minDelayMs: 0,
maxDelayMs: 0,
label: "compaction/generateSummary",
},
),
runSummaryRetry({
attempts: 3,
minDelayMs: 0,
maxDelayMs: 0,
label: "compaction/generateSummary",
}),
).rejects.toThrow("Persistent API error");
expect(mockGenerateSummary).toHaveBeenCalledTimes(3);
@@ -149,24 +115,14 @@ describe("compaction retry integration", () => {
.mockResolvedValueOnce("Success on 3rd attempt");
const delays: number[] = [];
const promise = retryAsync(
() =>
mockGenerateSummary(
testMessages,
testModel,
1000,
"test-api-key",
new AbortController().signal,
),
{
attempts: 3,
minDelayMs: 500,
maxDelayMs: 5000,
jitter: 0,
label: "compaction/generateSummary",
onRetry: (info) => delays.push(info.delayMs),
},
);
const promise = runSummaryRetry({
attempts: 3,
minDelayMs: 500,
maxDelayMs: 5000,
jitter: 0,
label: "compaction/generateSummary",
onRetry: (info) => delays.push(info.delayMs),
});
await vi.runAllTimersAsync();
const result = await promise;