mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-16 01:40:15 +08:00
* 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>
76 lines
1.9 KiB
JavaScript
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, {}),
|
|
);
|
|
});
|