Files
jamoke/src/lib/server/test/GameData.spec.ts

54 lines
1.2 KiB
TypeScript

import { describe, it } from "vitest";
import { type GameData, isGameData } from "$lib/GameData";
import { equal, ok } from "node:assert/strict";
import { createId, idFromString, stringFromId } from "$lib/Id";
describe("GameData", () => {
const idString = stringFromId(createId());
describe("isGameData", () => {
it("rejects a malformed object", () => {
let data: unknown = {
players: [idFromString(idString), idString],
isStarted: false,
state: {},
};
equal(isGameData(data), false);
data = {
players: [idFromString(idString)],
isStarted: null,
state: {},
};
equal(isGameData(data), false);
data = {
players: [idFromString(idString)],
isStarted: false,
};
equal(isGameData(data), false);
});
it("rejects an object with extra properties", () => {
const data: GameData & { extra: boolean } = {
players: [idFromString(idString)],
isStarted: false,
state: {},
extra: true,
};
equal(isGameData(data), false);
});
it("should accept a proper GameData object", () => {
const data: GameData = {
players: [idFromString(idString)],
state: {},
isStarted: false,
};
ok(isGameData(data));
});
});
});