UNPKG

modaq

Version:

Quiz Bowl Reader using TypeScript, React, and MobX

150 lines 7.84 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const chai_1 = require("chai"); const AddPlayerDialogController = __importStar(require("src/components/dialogs/AddPlayerDialogController")); const AppState_1 = require("src/state/AppState"); require("src/state/Events"); 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")]); const defaultTeamNames = ["First Team", "Team2"]; function initializeApp() { const gameState = new GameState_1.GameState(); gameState.loadPacket(defaultPacket); const defaultExistingPlayers = [ new TeamState_1.Player("Frank", defaultTeamNames[0], true), new TeamState_1.Player("Faye", defaultTeamNames[0], true), new TeamState_1.Player("Saul", defaultTeamNames[1], true), ]; gameState.addNewPlayers(defaultExistingPlayers); AppState_1.AppState.resetInstance(); const appState = AppState_1.AppState.instance; appState.game = gameState; appState.uiState.createPendingNewPlayer(defaultTeamNames[0]); return appState; } function getPendingNewPlayer(appState) { if (appState.uiState.pendingNewPlayer == undefined) { chai_1.assert.fail("PendingNewPlayer should not be undefined"); } return appState.uiState.pendingNewPlayer; } describe("AddPlayerDialogControllerTests", () => { it("changePlayerName", () => { const name = "New player name"; const appState = initializeApp(); AddPlayerDialogController.changePlayerName(name); const player = getPendingNewPlayer(appState); chai_1.expect(player.name).to.equal(name); chai_1.expect(player.teamName).to.equal(defaultTeamNames[0]); chai_1.expect(player.isStarter).to.be.false; }); it("changeTeamName", () => { const name = defaultTeamNames[1]; const appState = initializeApp(); AddPlayerDialogController.changePlayerName("Player"); AddPlayerDialogController.changeTeamName(name); const player = getPendingNewPlayer(appState); chai_1.expect(player.name).to.equal("Player"); chai_1.expect(player.teamName).to.equal(name); chai_1.expect(player.isStarter).to.be.false; }); it("hideDialog", () => { const appState = initializeApp(); AddPlayerDialogController.hideDialog(); chai_1.expect(appState.uiState.pendingNewPlayer).to.be.undefined; }); describe("validatePlayer", () => { it("validatePlayer - non-empty name", () => { initializeApp(); AddPlayerDialogController.changePlayerName(" "); const errorMessage = AddPlayerDialogController.validatePlayer(); chai_1.expect(errorMessage).to.not.be.undefined; }); it("validatePlayer - non-existent team", () => { initializeApp(); AddPlayerDialogController.changeTeamName(defaultTeamNames[0] + defaultTeamNames[1]); const errorMessage = AddPlayerDialogController.validatePlayer(); chai_1.expect(errorMessage).to.not.be.undefined; }); it("validatePlayer - valid player (no team change)", () => { initializeApp(); AddPlayerDialogController.changePlayerName("Newbie"); const errorMessage = AddPlayerDialogController.validatePlayer(); chai_1.expect(errorMessage).to.be.undefined; }); it("validatePlayer - valid player (with team change)", () => { initializeApp(); AddPlayerDialogController.changeTeamName(defaultTeamNames[1]); AddPlayerDialogController.changePlayerName("Newbie"); const errorMessage = AddPlayerDialogController.validatePlayer(); chai_1.expect(errorMessage).to.be.undefined; }); }); describe("addPlayer", () => { it("addPlayer succeeds", () => { const appState = initializeApp(); appState.uiState.setCycleIndex(1); AddPlayerDialogController.changeTeamName(defaultTeamNames[1]); AddPlayerDialogController.changePlayerName("Newbie"); AddPlayerDialogController.addPlayer(); // Verify - dialog hidden, player is in game, add player event in cycle chai_1.expect(appState.uiState.pendingNewPlayer).to.be.undefined; const newPlayer = appState.game.players.find((player) => player.name === "Newbie" && player.teamName === defaultTeamNames[1]); if (newPlayer == undefined) { chai_1.assert.fail(`Couldn't find new player in players: ${JSON.stringify(appState.game.players)}`); } chai_1.expect(appState.game.cycles[0].playerJoins).to.be.undefined; const playerJoins = appState.game.cycles[1].playerJoins; if (playerJoins === undefined) { chai_1.assert.fail("Expected joinPlayer event in the first cycle"); } chai_1.expect(playerJoins.length).to.equal(1); chai_1.expect(playerJoins[0].inPlayer).to.equal(newPlayer); }); it("addPlayer fails (empty name)", () => { const appState = initializeApp(); AddPlayerDialogController.changeTeamName(defaultTeamNames[1]); AddPlayerDialogController.changePlayerName(" "); AddPlayerDialogController.addPlayer(); // Verify - dialog hidden, player is in game, add player event in cycle chai_1.expect(appState.uiState.pendingNewPlayer).to.not.be.undefined; const newPlayer = appState.game.players.find((player) => player.name === " " && player.teamName === defaultTeamNames[1]); chai_1.expect(newPlayer).to.be.undefined; chai_1.expect(appState.game.cycles[0].playerJoins).to.be.undefined; }); it("addPlayer fails (non-existent team)", () => { const appState = initializeApp(); AddPlayerDialogController.changeTeamName(defaultTeamNames[0] + defaultTeamNames[1]); AddPlayerDialogController.changePlayerName("Newbie"); AddPlayerDialogController.addPlayer(); // Verify - dialog hidden, player is in game, add player event in cycle chai_1.expect(appState.uiState.pendingNewPlayer).to.not.be.undefined; const newPlayer = appState.game.players.find((player) => player.name === "Newbie"); chai_1.expect(newPlayer).to.be.undefined; chai_1.expect(appState.game.cycles[0].playerJoins).to.be.undefined; }); }); }); //# sourceMappingURL=AddPlayerDialogControllerTests.js.map