Files
AstrBot/dashboard/tests/extensionPreferenceStorage.test.mjs
千岚之夏 fb16e12c80 feat: 插件有新版本时置顶显示(可开关) (#7665)
* feat: add pinUpdatesOnTop option to always show plugin updates at top

* fix: add missing pinUpdatesOnTop destructuring in InstalledPluginsTab

* fix: address AI review suggestions - add localStorage persistence and increase switch width

* fix: harden extension preference storage

* fix: refine extension preference sorting

* fix: simplify extension preference sorting

* refactor: simplify extension preference storage access

---------

Co-authored-by: Test User <test@test.com>
Co-authored-by: 邹永赫 <1259085392@qq.com>
2026-04-21 09:21:07 +09:00

76 lines
1.9 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
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, {}),
);
});