Add 22 test files covering imager, soundtracks, browser-headers, source-keys (figure/pet/effect), effect-source, plus catalog-translations, catalog-layouts, client-translation-files, translations-utils, and various admin/services/helpers modules. Total test count increases by 120+.
79 lines
2.4 KiB
TypeScript
79 lines
2.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
getBaseClassname,
|
|
getHabboCdnIconUrl,
|
|
getIconFileName,
|
|
getLocalIconUrl,
|
|
getNitroFileName,
|
|
getSafeClassnameStem,
|
|
getSwfFileName,
|
|
isValidClassname,
|
|
normalizeClassname,
|
|
} from "./classname";
|
|
|
|
describe("getBaseClassname", () => {
|
|
it("strips the * suffix", () => {
|
|
expect(getBaseClassname("chair_basic*")).toBe("chair_basic");
|
|
});
|
|
it("returns the classname unchanged when no * is present", () => {
|
|
expect(getBaseClassname("chair_basic")).toBe("chair_basic");
|
|
});
|
|
});
|
|
|
|
describe("getSafeClassnameStem", () => {
|
|
it("replaces * with underscore", () => {
|
|
expect(getSafeClassnameStem("wall_plant*")).toBe("wall_plant_");
|
|
});
|
|
it("leaves plain classnames untouched", () => {
|
|
expect(getSafeClassnameStem("lamp_floor")).toBe("lamp_floor");
|
|
});
|
|
});
|
|
|
|
describe("file name helpers", () => {
|
|
it("builds icon file names from the safe stem", () => {
|
|
expect(getIconFileName("sofa_blue*")).toBe("sofa_blue__icon.png");
|
|
});
|
|
it("builds swf file names from the base classname", () => {
|
|
expect(getSwfFileName("sofa_blue*")).toBe("sofa_blue.swf");
|
|
});
|
|
it("builds nitro file names from the base classname", () => {
|
|
expect(getNitroFileName("sofa_blue*")).toBe("sofa_blue.nitro");
|
|
});
|
|
});
|
|
|
|
describe("normalizeClassname", () => {
|
|
it("trims and lowercases", () => {
|
|
expect(normalizeClassname(" Chair_Basic ")).toBe("chair_basic");
|
|
});
|
|
});
|
|
|
|
describe("isValidClassname", () => {
|
|
it("accepts lowercase letters, digits and allowed symbols", () => {
|
|
expect(isValidClassname("chair_basic")).toBe(true);
|
|
expect(isValidClassname("sofa*")).toBe(true);
|
|
expect(isValidClassname("wall.part-1")).toBe(true);
|
|
});
|
|
it("rejects uppercase, spaces and invalid characters", () => {
|
|
expect(isValidClassname("Chair")).toBe(false);
|
|
expect(isValidClassname("sofa basic")).toBe(false);
|
|
expect(isValidClassname("sofa/basic")).toBe(false);
|
|
expect(isValidClassname("")).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("icon URLs", () => {
|
|
it("builds a local icon URL with encoding", () => {
|
|
expect(getLocalIconUrl("sofa_blue")).toBe(
|
|
"/swf/dcr/hof_furni/icons/sofa_blue_icon.png",
|
|
);
|
|
expect(getLocalIconUrl("wall*")).toBe(
|
|
"/swf/dcr/hof_furni/icons/wall__icon.png",
|
|
);
|
|
});
|
|
it("builds a Habbo CDN icon URL with revision and base classname", () => {
|
|
expect(getHabboCdnIconUrl("sofa_blue*", 567)).toBe(
|
|
"https://images.habbo.com/dcr/hof_furni/567/sofa_blue_icon.png",
|
|
);
|
|
});
|
|
});
|