UNPKG

modaq

Version:

Quiz Bowl Reader using TypeScript, React, and MobX

194 lines 11.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const chai_1 = require("chai"); const AppState_1 = require("src/state/AppState"); require("src/state/Cycle"); const GameState_1 = require("src/state/GameState"); const PacketState_1 = require("src/state/PacketState"); const TeamState_1 = require("src/state/TeamState"); const defaultPacket = new PacketState_1.PacketState(); defaultPacket.setTossups([ new PacketState_1.Tossup("first q", "first a"), new PacketState_1.Tossup("second q", "second a"), new PacketState_1.Tossup("thrid q", "third a"), new PacketState_1.Tossup("fourth q", "fourth a"), new PacketState_1.Tossup("fifth q", "fifth a"), ]); const defaultTeamNames = ["Alpha", "Beta"]; const defaultExistingPlayers = [ new TeamState_1.Player("Alice", defaultTeamNames[0], true), new TeamState_1.Player("Arthur", defaultTeamNames[0], false), new TeamState_1.Player("Bob", defaultTeamNames[1], true), new TeamState_1.Player("Betty", defaultTeamNames[1], false), ]; const defaultInactivePlayer = new TeamState_1.Player("Anna", defaultTeamNames[0], false); function initializeApp() { const gameState = new GameState_1.GameState(); gameState.loadPacket(defaultPacket); gameState.addNewPlayers(defaultExistingPlayers); AppState_1.AppState.resetInstance(); const appState = AppState_1.AppState.instance; appState.game = gameState; appState.game.addNewPlayer(defaultInactivePlayer); return appState; } function assertPlayerJoin(cycle, player) { const joinEvents = cycle.playerJoins; if (joinEvents == undefined) { chai_1.assert.fail("No join events found for this cycle"); } chai_1.expect(joinEvents[0].inPlayer).to.equal(player); } describe("AddInactivePlayerTests", () => { it("addInactivePlayer in first cycle", () => { const appState = initializeApp(); appState.game.addInactivePlayer(defaultInactivePlayer, 0); const firstPlayers = appState.game.getActivePlayers(defaultInactivePlayer.teamName, 0); chai_1.expect(firstPlayers.has(defaultInactivePlayer)).to.be.true; const lastPlayers = appState.game.getActivePlayers(defaultInactivePlayer.teamName, appState.game.cycles.length - 1); chai_1.expect(lastPlayers.has(defaultInactivePlayer)).to.be.true; }); it("addInactivePlayer in second cycle", () => { const appState = initializeApp(); appState.game.addInactivePlayer(defaultInactivePlayer, 1); const beforePlayers = appState.game.getActivePlayers(defaultInactivePlayer.teamName, 0); chai_1.expect(beforePlayers.has(defaultInactivePlayer)).to.be.false; const players = appState.game.getActivePlayers(defaultInactivePlayer.teamName, 1); chai_1.expect(players.has(defaultInactivePlayer)).to.be.true; }); it("addInactivePlayer after they've joined before does nothing", () => { const appState = initializeApp(); appState.game.cycles[0].addPlayerJoins(defaultInactivePlayer); appState.game.addInactivePlayer(defaultInactivePlayer, 1); chai_1.expect(appState.game.cycles[1].playerJoins).to.be.undefined; assertPlayerJoin(appState.game.cycles[0], defaultInactivePlayer); }); it("addInactivePlayer before they've joined replaces joined event", () => { const appState = initializeApp(); appState.game.cycles[2].addPlayerJoins(defaultInactivePlayer); appState.game.addInactivePlayer(defaultInactivePlayer, 1); chai_1.expect(appState.game.cycles[2].playerJoins).to.be.empty; chai_1.expect(appState.game.cycles[2].playerLeaves).to.be.undefined; chai_1.expect(appState.game.cycles[2].subs).to.be.undefined; assertPlayerJoin(appState.game.cycles[1], defaultInactivePlayer); }); it("addInactivePlayer after they've joined and left adds them back", () => { const appState = initializeApp(); appState.game.cycles[0].addPlayerJoins(defaultInactivePlayer); appState.game.cycles[1].addPlayerLeaves(defaultInactivePlayer); appState.game.addInactivePlayer(defaultInactivePlayer, 2); assertPlayerJoin(appState.game.cycles[0], defaultInactivePlayer); assertPlayerJoin(appState.game.cycles[2], defaultInactivePlayer); const firstCyclePlayers = appState.game.getActivePlayers(defaultInactivePlayer.teamName, 0); chai_1.expect(firstCyclePlayers.has(defaultInactivePlayer)).to.be.true; const secondCyclePlayers = appState.game.getActivePlayers(defaultInactivePlayer.teamName, 1); chai_1.expect(secondCyclePlayers.has(defaultInactivePlayer)).to.be.false; const thirdCyclePlayers = appState.game.getActivePlayers(defaultInactivePlayer.teamName, 2); chai_1.expect(thirdCyclePlayers.has(defaultInactivePlayer)).to.be.true; }); it("addInactivePlayer, leave after and then join after still adds the player", () => { const appState = initializeApp(); const playerToLeave = defaultExistingPlayers[0]; appState.game.cycles[3].addPlayerJoins(playerToLeave); appState.game.cycles[2].addPlayerLeaves(playerToLeave); appState.game.addInactivePlayer(playerToLeave, 1); assertPlayerJoin(appState.game.cycles[1], playerToLeave); assertPlayerJoin(appState.game.cycles[3], playerToLeave); const thirdCycleLeaveEvents = appState.game.cycles[2].playerLeaves; if (thirdCycleLeaveEvents == undefined) { chai_1.assert.fail("No leave events found for the third cycle"); } chai_1.expect(thirdCycleLeaveEvents[0].outPlayer).to.equal(playerToLeave); }); it("addInactivePlayer after leave adds the player", () => { const appState = initializeApp(); const playerToLeave = defaultExistingPlayers[0]; appState.game.cycles[1].addPlayerLeaves(playerToLeave); appState.game.addInactivePlayer(playerToLeave, 2); assertPlayerJoin(appState.game.cycles[2], playerToLeave); const secondCycleLeaveEvents = appState.game.cycles[1].playerLeaves; if (secondCycleLeaveEvents == undefined) { chai_1.assert.fail("No leave events found for the second cycle"); } chai_1.expect(secondCycleLeaveEvents[0].outPlayer).to.equal(playerToLeave); }); it("addInactivePlayer but player was already subbed in", () => { const appState = initializeApp(); appState.game.cycles[1].addSwapSubstitution(defaultInactivePlayer, defaultExistingPlayers[0]); appState.game.addInactivePlayer(defaultInactivePlayer, 3); chai_1.expect(appState.game.cycles[3].playerJoins).to.be.undefined; const secondCycleSubEvents = appState.game.cycles[1].subs; if (secondCycleSubEvents == undefined) { chai_1.assert.fail("No sub events found for the second cycle"); } chai_1.expect(secondCycleSubEvents[0].inPlayer).to.equal(defaultInactivePlayer); }); it("addInactivePlayer but player is subbed in later", () => { const appState = initializeApp(); appState.game.cycles[3].addSwapSubstitution(defaultInactivePlayer, defaultExistingPlayers[0]); appState.game.addInactivePlayer(defaultInactivePlayer, 1); assertPlayerJoin(appState.game.cycles[1], defaultInactivePlayer); const fourthCycleSubEvents = appState.game.cycles[3].subs; if (fourthCycleSubEvents == undefined) { chai_1.assert.fail("No sub events found for the fourth cycle"); } chai_1.expect(fourthCycleSubEvents.length).to.equal(1); }); it("addInactivePlayer, player subbed in but then left", () => { const appState = initializeApp(); const player = defaultExistingPlayers[0]; appState.game.cycles[1].addSwapSubstitution(defaultInactivePlayer, player); appState.game.addInactivePlayer(player, 3); assertPlayerJoin(appState.game.cycles[3], player); const secondCycleSubEvents = appState.game.cycles[1].subs; if (secondCycleSubEvents == undefined) { chai_1.assert.fail("No sub events found for the second cycle"); } chai_1.expect(secondCycleSubEvents[0].inPlayer).to.equal(defaultInactivePlayer); chai_1.expect(secondCycleSubEvents[0].outPlayer).to.equal(player); }); it("addInactivePlayer subbed in after they leave", () => { const appState = initializeApp(); appState.game.cycles[3].addSwapSubstitution(defaultInactivePlayer, defaultExistingPlayers[0]); appState.game.cycles[2].addPlayerLeaves(defaultInactivePlayer); appState.game.addInactivePlayer(defaultInactivePlayer, 1); assertPlayerJoin(appState.game.cycles[1], defaultInactivePlayer); const secondCycleSubEvents = appState.game.cycles[3].subs; if (secondCycleSubEvents == undefined) { chai_1.assert.fail("No sub events found for the second cycle"); } chai_1.expect(secondCycleSubEvents[0].inPlayer).to.equal(defaultInactivePlayer); }); it("addInactivePlayer after they were subbed out", () => { const appState = initializeApp(); appState.game.cycles[3].addSwapSubstitution(defaultInactivePlayer, defaultExistingPlayers[0]); appState.game.cycles[2].addPlayerLeaves(defaultInactivePlayer); appState.game.addInactivePlayer(defaultInactivePlayer, 1); assertPlayerJoin(appState.game.cycles[1], defaultInactivePlayer); const secondCycleSubEvents = appState.game.cycles[3].subs; if (secondCycleSubEvents == undefined) { chai_1.assert.fail("No sub events found for the second cycle"); } chai_1.expect(secondCycleSubEvents[0].inPlayer).to.equal(defaultInactivePlayer); }); it("addInactivePlayer in second cycle with different team", () => { const appState = initializeApp(); const newPlayer = new TeamState_1.Player("Bill", defaultTeamNames[1], false); appState.game.addNewPlayer(newPlayer); appState.game.addInactivePlayer(newPlayer, 1); const beforePlayers = appState.game.getActivePlayers(newPlayer.teamName, 0); chai_1.expect(beforePlayers.has(newPlayer)).to.be.false; const players = appState.game.getActivePlayers(newPlayer.teamName, 1); chai_1.expect(players.has(newPlayer)).to.be.true; }); it("addInactivePlayer with same name from different team", () => { const appState = initializeApp(); const newPlayer = new TeamState_1.Player(defaultInactivePlayer.name, defaultTeamNames[1], false); appState.game.addNewPlayer(newPlayer); appState.game.addInactivePlayer(newPlayer, 0); const players = appState.game.getActivePlayers(newPlayer.teamName, 0); chai_1.expect(players.has(defaultInactivePlayer)).to.be.false; chai_1.expect(players.has(newPlayer)).to.be.true; }); }); //# sourceMappingURL=AddInactivePlayerTests.js.map