Files
ntfy/web/src/app/Prefs.test.js
T
2026-06-29 22:24:04 -04:00

34 lines
1.5 KiB
JavaScript

import { describe, expect, it, vi } from "vitest";
import { Prefs, DATE_FORMAT, TIME_FORMAT, PREF_DEFAULTS } from "./Prefs";
// The module instantiates `new Prefs(db())` at import; stub db() so that doesn't touch IndexedDB.
vi.mock("./db", () => ({ default: () => ({}) }));
// Minimal fake of the Dexie `prefs` table: get() returns a stored {key, value} or undefined.
const fakeDb = (stored) => ({
prefs: {
get: async (key) => (key in stored ? { key, value: stored[key] } : undefined),
put: async () => {},
},
});
describe("Prefs date/time format validation", () => {
it("returns the stored value when it is a known format", async () => {
const prefs = new Prefs(fakeDb({ dateFormat: DATE_FORMAT.ISO8601, timeFormat: TIME_FORMAT.H24 }));
expect(await prefs.dateFormat()).toBe(DATE_FORMAT.ISO8601);
expect(await prefs.timeFormat()).toBe(TIME_FORMAT.H24);
});
it("falls back to the default for an unknown stored value (e.g. synced from a newer client)", async () => {
const prefs = new Prefs(fakeDb({ dateFormat: "newer-client-format", timeFormat: "36h" }));
expect(await prefs.dateFormat()).toBe(PREF_DEFAULTS.dateFormat);
expect(await prefs.timeFormat()).toBe(PREF_DEFAULTS.timeFormat);
});
it("falls back to the default when unset", async () => {
const prefs = new Prefs(fakeDb({}));
expect(await prefs.dateFormat()).toBe(PREF_DEFAULTS.dateFormat);
expect(await prefs.timeFormat()).toBe(PREF_DEFAULTS.timeFormat);
});
});