From a4aa70f99201811b34a6540098944de39c7a3c83 Mon Sep 17 00:00:00 2001 From: Oliver Akins Date: Thu, 23 Jun 2022 14:05:34 -0600 Subject: [PATCH] Add tests for the Player object --- server/tests/objects/Player.spec.ts | 82 +++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 server/tests/objects/Player.spec.ts diff --git a/server/tests/objects/Player.spec.ts b/server/tests/objects/Player.spec.ts new file mode 100644 index 0000000..1d8fc52 --- /dev/null +++ b/server/tests/objects/Player.spec.ts @@ -0,0 +1,82 @@ +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); + }); +}); \ No newline at end of file