test: add unit tests for pure logic modules

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+.
This commit is contained in:
openhands committed 2026-08-07 18:53:59 +02:00
1 parent 11e8b06bf8
commit 82e8448f26
25 files changed
+1400 -304

No files matched your search

+78
View File
@@ -0,0 +1,78 @@
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",
);
});
});