OpenCut/packages/effects/tests/presets.test.ts

88 lines
2.1 KiB
TypeScript

import { describe, test, expect, beforeEach } from "bun:test";
import {
registerPreset,
getPreset,
hasPreset,
getAllPresets,
getPresetsByCategory,
clearPresets,
registerAllPresets,
getAllBundledPresets,
registerAllEffects,
clearEffects,
hasEffect,
} from "../src";
describe("Preset Registry", () => {
beforeEach(() => {
clearPresets();
});
test("registerPreset + getPreset works", () => {
registerPreset({
type: "test",
name: "Test",
category: "custom",
description: "Test preset",
effects: [{ effectType: "brightness", params: { intensity: 10 } }],
});
expect(hasPreset("test")).toBe(true);
expect(getPreset("test").name).toBe("Test");
});
test("getPreset throws for unknown", () => {
expect(() => getPreset("unknown")).toThrow("Unknown preset: unknown");
});
test("getPresetsByCategory filters correctly", () => {
registerAllPresets();
const instagram = getPresetsByCategory("instagram");
const cinematic = getPresetsByCategory("cinematic");
expect(instagram.length).toBe(6);
expect(cinematic.length).toBe(4);
});
test("clearPresets removes all", () => {
registerAllPresets();
expect(getAllPresets().length).toBeGreaterThan(0);
clearPresets();
expect(getAllPresets()).toHaveLength(0);
});
});
describe("Bundled Presets", () => {
beforeEach(() => {
clearPresets();
clearEffects();
});
test("has 12 total presets", () => {
const all = getAllBundledPresets();
expect(all).toHaveLength(12);
});
test("all presets reference valid effect types", () => {
registerAllEffects();
const presets = getAllBundledPresets();
for (const preset of presets) {
for (const entry of preset.effects) {
expect(hasEffect({ effectType: entry.effectType })).toBe(true);
}
}
});
test("each preset has 2-5 effects", () => {
for (const preset of getAllBundledPresets()) {
expect(preset.effects.length).toBeGreaterThanOrEqual(2);
expect(preset.effects.length).toBeLessThanOrEqual(5);
}
});
test("registerAllPresets skips duplicates", () => {
registerAllPresets();
const count1 = getAllPresets().length;
registerAllPresets();
expect(getAllPresets().length).toBe(count1);
});
});