1
0
mirror of https://github.com/jcwimer/wrestlingApp synced 2026-04-11 16:01:56 +00:00
Files
wrestlingdev.com/test/javascript/match_state/serializers.test.js

74 lines
2.4 KiB
JavaScript

import { describe, expect, it } from "vitest"
import { getMatchStateConfig } from "match-state-config"
import { buildInitialState } from "match-state-engine"
import {
buildMatchMetadata,
buildPersistedState,
buildStorageKey,
restorePersistedState
} from "match-state-serializers"
describe("match state serializers", () => {
it("builds a tournament and bout scoped storage key", () => {
expect(buildStorageKey(12, 1007)).toBe("match-state:12:1007")
})
it("builds match metadata for persistence and scoreboard payloads", () => {
expect(buildMatchMetadata({
tournamentId: 1,
boutNumber: 1001,
weightLabel: "106",
ruleset: "folkstyle_usa",
bracketPosition: "Bracket Round of 64",
w1Name: "W1",
w2Name: "W2",
w1School: "School 1",
w2School: "School 2"
})).toEqual({
tournamentId: 1,
boutNumber: 1001,
weightLabel: "106",
ruleset: "folkstyle_usa",
bracketPosition: "Bracket Round of 64",
w1Name: "W1",
w2Name: "W2",
w1School: "School 1",
w2School: "School 2"
})
})
it("builds persisted state with metadata", () => {
const config = getMatchStateConfig("folkstyle_usa", "Bracket Round of 64")
const state = buildInitialState(config)
state.participantScores = { w1: 7, w2: 3 }
const persisted = buildPersistedState(state, { tournamentId: 1, boutNumber: 1001 })
expect(persisted.participantScores).toEqual({ w1: 7, w2: 3 })
expect(persisted.metadata).toEqual({ tournamentId: 1, boutNumber: 1001 })
})
it("restores persisted state over initial defaults", () => {
const config = getMatchStateConfig("folkstyle_usa", "Bracket Round of 64")
const restored = restorePersistedState(config, {
participantScores: { w1: 4, w2: 1 },
assignment: { w1: "red", w2: "green" },
clocksByPhase: {
period_1: { remainingSeconds: 30 }
},
timers: {
w1: {
injury: { remainingSeconds: 50 }
}
}
})
expect(restored.participantScores).toEqual({ w1: 4, w2: 1 })
expect(restored.assignment).toEqual({ w1: "red", w2: "green" })
expect(restored.clocksByPhase.period_1.remainingSeconds).toBe(30)
expect(restored.clocksByPhase.period_1.durationSeconds).toBe(120)
expect(restored.timers.w1.injury.remainingSeconds).toBe(50)
expect(restored.timers.w2.injury.remainingSeconds).toBe(90)
})
})