import { expect } from "chai"; import { User } from "../../src/socket/hapticLinkServer"; import { Room } from "../../src/socket/room"; import {WebSocketWrapper} from "./hapticLinkServer.spec"; describe("Rooms", function() { const ws1 = new WebSocketWrapper(); const ws2 = new WebSocketWrapper(); const user1: User = new User(ws1); const user2: User = new User(ws2); const room: Room = new Room() before((done) => { done(); }) after(() => { }) it("should have a unique random ID", (done) => { expect(room.id.length).to.gte(3, "ID not generated") done(); }) it("should add/remove user", (done) => { room.addUser(user1) room.addUser(user1) expect(room.users.length).to.equal(1, "user not added") room.removeUserById(user1.id); expect(room.users.length).to.equal(0, "user not removed") done(); }) it("should check if user exists", (done) => { room.addUser(user1) expect(room.hasUser(user1.id)).to.equal(true, "room didn't find user") done(); }) it("should broadcast to all users", (done) => { room.addUser(user1) room.addUser(user2) room.broadcast("hello"); expect(ws1.sendData).to.equal("hello", "didn't broadcast") expect(ws2.sendData).to.equal("hello", "didn't broadcast") done(); }) it("should broadcast to all users, but filter a user", (done) => { ws1.sendData = "" ws2.sendData = "" room.addUser(user1) room.addUser(user2) room.broadcast("hello", [user1.id]); expect(ws1.sendData).to.equal("", "didn't filter") expect(ws2.sendData).to.equal("hello", "didn't broadcast") done(); }) });