chore: establish learning module baseline
This commit is contained in:
commit
2d04197f3f
2409 files changed
+533050
No files matched your search
@@ -0,0 +1,85 @@
|
||||
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');
|
||||
});
|
||||
|
||||
test('preserves an author-supplied non-URL src when mediaRef is also present', () => {
|
||||
const scene = slideScene([
|
||||
{
|
||||
id: 'video_1',
|
||||
type: 'video',
|
||||
src: 'lesson-intro.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 }> };
|
||||
};
|
||||
expect(content.canvas.elements[0].src).toBe('lesson-intro.mp4');
|
||||
});
|
||||
|
||||
test('does not treat an image placeholder as the video-manifest overwrite guard', () => {
|
||||
const scene = slideScene([
|
||||
{
|
||||
id: 'video_1',
|
||||
type: 'video',
|
||||
src: 'gen_img_preview123',
|
||||
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 }> };
|
||||
};
|
||||
expect(content.canvas.elements[0].src).toBe('gen_img_preview123');
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user