Files
openmaic/OpenMAIC/packages/@openmaic/generation/test/outline-media.test.ts
2026-08-16 14:58:47 +08:00

43 lines
1.5 KiB
TypeScript

// Behavior-parity coverage for uniquifyMediaElementIds from lib/generation/scene-builder.ts.
import { describe, expect, test } from 'vitest';
import { uniquifyMediaElementIds, type SceneOutline } from '@openmaic/generation';
describe('uniquifyMediaElementIds', () => {
test('replaces colliding generated IDs consistently without mutating the input', () => {
const outlines: SceneOutline[] = [1, 2].map((order) => ({
id: `scene_${order}`,
type: 'slide',
title: `Scene ${order}`,
description: 'Description',
keyPoints: [],
order,
mediaGenerations: [
{ type: 'image', prompt: 'A diagram', elementId: 'gen_img_1' },
{ type: 'video', prompt: 'A clip', elementId: `custom_${order}` },
],
}));
const result = uniquifyMediaElementIds(outlines);
const firstId = result[0]?.mediaGenerations?.[0]?.elementId;
expect(firstId).toMatch(/^gen_img_[A-Za-z0-9_-]{8}$/);
expect(result[1]?.mediaGenerations?.[0]?.elementId).toBe(firstId);
expect(result[0]?.mediaGenerations?.[1]?.elementId).toMatch(/^gen_vid_[A-Za-z0-9_-]{8}$/);
expect(outlines[0]?.mediaGenerations?.[0]?.elementId).toBe('gen_img_1');
});
test('returns the original array when no media IDs exist', () => {
const outlines: SceneOutline[] = [
{
id: 'scene',
type: 'slide',
title: 'Scene',
description: 'Description',
keyPoints: [],
order: 1,
},
];
expect(uniquifyMediaElementIds(outlines)).toBe(outlines);
});
});