30 lines
1.3 KiB
TypeScript
30 lines
1.3 KiB
TypeScript
/**
|
||
* W4 嵌套路径:站点门户 URL 拼接纯函数(方案 §8.3 T-W4-16)。
|
||
* portalUrlOf:站点对象 → 门户地址(path 优先,尾斜杠;path 缺失回退 code 兼容历史数据);
|
||
* previewPortalUrl:上级 path + 编码 → 子站门户地址(parentPath 空 → 单段)。
|
||
*/
|
||
import { describe, expect, it } from "vitest";
|
||
import { portalUrlOf, previewPortalUrl } from "@/utils/sitePath";
|
||
|
||
describe("portalUrlOf(T-W4-16)", () => {
|
||
it("path 优先:嵌套 path 拼单段门户地址 + 尾斜杠", () => {
|
||
expect(portalUrlOf({ path: "sch-3/jdxy", code: "jdxy" })).toBe("/portal/sch-3/jdxy/");
|
||
});
|
||
|
||
it("path 缺失回退 code(历史数据兼容)", () => {
|
||
expect(portalUrlOf({ code: "demo" })).toBe("/portal/demo/");
|
||
expect(portalUrlOf({ path: "", code: "demo" })).toBe("/portal/demo/");
|
||
});
|
||
});
|
||
|
||
describe("previewPortalUrl(T-W4-16)", () => {
|
||
it("上级 path 非空 → 两段嵌套 + 尾斜杠", () => {
|
||
expect(previewPortalUrl("sch-3", "jdxy")).toBe("/portal/sch-3/jdxy/");
|
||
});
|
||
|
||
it("上级 path 空 → 单段(顶层站)", () => {
|
||
expect(previewPortalUrl("", "sch-9")).toBe("/portal/sch-9/");
|
||
expect(previewPortalUrl(undefined, "sch-9")).toBe("/portal/sch-9/");
|
||
});
|
||
});
|