import { Socket } from "socket.io"; import { expect } from "chai"; import "mocha"; import { Player } from "../../src/objects/Player"; import { colours, spaceships } from "common"; describe("The player object", () => { it("should construct properly", () => { const data = { name: "Oliver", ship: spaceships[0], colour: colours[0], host: false, } const p = new Player( { connected: true } as Socket, data ); expect(p.socket.connected).to.be.true; expect(p.colour).to.equal(data.colour); expect(p.ship).to.equal(data.ship); expect(p.name).to.equal(data.name); expect(p.host).to.equal(data.host); }); it("shouldn't let socket be assigned when connected", () => { const p = new Player( { connected: true } as Socket, { name: "Oliver", ship: spaceships[0], colour: colours[0], host: false, } ); try { p.socket = { connected : true } as Socket; throw "Assigned socket when it was connected" } catch (e) {}; }); it("should let socket be assigned when not connected", () => { const p = new Player( { connected: false } as Socket, { name: "Oliver", ship: spaceships[0], colour: colours[0], host: false, } ); try { p.socket = { connected : true } as Socket; } catch (e) { throw "Didn't let socket be set when it wasn't connected" }; }); it("should construct the data object correctly", () => { let data = { name: "Oliver", ship: spaceships[0], colour: colours[0], host: false, }; const p = new Player( { connected: false } as Socket, data ); let j = p.json(); expect(j).to.have.keys(`name`, `ship`, `colour`, `host`); expect(j.colour).to.equal(data.colour); expect(j.ship).to.equal(data.ship); expect(j.name).to.equal(data.name); expect(j.host).to.equal(data.host); }); });