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, }); }); });