Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit dd1440e

Browse files
committedMar 21, 2025··
add tests for data migration
1 parent 627534e commit dd1440e

File tree

2 files changed

+57
-2
lines changed

2 files changed

+57
-2
lines changed
 

‎src/support/migrateLevelState.spec.ts

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import { describe, expect, it } from "vitest";
2+
3+
import {
4+
createBlocks,
5+
createLevelState,
6+
createPlacementColumn
7+
} from "@/game/factories";
8+
9+
import { migrateLevelState } from "./migrateLevelState";
10+
11+
describe(migrateLevelState, () => {
12+
it("returns the same value if it is already up to date", () => {
13+
const value = createLevelState([
14+
createPlacementColumn(4, createBlocks("red", "green", "blue"))
15+
]);
16+
expect(migrateLevelState(value)).toEqual(value);
17+
});
18+
19+
it("returns the an up to date version if version 1 is passed in", () => {
20+
const value = {
21+
colors: ["blue", "green", "red"],
22+
columns: [
23+
{
24+
type: "placement",
25+
locked: false,
26+
columnSize: 4,
27+
blocks: [
28+
{ color: "red", revealed: true },
29+
{ color: "green", revealed: true },
30+
{ color: "blue", revealed: true }
31+
]
32+
}
33+
],
34+
moves: []
35+
} as unknown;
36+
37+
const expectedResult = {
38+
blockTypes: ["blue", "green", "red"],
39+
columns: [
40+
{
41+
type: "placement",
42+
locked: false,
43+
columnSize: 4,
44+
blocks: [
45+
{ blockType: "red", revealed: true },
46+
{ blockType: "green", revealed: true },
47+
{ blockType: "blue", revealed: true }
48+
]
49+
}
50+
],
51+
moves: []
52+
} as unknown;
53+
expect(migrateLevelState(value)).toEqual(expectedResult);
54+
});
55+
});

‎src/support/migrateLevelState.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import type { LevelState } from "@/game/types";
22

33
import { isVersion1, migrateFromVersion1 } from "./migration/levelV1";
44

5-
export const migrateLevelState = (value: LevelState): LevelState => {
5+
export const migrateLevelState = (value: unknown): LevelState => {
66
if (isVersion1(value)) {
77
return migrateFromVersion1(value);
88
}
99

10-
return value;
10+
return value as LevelState;
1111
};

0 commit comments

Comments
 (0)
Please sign in to comment.