Files
YschcmsFront/src/__tests__/themeEdit.spec.ts
T

51 lines
2.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, expect, it } from "vitest";
import { resolveEditableTheme } from "@/utils/themeEdit";
/**
* 任务三(2026-09-08):站点编辑弹窗主题归一纯函数。
* 旧行为把「不在皮肤包列表中的主题」静默归一 default,保存即悄悄改写站点换肤;
* 新行为保留原值交服务端拒绝,仅标记告警。
*/
describe("resolveEditableTheme 站点编辑主题归一(任务三)", () => {
it("注册中的主题原值保留且不告警", () => {
expect(resolveEditableTheme("scholar-blue", ["default", "scholar-blue"])).toEqual({
theme: "scholar-blue",
unregistered: false,
});
});
it("docs/20 E:下架主题解析为保留主题 + colorScheme 预设(不误报未注册)", () => {
expect(resolveEditableTheme("classic-red", ["default", "scholar-blue", "campus-glow"])).toEqual({
theme: "default",
unregistered: false,
aliasColorScheme: "classic-red",
});
expect(resolveEditableTheme("poly-blue", ["default", "scholar-blue", "campus-glow"])).toEqual({
theme: "scholar-blue",
unregistered: false,
aliasColorScheme: "poly",
});
});
it("未注册主题保留原值并标记 unregistered(不再归一 default)", () => {
expect(resolveEditableTheme("ghost-theme", ["default", "scholar-blue"])).toEqual({
theme: "ghost-theme",
unregistered: true,
});
});
it("空主题归一 default(站点未选过皮肤的场景)", () => {
expect(resolveEditableTheme(undefined, ["default", "scholar-blue"])).toEqual({
theme: "default",
unregistered: false,
});
});
it("列表为空(加载失败)时保留原值且不误报,交服务端校验兜底", () => {
expect(resolveEditableTheme("mint-breeze", [])).toEqual({
theme: "mint-breeze",
unregistered: false,
});
});
});