Skip to content

Commit

Permalink
added remove room event
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicklas766 committed Jan 4, 2018
1 parent aa06606 commit 6ce495e
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 1 deletion.
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "socket-mansion",
"version": "1.0.1",
"version": "1.0.2",
"description": "Helps you keep track of your sockets and users in multiple rooms",
"scripts": {
"start": "node ./bin/www",
Expand Down
1 change: 1 addition & 0 deletions readme.md
Expand Up @@ -105,6 +105,7 @@ which is the modules name you want to use.
socket.emit('create room', 'name', 'chat')
socket.emit('join room', 'name')
socket.emit('leave room', 'name')
socket.emit('remove room', 'name') // does not trigger .off, you should leave aswell


```
Expand Down
8 changes: 8 additions & 0 deletions src/socket-container.js
Expand Up @@ -99,6 +99,13 @@ const leaveRoom = (socket) => {
});
};

const removeRoom = (socket) => {
// Leaves room
socket.on('remove room', (id) => {
this.rooms = this.rooms.filter(room => room.id !== id);
});
};

const setupGet = (socket) => {
socket.on('get users', () => {
this.io.emit('get users', this.users);
Expand Down Expand Up @@ -151,6 +158,7 @@ const socketContainer = (server, modules) => {
createRoom(socket);
joinRoom(socket);
leaveRoom(socket);
removeRoom(socket);
setupGet(socket);

disconnect(socket);
Expand Down
113 changes: 113 additions & 0 deletions test/remove.spec.js
@@ -0,0 +1,113 @@

// For testing suite
/*eslint-disable no-unused-vars*/
var assert = require("assert");
var mocha = require('mocha');
var it = mocha.it;
var describe = mocha.describe;
var before = mocha.before;
var after = mocha.after;
/*eslint-enable no-unused-vars*/

// Create a server
var app = require('express')();
var http = require('http');
var server = http.createServer(app);

// socket.io and socket-container module
var io = require('socket.io-client');
const chat = require('../src/chat').chat;
const socketContainer = require('../index.js');

// Will be used as parameter for socketContainer
const modules = [{module: chat, name: "chat"}];


var socketURL = 'http://localhost:3000';
var options = {
transports: ['websocket'],
'force new connection': true
};



describe("socket-container with chat module as room", function() {
before(function() {
socketContainer(server, modules);
server.listen(3000);
});

after(function(done) {
server.close();
done();
});


it('should create room1 & room2 and then remove room1', function(done) {
// Start socket
var socket = io(socketURL, options);

socket.on('connect', function() {
socket.emit('setup user', {name: "nicklas"});
socket.emit('create room', 'room1', 'chat');

var socket2 = io(socketURL, options);

socket2.on('connect', function() {
socket2.emit('create room', 'room2', 'chat');
socket2.emit('get rooms');

socket2.on("get rooms", function(data) {
console.log(data);
assert.equal(data[0].id, "room1");
assert.equal(data[1].id, "room2");

socket.emit('remove room', 'room1');
socket.emit('get rooms');
socket.on("get rooms", function(data) {
assert.equal(data[0].id, "room2");
socket.disconnect();
socket2.disconnect();
done();
});
});
});
});
});

it('should create create room 10, 11, 12 and then remove room11', function(done) {
// Start socket
var socket = io(socketURL, options);

socket.on('connect', function() {
socket.emit('setup user', {name: "nicklas"});
socket.emit('create room', 'room10', 'chat');

var socket2 = io(socketURL, options);

socket2.on('connect', function() {
socket2.emit('create room', 'room11', 'chat');
socket2.emit('create room', 'room12', 'chat');
socket2.emit('get rooms');

socket2.on("get rooms", function(data) {
assert.equal(data[0].id, "room2");
assert.equal(data[1].id, "room10");
assert.equal(data[2].id, "room11");
assert.equal(data[3].id, "room12");

socket.emit('remove room', 'room11');
socket.emit('get rooms');
socket.on("get rooms", function(data) {
assert.equal(data[0].id, "room2");
assert.equal(data[1].id, "room10");
assert.equal(data[2].id, "room12");
socket.disconnect();
socket2.disconnect();
done();
});
});
});
});
});
});

0 comments on commit 6ce495e

Please sign in to comment.