mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import {
|
|
FEATURE_BUNDLES,
|
|
getBundleForTool,
|
|
getToolsForBundle,
|
|
PYTHON_SIDECAR_TOOLS,
|
|
TOOL_BUNDLE_MAP,
|
|
} from "@ashim/shared";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
describe("Feature bundles", () => {
|
|
it("every PYTHON_SIDECAR_TOOL maps to exactly one bundle", () => {
|
|
for (const toolId of PYTHON_SIDECAR_TOOLS) {
|
|
const bundle = getBundleForTool(toolId);
|
|
expect(bundle, `${toolId} has no bundle`).toBeDefined();
|
|
}
|
|
});
|
|
|
|
it("getBundleForTool returns null for non-AI tools", () => {
|
|
expect(getBundleForTool("resize")).toBeNull();
|
|
expect(getBundleForTool("crop")).toBeNull();
|
|
});
|
|
|
|
it("getToolsForBundle returns correct tools", () => {
|
|
const tools = getToolsForBundle("background-removal");
|
|
expect(tools).toContain("remove-background");
|
|
expect(tools).toContain("passport-photo");
|
|
expect(tools).not.toContain("upscale");
|
|
});
|
|
|
|
it("all 6 bundles are defined", () => {
|
|
expect(Object.keys(FEATURE_BUNDLES)).toHaveLength(6);
|
|
expect(FEATURE_BUNDLES["background-removal"]).toBeDefined();
|
|
expect(FEATURE_BUNDLES["face-detection"]).toBeDefined();
|
|
expect(FEATURE_BUNDLES["object-eraser-colorize"]).toBeDefined();
|
|
expect(FEATURE_BUNDLES["upscale-enhance"]).toBeDefined();
|
|
expect(FEATURE_BUNDLES["photo-restoration"]).toBeDefined();
|
|
expect(FEATURE_BUNDLES["ocr"]).toBeDefined();
|
|
});
|
|
|
|
it("TOOL_BUNDLE_MAP covers all sidecar tools", () => {
|
|
const mappedTools = Object.keys(TOOL_BUNDLE_MAP);
|
|
for (const toolId of PYTHON_SIDECAR_TOOLS) {
|
|
expect(mappedTools, `${toolId} missing from TOOL_BUNDLE_MAP`).toContain(toolId);
|
|
}
|
|
});
|
|
});
|