modaq
Version:
Quiz Bowl Reader using TypeScript, React, and MobX
150 lines • 7.84 kB
JavaScript
;
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