// Run with: node --test tests/js/ const test = require("node:test"); const assert = require("node:assert/strict"); const { DEFAULT_SETTINGS, normalizeGallerySettings, gridColumnsStyle, LIMIT_OPTIONS, } = require("../../web/js/gallery-settings.js"); test("defaults are a complete, sane settings object", () => { const s = normalizeGallerySettings(null); assert.deepEqual(s, DEFAULT_SETTINGS); assert.equal(s.defaultViewMode, "grid"); assert.equal(s.defaultLimit, 100); assert.equal(s.gridColumns, 8); assert.equal(s.showImageInfo, true); assert.equal(s.sidebarCollapsedByDefault, false); }); test("stored values override defaults and unknown keys are kept", () => { const s = normalizeGallerySettings({ defaultViewMode: "list", defaultLimit: 500, gridColumns: 10, showImageInfo: false, videoLoop: false, extra: 1 }); assert.equal(s.defaultViewMode, "list"); assert.equal(s.defaultLimit, 500); assert.equal(s.gridColumns, 10); assert.equal(s.showImageInfo, false); assert.equal(s.videoLoop, false); assert.equal(s.extra, 1); }); test("invalid stored values fall back to defaults instead of breaking the page", () => { const s = normalizeGallerySettings({ defaultViewMode: "mosaic", defaultLimit: 7, gridColumns: "lots", showImageInfo: "no" }); assert.equal(s.defaultViewMode, "grid"); assert.equal(s.defaultLimit, 100); assert.equal(s.gridColumns, 8); assert.equal(s.showImageInfo, true); }); test("numeric strings from