Initial Commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import { describe, expect, it } from "@suaveplan/testing/runner";
|
||||
import { TemplateEngine } from "../../engine/TemplateEngine.js";
|
||||
import { createDateTimePlugin } from "./DateTimePlugin.js";
|
||||
|
||||
// Fixed clock: 2024-06-15 09:05:03.007
|
||||
const FIXED_MS = new Date(2024, 5, 15, 9, 5, 3, 7).getTime();
|
||||
const clock = () => FIXED_MS;
|
||||
|
||||
function engine() {
|
||||
return new TemplateEngine().use(createDateTimePlugin({ clock }));
|
||||
}
|
||||
|
||||
describe("createDateTimePlugin", () => {
|
||||
it("formats _date as YYYY-MM-DD", { timeout: 5000 }, () => {
|
||||
expect(engine().parse("{_date}", {})).toBe("2024-06-15");
|
||||
});
|
||||
|
||||
it("formats _date with custom pattern", { timeout: 5000 }, () => {
|
||||
expect(engine().parse("{_date:DD/MM/YYYY}", {})).toBe("15/06/2024");
|
||||
});
|
||||
|
||||
it("formats _time as HH:mm:ss", { timeout: 5000 }, () => {
|
||||
expect(engine().parse("{_time}", {})).toBe("09:05:03");
|
||||
});
|
||||
|
||||
it("formats _time with custom pattern", { timeout: 5000 }, () => {
|
||||
expect(engine().parse("{_time:HH:mm}", {})).toBe("09:05");
|
||||
});
|
||||
|
||||
it("formats _datetime with default pattern", { timeout: 5000 }, () => {
|
||||
expect(engine().parse("{_datetime}", {})).toBe("2024-06-15 09:05:03");
|
||||
});
|
||||
|
||||
it("formats _timestamp in milliseconds", { timeout: 5000 }, () => {
|
||||
expect(engine().parse("{_timestamp}", {})).toBe(String(FIXED_MS));
|
||||
});
|
||||
|
||||
it("formats _timestamp in seconds", { timeout: 5000 }, () => {
|
||||
expect(engine().parse("{_timestamp:s}", {})).toBe(
|
||||
String(Math.floor(FIXED_MS / 1000))
|
||||
);
|
||||
});
|
||||
|
||||
it("uses real Date.now when no clock provided", { timeout: 5000 }, () => {
|
||||
const e = new TemplateEngine().use(createDateTimePlugin());
|
||||
const result = e.parse("{_date}", {});
|
||||
// Should be a valid date string
|
||||
expect(result).toMatch(/^\d{4}-\d{2}-\d{2}$/);
|
||||
});
|
||||
|
||||
it("returns original match for unknown type", { timeout: 5000 }, () => {
|
||||
// The pattern won't match unknown types, this tests the default branch
|
||||
// We inject directly by calling transform
|
||||
const plugin = createDateTimePlugin({ clock });
|
||||
const match = {
|
||||
match: "{_other}",
|
||||
groups: Object.assign(["{_other}", "other", undefined], {
|
||||
index: 0,
|
||||
input: "{_other}",
|
||||
}) as RegExpMatchArray,
|
||||
index: 0,
|
||||
};
|
||||
expect(plugin.transform(match)).toBe("{_other}");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user