mirror of
https://github.com/Wan-Video/Wan2.1.git
synced 2025-07-14 19:50:10 +00:00
154 lines
3.4 KiB
JavaScript
154 lines
3.4 KiB
JavaScript
'use strict';
|
|
|
|
var should = require('should');
|
|
var Room = require('../../source/room');
|
|
var Namespace = require('../../source/namespace');
|
|
var Broadcast = require('../../source/broadcast');
|
|
var Socket = require('../fake_socket');
|
|
|
|
describe('Room', function () {
|
|
|
|
beforeEach(function () {
|
|
Broadcast.init(Room);
|
|
});
|
|
|
|
afterEach(function () {
|
|
Room.flush();
|
|
});
|
|
|
|
it('can create rooms', function () {
|
|
var room = Room.get('something');
|
|
room.id.should.equal('something');
|
|
});
|
|
|
|
it('one room per room id', function () {
|
|
var room1 = Room.get('anything');
|
|
var room2 = Room.get('anything');
|
|
|
|
room1.should.equal(room2);
|
|
});
|
|
|
|
it('sockets can join rooms', function () {
|
|
var room = Room.get('chicken');
|
|
room._join(new Socket());
|
|
|
|
room.length().should.equal(1);
|
|
});
|
|
|
|
it('sockets can leave rooms', function () {
|
|
var socket = new Socket();
|
|
|
|
var room = Room.get('pineapple');
|
|
room.length().should.equal(0);
|
|
|
|
room._join(socket);
|
|
room.length().should.equal(1);
|
|
|
|
room._leave(socket);
|
|
room.length().should.equal(0);
|
|
});
|
|
|
|
it('check if a socket is in a room', function () {
|
|
var room = Room.get('my_room');
|
|
var socket = new Socket();
|
|
|
|
room._join(socket);
|
|
room.contains(socket).should.equal(true);
|
|
|
|
room._leave(socket);
|
|
room.contains(socket).should.equal(false);
|
|
});
|
|
|
|
it('get another room', function () {
|
|
var room1 = Room.get('room1');
|
|
var room2 = Room.get('room2');
|
|
|
|
Room.get('room2').should.equal(room2);
|
|
});
|
|
|
|
it('emit to all sockets in a room', function () {
|
|
var room = Room.get('special');
|
|
var socket1 = new Socket();
|
|
var socket2 = new Socket();
|
|
var callCount = 0;
|
|
|
|
new Socket.listen(function (event) {
|
|
callCount++;
|
|
event.should.equal('hello');
|
|
});
|
|
|
|
room._join(socket1);
|
|
room._join(socket2);
|
|
room.length().should.equal(2);
|
|
|
|
room.emit('hello');
|
|
callCount.should.equal(2);
|
|
});
|
|
|
|
it('broadcast to all sockets in a room', function () {
|
|
var room = Room.get('broadcast');
|
|
var socket1 = new Socket();
|
|
var socket2 = new Socket();
|
|
var sender = new Socket();
|
|
var callCount = 0;
|
|
|
|
room._join(socket1);
|
|
room._join(socket2);
|
|
room._join(sender);
|
|
|
|
new Socket.listen(function (event) {
|
|
event.should.equal('the_broadcast');
|
|
this.should.not.equal(sender);
|
|
callCount++;
|
|
});
|
|
|
|
room.broadcast(sender.id, 'the_broadcast');
|
|
callCount.should.equal(2);
|
|
});
|
|
|
|
it('emit to a room from a namespace', function () {
|
|
var room = Room.get('room');
|
|
var socket1 = new Socket();
|
|
var socket2 = new Socket();
|
|
|
|
room._join(socket1);
|
|
room._join(socket2);
|
|
|
|
var namespace = room.namespace('namespace');
|
|
var callCount = 0;
|
|
|
|
new Socket.listen(function (event) {
|
|
event.should.equal('namespace.event');
|
|
callCount++;
|
|
});
|
|
|
|
namespace.emit('event');
|
|
callCount.should.equal(2);
|
|
});
|
|
|
|
it('broadcast to a room from a namespace', function () {
|
|
var room = Room.get('room');
|
|
var socket1 = new Socket();
|
|
var socket2 = new Socket();
|
|
var socket3 = new Socket();
|
|
var callCount = 0;
|
|
|
|
room._join(socket1);
|
|
room._join(socket2);
|
|
room._join(socket3);
|
|
|
|
new Socket.listen(function (event) {
|
|
this.should.not.equal(socket1);
|
|
event.should.equal('namespace.event');
|
|
callCount++;
|
|
});
|
|
|
|
var namespace = socket1.namespace('namespace');
|
|
|
|
namespace.broadcast('event');
|
|
callCount.should.equal(2);
|
|
|
|
});
|
|
|
|
});
|