chore: establish learning module baseline
This commit is contained in:
commit
2d04197f3f
2409 files changed
+533050
No files matched your search
@@ -0,0 +1,110 @@
|
||||
import { describe, expect, test } from 'vitest';
|
||||
import {
|
||||
buildVideoManifestFromOutlines,
|
||||
getVideoMediaRefForElement,
|
||||
} from '@/lib/media/video-manifest';
|
||||
import type { SceneOutline } from '@/lib/types/generation';
|
||||
|
||||
describe('video manifest', () => {
|
||||
test('collects only generated video requests from outlines', () => {
|
||||
const outlines: SceneOutline[] = [
|
||||
{
|
||||
id: 'scene_1',
|
||||
type: 'slide',
|
||||
title: 'Motion',
|
||||
description: 'Explain a motion concept',
|
||||
keyPoints: ['motion'],
|
||||
order: 1,
|
||||
mediaGenerations: [
|
||||
{
|
||||
type: 'image',
|
||||
elementId: 'gen_img_abc123',
|
||||
prompt: 'A still diagram',
|
||||
aspectRatio: '16:9',
|
||||
},
|
||||
{
|
||||
type: 'video',
|
||||
elementId: 'gen_vid_unique1',
|
||||
prompt: 'A short animation of the motion concept',
|
||||
aspectRatio: '16:9',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'scene_2',
|
||||
type: 'slide',
|
||||
title: 'No media',
|
||||
description: 'Explain without media',
|
||||
keyPoints: ['text only'],
|
||||
order: 2,
|
||||
},
|
||||
];
|
||||
|
||||
expect(buildVideoManifestFromOutlines(outlines)).toEqual({
|
||||
gen_vid_unique1: {
|
||||
type: 'video',
|
||||
prompt: 'A short animation of the motion concept',
|
||||
aspectRatio: '16:9',
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
test('uses mediaRef before legacy placeholder src when resolving video references', () => {
|
||||
expect(
|
||||
getVideoMediaRefForElement({
|
||||
id: 'video_1',
|
||||
type: 'video',
|
||||
left: 0,
|
||||
top: 0,
|
||||
width: 100,
|
||||
height: 56,
|
||||
rotate: 0,
|
||||
mediaRef: 'gen_vid_manifest',
|
||||
src: 'gen_vid_legacy',
|
||||
autoplay: false,
|
||||
}),
|
||||
).toBe('gen_vid_manifest');
|
||||
|
||||
expect(
|
||||
getVideoMediaRefForElement({
|
||||
id: 'video_2',
|
||||
type: 'video',
|
||||
left: 0,
|
||||
top: 0,
|
||||
width: 100,
|
||||
height: 56,
|
||||
rotate: 0,
|
||||
src: 'gen_vid_legacy',
|
||||
autoplay: false,
|
||||
}),
|
||||
).toBe('gen_vid_legacy');
|
||||
|
||||
expect(
|
||||
getVideoMediaRefForElement({
|
||||
id: 'video_allocated',
|
||||
type: 'video',
|
||||
left: 0,
|
||||
top: 0,
|
||||
width: 100,
|
||||
height: 56,
|
||||
rotate: 0,
|
||||
src: 'ast_allocated_video',
|
||||
autoplay: false,
|
||||
}),
|
||||
).toBe('ast_allocated_video');
|
||||
|
||||
expect(
|
||||
getVideoMediaRefForElement({
|
||||
id: 'video_3',
|
||||
type: 'video',
|
||||
left: 0,
|
||||
top: 0,
|
||||
width: 100,
|
||||
height: 56,
|
||||
rotate: 0,
|
||||
src: 'https://example.com/video.mp4',
|
||||
autoplay: false,
|
||||
}),
|
||||
).toBeUndefined();
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user