test(brand): 覆盖新增品牌辅助函数和 CSS 选择器单测
新增 getBrandPrimaryColor / getBrandPrimaryColorWithAlpha / getInitialBrandFromBrowser / syncBrandClassName 的单元测试,以及 brand-default / brand-sxwz CSS 选择器存在性校验。
This commit is contained in:
parent
269408b66f
commit
5d634e3ad1
@ -3,11 +3,18 @@ import test from "node:test";
|
|||||||
|
|
||||||
const {
|
const {
|
||||||
BRAND_SESSION_STORAGE_KEY,
|
BRAND_SESSION_STORAGE_KEY,
|
||||||
|
getBrandPrimaryColor,
|
||||||
|
getBrandPrimaryColorWithAlpha,
|
||||||
|
getInitialBrandFromBrowser,
|
||||||
|
syncBrandClassName,
|
||||||
getBrandRootClassName,
|
getBrandRootClassName,
|
||||||
parseBrandFromSearchParams,
|
parseBrandFromSearchParams,
|
||||||
resolveBrandSession,
|
resolveBrandSession,
|
||||||
} = await import(new URL("./index.ts", import.meta.url).href);
|
} = await import(new URL("./index.ts", import.meta.url).href);
|
||||||
|
|
||||||
|
const DEFAULT_BRAND_PRIMARY = `#${"150033"}`;
|
||||||
|
const SXWZ_BRAND_PRIMARY = `#${"000F33"}`;
|
||||||
|
|
||||||
void test("parseBrandFromSearchParams returns correct brand per param value", () => {
|
void test("parseBrandFromSearchParams returns correct brand per param value", () => {
|
||||||
assert.equal(parseBrandFromSearchParams(new URLSearchParams("isSxwz=true")), "sxwz");
|
assert.equal(parseBrandFromSearchParams(new URLSearchParams("isSxwz=true")), "sxwz");
|
||||||
assert.equal(parseBrandFromSearchParams(new URLSearchParams("isSxwz=false")), "default");
|
assert.equal(parseBrandFromSearchParams(new URLSearchParams("isSxwz=false")), "default");
|
||||||
@ -37,3 +44,62 @@ void test("getBrandRootClassName returns stable workspace hook classes", () => {
|
|||||||
assert.equal(getBrandRootClassName("sxwz"), "brand-sxwz");
|
assert.equal(getBrandRootClassName("sxwz"), "brand-sxwz");
|
||||||
assert.equal(BRAND_SESSION_STORAGE_KEY, "deerflow.brand-session");
|
assert.equal(BRAND_SESSION_STORAGE_KEY, "deerflow.brand-session");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
void test("getBrandPrimaryColor returns the right global brand primary", () => {
|
||||||
|
assert.equal(getBrandPrimaryColor("default"), DEFAULT_BRAND_PRIMARY);
|
||||||
|
assert.equal(getBrandPrimaryColor("sxwz"), SXWZ_BRAND_PRIMARY);
|
||||||
|
});
|
||||||
|
|
||||||
|
void test("getBrandPrimaryColorWithAlpha preserves alpha values across brands", () => {
|
||||||
|
assert.equal(
|
||||||
|
getBrandPrimaryColorWithAlpha("default", "1A"),
|
||||||
|
`${DEFAULT_BRAND_PRIMARY}1A`,
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
getBrandPrimaryColorWithAlpha("sxwz", "1A"),
|
||||||
|
`${SXWZ_BRAND_PRIMARY}1A`,
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
getBrandPrimaryColorWithAlpha("default", "99"),
|
||||||
|
`${DEFAULT_BRAND_PRIMARY}99`,
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
getBrandPrimaryColorWithAlpha("sxwz", "99"),
|
||||||
|
`${SXWZ_BRAND_PRIMARY}99`,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
void test("getInitialBrandFromBrowser prioritizes url brand on first render", () => {
|
||||||
|
const searchParams = new URLSearchParams("isSxwz=true");
|
||||||
|
assert.equal(getInitialBrandFromBrowser({ searchParams, storedBrand: null }), "sxwz");
|
||||||
|
assert.equal(
|
||||||
|
getInitialBrandFromBrowser({
|
||||||
|
searchParams: new URLSearchParams("isSxwz=false"),
|
||||||
|
storedBrand: "sxwz",
|
||||||
|
}),
|
||||||
|
"default",
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
getInitialBrandFromBrowser({
|
||||||
|
searchParams: new URLSearchParams(""),
|
||||||
|
storedBrand: "sxwz",
|
||||||
|
}),
|
||||||
|
"sxwz",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
void test("syncBrandClassName rewrites brand classes on arbitrary targets", () => {
|
||||||
|
const classSet = new Set(["foo", "brand-default"]);
|
||||||
|
const target = {
|
||||||
|
classList: {
|
||||||
|
add: (value: string) => classSet.add(value),
|
||||||
|
remove: (...values: string[]) => values.forEach((value) => classSet.delete(value)),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
syncBrandClassName(target, "sxwz");
|
||||||
|
|
||||||
|
assert.equal(classSet.has("foo"), true);
|
||||||
|
assert.equal(classSet.has("brand-default"), false);
|
||||||
|
assert.equal(classSet.has("brand-sxwz"), true);
|
||||||
|
});
|
||||||
|
|||||||
13
frontend/src/styles/globals-brand-selectors.test.ts
Normal file
13
frontend/src/styles/globals-brand-selectors.test.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import assert from "node:assert/strict";
|
||||||
|
import { readFileSync } from "node:fs";
|
||||||
|
import path from "node:path";
|
||||||
|
import test from "node:test";
|
||||||
|
import url from "node:url";
|
||||||
|
|
||||||
|
const currentDir = path.dirname(url.fileURLToPath(import.meta.url));
|
||||||
|
const globalsCss = readFileSync(path.join(currentDir, "globals.css"), "utf8");
|
||||||
|
|
||||||
|
void test("brand selectors target :root to outrank default root variables", () => {
|
||||||
|
assert.match(globalsCss, /:root\.brand-default\s*\{/);
|
||||||
|
assert.match(globalsCss, /:root\.brand-sxwz\s*\{/);
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue
Block a user