Add draft routine defaults and run-time overrides

This commit is contained in:
dotta 2026-04-09 10:19:52 -05:00
parent b4a58ba8a6
commit 5d021583be
18 changed files with 592 additions and 113 deletions

View file

@ -1,7 +1,10 @@
import { describe, expect, it } from "vitest";
import {
BUILTIN_ROUTINE_VARIABLE_NAMES,
extractRoutineVariableNames,
getBuiltinRoutineVariableValues,
interpolateRoutineTemplate,
isBuiltinRoutineVariable,
syncRoutineVariablesWithTemplate,
} from "./routine-variables.js";
@ -40,4 +43,34 @@ describe("routine variable helpers", () => {
}),
).toBe("Review paperclip for high");
});
it("identifies built-in variable names", () => {
expect(isBuiltinRoutineVariable("date")).toBe(true);
expect(isBuiltinRoutineVariable("repo")).toBe(false);
expect(BUILTIN_ROUTINE_VARIABLE_NAMES.has("date")).toBe(true);
});
it("getBuiltinRoutineVariableValues returns date in YYYY-MM-DD format", () => {
const values = getBuiltinRoutineVariableValues();
expect(values.date).toMatch(/^\d{4}-\d{2}-\d{2}$/);
expect(values.date).toBe(new Date().toISOString().slice(0, 10));
});
it("excludes built-in variables from syncRoutineVariablesWithTemplate", () => {
const result = syncRoutineVariablesWithTemplate(
"Daily report for {{date}} — {{repo}}",
[],
);
expect(result).toEqual([
{ name: "repo", label: null, type: "text", defaultValue: null, required: true, options: [] },
]);
});
it("interpolates built-in date variable alongside user variables", () => {
const builtins = getBuiltinRoutineVariableValues();
const allVars = { ...builtins, repo: "paperclip" };
expect(
interpolateRoutineTemplate("Report for {{date}} on {{repo}}", allVars),
).toBe(`Report for ${builtins.date} on paperclip`);
});
});