52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import {
|
|
BOARD_SCALE_STORAGE_KEY,
|
|
colorMarkDescription,
|
|
normalizeBoardScale,
|
|
parseCandidateVerbosity,
|
|
readStoredBoardScale,
|
|
writeStoredBoardScale,
|
|
} from "../../src/state/uiPreferences";
|
|
|
|
describe("UI accessibility preferences", () => {
|
|
it("clamps and snaps persisted board scale safely", () => {
|
|
expect(normalizeBoardScale(1.13)).toBe(1.25);
|
|
expect(normalizeBoardScale(0.1)).toBe(0.75);
|
|
expect(normalizeBoardScale(9)).toBe(2);
|
|
expect(normalizeBoardScale("not a scale")).toBe(1);
|
|
|
|
const storage = { getItem: vi.fn(() => "1.49") };
|
|
expect(readStoredBoardScale(storage)).toBe(1.5);
|
|
expect(storage.getItem).toHaveBeenCalledWith(BOARD_SCALE_STORAGE_KEY);
|
|
|
|
const setItem = vi.fn();
|
|
writeStoredBoardScale(1.74, { setItem });
|
|
expect(setItem).toHaveBeenCalledWith(BOARD_SCALE_STORAGE_KEY, "1.75");
|
|
});
|
|
|
|
it("survives unavailable storage and normalizes announcement settings", () => {
|
|
expect(
|
|
readStoredBoardScale({
|
|
getItem: () => {
|
|
throw new Error("blocked");
|
|
},
|
|
}),
|
|
).toBe(1);
|
|
expect(() =>
|
|
writeStoredBoardScale(1.5, {
|
|
setItem: () => {
|
|
throw new Error("blocked");
|
|
},
|
|
}),
|
|
).not.toThrow();
|
|
expect(parseCandidateVerbosity("concise")).toBe("concise");
|
|
expect(parseCandidateVerbosity("everything")).toBe("detailed");
|
|
});
|
|
|
|
it("gives every colour mark a non-colour identifier", () => {
|
|
expect(colorMarkDescription(1)).toBe("red, diagonal stripes");
|
|
expect(colorMarkDescription(8)).toBe("pink, rings");
|
|
expect(colorMarkDescription(99)).toBe("mark 99");
|
|
});
|
|
});
|