sails
Version:
API-driven framework for building realtime apps, using MVC conventions (based on Express and Socket.io)
131 lines (95 loc) • 3.22 kB
JavaScript
/**
* Test dependencies
*/
var util = require('util');
var assert = require('assert');
var socketHelper = require('./helpers/socketHelper.js');
var appHelper = require('./helpers/appHelper');
/**
* Errors
*/
var Err = {
badResponse: function(response) {
return 'Wrong server response! Response :::\n' + util.inspect(response);
}
};
describe('pubsub :: ', function() {
var sailsprocess;
var socket1;
var socket2;
var appName = 'testApp';
describe('Model events', function() {
describe('when no one is subscribed to user #1 and User has no watchers ', function() {
before(function(done) {
appHelper.buildAndLiftWithTwoSockets(appName, function(err, sails, _socket1, _socket2) {
if (err) {
throw new Error(err);
}
sailsprocess = sails;
socket1 = _socket1;
socket2 = _socket2;
done();
});
});
after(function(done) {
socket1.disconnect();
socket2.disconnect();
process.chdir('../');
appHelper.teardown();
if (sailsprocess) {
return sailsprocess.lower(function() {
setTimeout(done, 100);
});
}
return done();
});
this.slow(3000);
afterEach(function(done) {
socket2.removeAllListeners();
done();
});
it('a post request to /user should result in no `user` events being received', function(done) {
socket2.on('user', function(message) {
assert(false, 'User event received by socket 2 when it should not have been!');
});
socket1.post('/user', {
name: 'scott'
});
setTimeout(done, 1000);
});
it('updating the user via PUT /user/1 should result in no `user` events being received', function(done) {
socket2.on('user', function(message) {
assert(false, 'User event received by socket 2 when it should not have been!');
});
socket1.put('/user/1', {
name: 'joe'
});
setTimeout(done, 1000);
});
it('adding a pet to the user via POST /pet should result in no `user` events being received', function(done) {
socket2.on('user', function(message) {
assert(false, 'User event received by socket 2 when it should not have been!');
});
socket1.post('/pet', {
name: 'rex',
owner: 1
});
setTimeout(done, 1000);
});
it('removing a pet from the user via DELETE /pet/1 should result in no `user` events being received', function(done) {
socket2.on('user', function(message) {
assert(false, 'User event received by socket 2 when it should not have been!');
});
socket1.delete('/pet/1');
setTimeout(done, 1000);
});
it('deleting the user via DELETE /user/1 should result in no `user` events being received', function(done) {
socket2.on('user', function(message) {
assert(false, 'User event received by socket 2 when it should not have been!');
});
socket1.delete('/user/1');
setTimeout(done, 1000);
});
});
});
});