Files
AstrBot/dashboard/tests/extensionPreferenceStorage.test.mjs
2026-05-08 06:57:08 +08:00

58 lines
1.9 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import {
PIN_UPDATES_ON_TOP_STORAGE_KEY,
readBooleanPreference,
writeBooleanPreference,
} from "../src/views/extension/extensionPreferenceStorage.mjs";
test("readBooleanPreference returns fallback when storage access throws", () => {
const storage = {
getItem() {
throw new Error("SecurityError");
},
};
assert.equal(readBooleanPreference(PIN_UPDATES_ON_TOP_STORAGE_KEY, true, storage), true);
});
test("readBooleanPreference parses stored boolean strings", () => {
const storage = {
getItem(key) {
return key === PIN_UPDATES_ON_TOP_STORAGE_KEY ? "false" : null;
},
};
assert.equal(readBooleanPreference(PIN_UPDATES_ON_TOP_STORAGE_KEY, true, storage), false);
});
test("readBooleanPreference treats explicit null storage as unavailable", () => {
assert.equal(readBooleanPreference(PIN_UPDATES_ON_TOP_STORAGE_KEY, true, null), true);
});
test("readBooleanPreference treats invalid storage overrides as unavailable", () => {
assert.equal(readBooleanPreference(PIN_UPDATES_ON_TOP_STORAGE_KEY, true, {}), true);
});
test("writeBooleanPreference stores boolean strings and swallows storage errors", () => {
const writes = [];
const storage = {
setItem(key, value) {
writes.push([key, value]);
throw new Error("QuotaExceededError");
},
};
assert.doesNotThrow(() => writeBooleanPreference(PIN_UPDATES_ON_TOP_STORAGE_KEY, true, storage));
assert.deepEqual(writes, [[PIN_UPDATES_ON_TOP_STORAGE_KEY, "true"]]);
});
test("writeBooleanPreference ignores explicit null storage", () => {
assert.doesNotThrow(() => writeBooleanPreference(PIN_UPDATES_ON_TOP_STORAGE_KEY, true, null));
});
test("writeBooleanPreference ignores invalid storage overrides", () => {
assert.doesNotThrow(() => writeBooleanPreference(PIN_UPDATES_ON_TOP_STORAGE_KEY, true, {}));
});