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:
1 parent
11e8b06bf8
commit
82e8448f26
25 files changed
+1400
-304
No files matched your search
@@ -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",
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user