50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
DEFAULT_PREVIEW_ZOOM,
|
|
MAXIMUM_PREVIEW_ZOOM,
|
|
MINIMUM_PREVIEW_ZOOM,
|
|
PREVIEW_ZOOM_STORAGE_KEY,
|
|
loadPreviewZoom,
|
|
normalizePreviewZoom,
|
|
parsePreviewZoom,
|
|
savePreviewZoom
|
|
} from "../src/preview-zoom";
|
|
|
|
function createMemoryStorage(initialValue: string | null = null) {
|
|
let value = initialValue;
|
|
return {
|
|
getItem(key: string) {
|
|
return key === PREVIEW_ZOOM_STORAGE_KEY ? value : null;
|
|
},
|
|
setItem(key: string, nextValue: string) {
|
|
if (key === PREVIEW_ZOOM_STORAGE_KEY) {
|
|
value = nextValue;
|
|
}
|
|
},
|
|
read() {
|
|
return value;
|
|
}
|
|
};
|
|
}
|
|
|
|
describe("预览缩放", () => {
|
|
it("默认使用 100%,并限制在 50% 到 400%", () => {
|
|
expect(parsePreviewZoom(null)).toBe(DEFAULT_PREVIEW_ZOOM);
|
|
expect(normalizePreviewZoom(20)).toBe(MINIMUM_PREVIEW_ZOOM);
|
|
expect(normalizePreviewZoom(450)).toBe(MAXIMUM_PREVIEW_ZOOM);
|
|
expect(normalizePreviewZoom(124.6)).toBe(125);
|
|
});
|
|
|
|
it("无效手动输入回退到当前缩放值", () => {
|
|
expect(parsePreviewZoom("", 135)).toBe(135);
|
|
expect(parsePreviewZoom("not-a-number", 135)).toBe(135);
|
|
});
|
|
|
|
it("保存并恢复浏览器缩放偏好", () => {
|
|
const storage = createMemoryStorage();
|
|
savePreviewZoom(145, storage);
|
|
expect(storage.read()).toBe("145");
|
|
expect(loadPreviewZoom(storage)).toBe(145);
|
|
});
|
|
});
|