import { describe, expect, test } from 'vitest'; import { replaceMediaPlaceholders } from '@/lib/server/classroom-media-generation'; import type { Scene } from '@/lib/types/stage'; function slideScene( elements: Array<{ id: string; type: string; src?: string; mediaRef?: string }>, ) { return { id: 'scene_1', stageId: 'stage_1', type: 'slide', title: 'Scene', order: 1, content: { type: 'slide', canvas: { id: 'canvas_1', elements, }, }, } as unknown as Scene; } describe('classroom media placeholder replacement', () => { test('preserves direct video src when mediaRef is also present', () => { const scene = slideScene([ { id: 'video_1', type: 'video', src: 'https://example.com/direct.mp4', mediaRef: 'gen_vid_real123', }, ]); replaceMediaPlaceholders([scene], { gen_vid_real123: 'https://cdn.example.com/generated.mp4', }); const content = scene.content as { canvas: { elements: Array<{ src?: string }> }; }; const video = content.canvas.elements[0]; expect(video.src).toBe('https://example.com/direct.mp4'); }); });