File size: 1,639 Bytes
e3cb794
a18eb38
e3cb794
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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();
  })
});