summaryrefslogtreecommitdiff
path: root/apps/web/src/services/storage/migrations/__tests__/v26-to-v27.test.ts
blob: 5e16e88611eb1e0686e9e57051c4681c1e7210b0 (plain) (blame)
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import { describe, expect, test } from "bun:test";
import { transformProjectV26ToV27 } from "../transformers/v26-to-v27";
import { asRecord, asRecordArray } from "./helpers";

describe("V26 to V27 Migration", () => {
	test("converts custom mask paths from JSON strings to typed point arrays", () => {
		const result = transformProjectV26ToV27({
			project: {
				id: "project-v26-custom-mask",
				version: 26,
				scenes: [
					{
						id: "scene-1",
						tracks: {
							main: {
								id: "track-1",
								type: "video",
								elements: [
									{
										id: "element-1",
										type: "image",
										masks: [
											{
												id: "mask-custom",
												type: "custom",
												params: {
													path: JSON.stringify([
														{
															id: "point-1",
															x: 0,
															y: 0,
															inX: 0,
															inY: 0,
															outX: 0.1,
															outY: 0,
														},
													]),
													closed: false,
												},
											},
											{
												id: "mask-rectangle",
												type: "rectangle",
												params: {
													width: 0.5,
												},
											},
										],
									},
								],
							},
							overlay: [],
							audio: [],
						},
					},
				],
			},
		});

		expect(result.skipped).toBe(false);
		expect(result.project.version).toBe(27);

		const scenes = asRecordArray(result.project.scenes);
		const tracks = asRecord(scenes[0].tracks);
		const mainTrack = asRecord(tracks.main);
		const elements = asRecordArray(mainTrack.elements);
		const masks = asRecordArray(elements[0].masks);
		const customParams = asRecord(masks[0].params);
		const rectangleParams = asRecord(masks[1].params);

		expect(customParams.path).toEqual([
			{
				id: "point-1",
				x: 0,
				y: 0,
				inX: 0,
				inY: 0,
				outX: 0.1,
				outY: 0,
			},
		]);
		expect(rectangleParams.width).toBe(0.5);
	});
});