88 lines
2.1 KiB
TypeScript
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);
|
|
});
|
|
});
|