79 lines
2.4 KiB
TypeScript
79 lines
2.4 KiB
TypeScript
import { describe, expect, it } from "@suaveplan/testing/runner";
|
|
import { DATE_FORMAT_PRESETS, PRESET_MAP, resolvePreset } from "./presets.js";
|
|
|
|
describe("PRESET_MAP", () => {
|
|
it("contains all 8 entries", { timeout: 5000 }, () => {
|
|
const keys = Object.keys(PRESET_MAP).sort();
|
|
expect(keys).toEqual(
|
|
[
|
|
"date-long",
|
|
"date-short",
|
|
"full",
|
|
"long",
|
|
"medium",
|
|
"short",
|
|
"time-long",
|
|
"time-short",
|
|
].sort()
|
|
);
|
|
});
|
|
|
|
it("short includes year, month, day, hour, minute", {
|
|
timeout: 5000,
|
|
}, () => {
|
|
expect(PRESET_MAP.short).toMatchObject({
|
|
year: "numeric",
|
|
month: "numeric",
|
|
day: "numeric",
|
|
hour: "numeric",
|
|
minute: "numeric",
|
|
});
|
|
});
|
|
|
|
it("full includes weekday + timeZoneName long", { timeout: 5000 }, () => {
|
|
expect(PRESET_MAP.full).toMatchObject({
|
|
weekday: "long",
|
|
timeZoneName: "long",
|
|
});
|
|
});
|
|
|
|
it("date-short omits time fields", { timeout: 5000 }, () => {
|
|
const keys = Object.keys(PRESET_MAP["date-short"]);
|
|
expect(keys).not.toContain("hour");
|
|
expect(keys).not.toContain("minute");
|
|
});
|
|
});
|
|
|
|
describe("DATE_FORMAT_PRESETS", () => {
|
|
it("lists all 8 preset names", { timeout: 5000 }, () => {
|
|
expect(DATE_FORMAT_PRESETS).toHaveLength(8);
|
|
});
|
|
});
|
|
|
|
describe("resolvePreset", () => {
|
|
it("returns undefined for undefined options", { timeout: 5000 }, () => {
|
|
expect(resolvePreset()).toBeUndefined();
|
|
});
|
|
|
|
it("returns rest options when no preset present", { timeout: 5000 }, () => {
|
|
const r = resolvePreset({ year: "numeric" });
|
|
expect(r).toMatchObject({ year: "numeric" });
|
|
});
|
|
|
|
it("merges preset map with rest options", { timeout: 5000 }, () => {
|
|
const r = resolvePreset({ preset: "short", month: "long" });
|
|
expect(r).toMatchObject({
|
|
year: "numeric",
|
|
month: "long",
|
|
day: "numeric",
|
|
hour: "numeric",
|
|
minute: "numeric",
|
|
});
|
|
});
|
|
|
|
it("strips locale from rest options", { timeout: 5000 }, () => {
|
|
const r = resolvePreset({ preset: "short", locale: "en-GB" });
|
|
expect(r).not.toHaveProperty("locale");
|
|
});
|
|
});
|