import { describe, expect, it } from "vite-plus/test";import { formatClaudeResumeCompactionQuestion, isClaudeResumeCompactionQuestion,} from "./claudeCompaction.ts";describe("claude resume compaction copy", () => { // The matcher must recognize every question the formatter can produce. // This is the drift guard: rewording one side fails here. it.each([ { ageMinutes: 145, estimatedTokens: 275_123 }, { ageMinutes: 70, estimatedTokens: 100_000 }, { ageMinutes: 59, estimatedTokens: 1_234_567 }, { ageMinutes: 0, estimatedTokens: 0 }, ])("matches its own formatted question (%o)", (input) => { const question = formatClaudeResumeCompactionQuestion(input); expect(isClaudeResumeCompactionQuestion(question)).toBe(true); }); it("formats ages above and below one hour", () => { expect( formatClaudeResumeCompactionQuestion({ ageMinutes: 145, estimatedTokens: 275_123 }), ).toBe("This session is 2h 25m old and uses 275,123 tokens. Compact it before continuing?"); expect(formatClaudeResumeCompactionQuestion({ ageMinutes: 45, estimatedTokens: 1_000 })).toBe( "This session is 45m old and uses 1,000 tokens. Compact it before continuing?", ); }); it("does not match unrelated questions", () => { expect( isClaudeResumeCompactionQuestion("The build cache is large. Compact it before continuing?"), ).toBe(false); });});
import { describe, expect, it } from "vite-plus/test";
import {
formatClaudeResumeCompactionQuestion,
isClaudeResumeCompactionQuestion,
} from "./claudeCompaction.ts";
describe("claude resume compaction copy", () => {
// The matcher must recognize every question the formatter can produce.
// This is the drift guard: rewording one side fails here.
it.each([
{ ageMinutes: 145, estimatedTokens: 275_123 },
{ ageMinutes: 70, estimatedTokens: 100_000 },
{ ageMinutes: 59, estimatedTokens: 1_234_567 },
{ ageMinutes: 0, estimatedTokens: 0 },
])("matches its own formatted question (%o)", (input) => {
const question = formatClaudeResumeCompactionQuestion(input);
expect(isClaudeResumeCompactionQuestion(question)).toBe(true);
});
it("formats ages above and below one hour", () => {
expect(
formatClaudeResumeCompactionQuestion({ ageMinutes: 145, estimatedTokens: 275_123 }),
).toBe("This session is 2h 25m old and uses 275,123 tokens. Compact it before continuing?");
expect(formatClaudeResumeCompactionQuestion({ ageMinutes: 45, estimatedTokens: 1_000 })).toBe(
"This session is 45m old and uses 1,000 tokens. Compact it before continuing?",
);
});
it("does not match unrelated questions", () => {
expect(
isClaudeResumeCompactionQuestion("The build cache is large. Compact it before continuing?"),
).toBe(false);
});
});