UNPKG

1.79 kBJavaScriptView Raw
1var assert = require('assert');
2var util = require('util');
3var EventEmitter = require('events').EventEmitter;
4
5var EventSocket = require('../lib/event_socket');
6
7var Ws = function() {
8 EventEmitter.call(this)
9};
10util.inherits(Ws, EventEmitter);
11Ws.prototype.send = function(data, options, cb) {
12 this.emit('onsend', data, options, cb);
13};
14
15
16
17describe('EventSocket', function() {
18
19 it('it should initialization with topic set', function() {
20 var ws = new Ws();
21 var client = new EventSocket(ws, { topic: 'some-topic' });
22 assert.equal(client.query[0].topic, 'some-topic');
23 });
24
25 it('EventSocket.send should pass data/options/callback to ws send', function(done) {
26 var ws = new Ws();
27 var client = new EventSocket(ws, 'some-topic');
28
29 ws.on('onsend', function(data, options, cb) {
30 assert.equal(data, 'somedata');
31 assert.deepEqual(options, {opt: 1});
32 assert.equal(cb, callback);
33 done();
34 });
35
36 var callback = function() {};
37 client.send('sometopic', 'somedata', {opt: 1}, callback);
38 });
39
40 it('websocket error event should trigger close on EventSocket', function(done) {
41 var ws = new Ws();
42 var client = new EventSocket(ws, 'some-topic');
43 var triggered = false;
44
45 client.on('close', function(){
46 triggered = true;
47 });
48 ws.emit('error', new Error('some error'));
49 setTimeout(function(){
50 assert(triggered);
51 done();
52 },1);
53 });
54
55 it('websocket close event should trigger close on EventSocket', function(done) {
56 var ws = new Ws();
57 var client = new EventSocket(ws, 'some-topic');
58 var triggered = false;
59
60 client.on('close', function(){
61 triggered = true;
62 });
63 ws.emit('close');
64 setTimeout(function(){
65 assert(triggered);
66 done();
67 },1);
68 });
69
70
71
72});