thu-maic--openmaic
46 行
1.2 KiB
TypeScript
46 行
1.2 KiB
TypeScript
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');
|
|
});
|
|
});
|