1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
import { describe, expect, test } from "bun:test";
import { transformProjectV31ToV32 } from "../transformers/v31-to-v32";
import { asRecord, asRecordArray } from "./helpers";
describe("V31 to V32 Migration", () => {
test("stamps a v31 project as v32 without changing its content", () => {
const result = transformProjectV31ToV32({
project: {
id: "project-v31",
version: 31,
metadata: { id: "project-v31", name: "My project" },
scenes: [
{
id: "scene-1",
tracks: {
main: {
id: "track-1",
type: "video",
elements: [{ id: "elem-1", type: "video", mediaId: "media-1" }],
},
overlay: [],
audio: [],
},
},
],
},
});
expect(result.skipped).toBe(false);
expect(result.project.version).toBe(32);
const scene = asRecordArray(result.project.scenes)[0];
const main = asRecord(asRecord(scene.tracks).main);
const element = asRecordArray(main.elements)[0];
expect(element).toMatchObject({
id: "elem-1",
type: "video",
mediaId: "media-1",
});
expect(asRecord(result.project.metadata).name).toBe("My project");
});
test("skips a project that is already v32", () => {
const project = { id: "p1", version: 32, scenes: [] };
const result = transformProjectV31ToV32({ project });
expect(result.skipped).toBe(true);
expect(result.reason).toBe("already v32");
expect(result.project).toBe(project);
});
test("skips a project that is not v31", () => {
const project = { id: "p1", version: 30, scenes: [] };
const result = transformProjectV31ToV32({ project });
expect(result.skipped).toBe(true);
expect(result.reason).toBe("not v31");
expect(result.project).toBe(project);
});
test("skips a project without an id", () => {
const project = { version: 31, scenes: [] };
const result = transformProjectV31ToV32({ project });
expect(result.skipped).toBe(true);
expect(result.reason).toBe("no project id");
expect(result.project).toBe(project);
});
});
|