Skip to content

Commit fe33ff7

Browse files
test: actually test the parser
The assertions were not checked, because the functions are asynchronous. Besides, the Blob tests were throwing in the browser: > Uncaught ReferenceError: can't access lexical declaration 'BlobBuilder' before initialization
1 parent 00e7359 commit fe33ff7

File tree

6 files changed

+54
-49
lines changed

6 files changed

+54
-49
lines changed

test/arraybuffer.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ const helpers = require('./helpers.js');
44
const encoder = new Encoder();
55

66
describe('parser', () => {
7-
it('encodes an ArrayBuffer', () => {
7+
it('encodes an ArrayBuffer', done => {
88
var packet = {
99
type: PacketType.BINARY_EVENT,
1010
data: ['a', new ArrayBuffer(2)],
1111
id: 0,
1212
nsp: '/'
1313
};
14-
helpers.test_bin(packet);
14+
helpers.test_bin(packet, done);
1515
});
1616

17-
it('encodes a TypedArray', () => {
17+
it('encodes a TypedArray', done => {
1818
var array = new Uint8Array(5);
1919
for (var i = 0; i < array.length; i++) array[i] = i;
2020

@@ -24,27 +24,27 @@ describe('parser', () => {
2424
id: 0,
2525
nsp: '/'
2626
};
27-
helpers.test_bin(packet);
27+
helpers.test_bin(packet, done);
2828
});
2929

30-
it('encodes ArrayBuffers deep in JSON', () => {
30+
it('encodes ArrayBuffers deep in JSON', done => {
3131
var packet = {
3232
type: PacketType.BINARY_EVENT,
3333
data: ['a', {a: 'hi', b: {why: new ArrayBuffer(3)}, c: {a: 'bye', b: { a: new ArrayBuffer(6)}}}],
3434
id: 999,
3535
nsp: '/deep'
3636
};
37-
helpers.test_bin(packet);
37+
helpers.test_bin(packet, done);
3838
});
3939

40-
it('encodes deep binary JSON with null values', () => {
40+
it('encodes deep binary JSON with null values', done => {
4141
var packet = {
4242
type: PacketType.BINARY_EVENT,
4343
data: ['a', {a: 'b', c: 4, e: {g: null}, h: new ArrayBuffer(9)}],
4444
nsp: '/',
4545
id: 600
4646
};
47-
helpers.test_bin(packet);
47+
helpers.test_bin(packet, done);
4848
});
4949

5050
it('cleans itself up on close', () => {

test/blob.js

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,67 @@
11
const { PacketType } = require('..');
22
const helpers = require('./helpers.js');
33

4-
const BlobBuilder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :
4+
const BlobBuilderImpl = typeof BlobBuilder !== 'undefined' ? BlobBuilder :
55
typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder :
66
typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :
77
typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : false;
88

99
describe('parser', () => {
10-
it('encodes a Blob', () => {
11-
var data;
12-
if (BlobBuilder) {
13-
var bb = new BlobBuilder();
10+
it('encodes a Blob', (done) => {
11+
let data;
12+
if (BlobBuilderImpl) {
13+
const bb = new BlobBuilderImpl();
1414
bb.append(new ArrayBuffer(2));
1515
data = bb.getBlob();
1616
} else {
1717
data = new Blob([new ArrayBuffer(2)]);
1818
}
1919

20-
var packet = {
20+
const packet = {
2121
type: PacketType.BINARY_EVENT,
22-
data: data,
22+
data: [data],
2323
id: 0,
2424
nsp: '/'
2525
};
26-
helpers.test_bin(packet);
26+
helpers.test_bin(packet, done);
2727
});
2828

29-
it('encodes an Blob deep in JSON', () => {
30-
var data;
31-
if (BlobBuilder) {
32-
var bb = new BlobBuilder();
29+
it('encodes an Blob deep in JSON', (done) => {
30+
let data;
31+
if (BlobBuilderImpl) {
32+
const bb = new BlobBuilderImpl();
3333
bb.append(new ArrayBuffer(2));
3434
data = bb.getBlob();
3535
} else {
3636
data = new Blob([new ArrayBuffer(2)]);
3737
}
3838

39-
var packet = {
39+
const packet = {
4040
type: PacketType.BINARY_EVENT,
41-
data: {a: 'hi', b: { why: data }, c: 'bye'},
41+
data: [{a: 'hi', b: {why: data}, c: 'bye'}],
4242
id: 999,
4343
nsp: '/deep'
4444
};
45-
helpers.test_bin(packet);
45+
helpers.test_bin(packet, done);
4646
});
4747

48-
it('encodes a binary ack with a blob', () => {
49-
var data;
50-
if (BlobBuilder) {
51-
var bb = new BlobBuilder();
48+
it('encodes a binary ack with a blob', (done) => {
49+
let data;
50+
if (BlobBuilderImpl) {
51+
const bb = new BlobBuilderImpl();
5252
bb.append(new ArrayBuffer(2));
5353
data = bb.getBlob();
5454
} else {
5555
data = new Blob([new ArrayBuffer(2)]);
5656
}
5757

58-
var packet = {
58+
const packet = {
5959
type: PacketType.BINARY_ACK,
60-
data: {a: 'hi ack', b: { why: data }, c: 'bye ack'},
60+
data: [{a: 'hi ack', b: {why: data}, c: 'bye ack'}],
6161
id: 999,
6262
nsp: '/deep'
6363
};
64-
helpers.test_bin(packet);
64+
helpers.test_bin(packet, done);
6565
})
6666

6767
});

test/buffer.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@ const { PacketType } = require('..');
22
const helpers = require('./helpers.js');
33

44
describe('parser', () => {
5-
it('encodes a Buffer', () => {
5+
it('encodes a Buffer', done => {
66
helpers.test_bin({
77
type: PacketType.BINARY_EVENT,
88
data: ['a', Buffer.from('abc', 'utf8')],
99
id: 23,
1010
nsp: '/cool'
11-
});
11+
}, done);
1212
});
1313

14-
it('encodes a binary ack with Buffer', () => {
14+
it('encodes a binary ack with Buffer', done => {
1515
helpers.test_bin({
1616
type: PacketType.BINARY_ACK,
1717
data: ['a', Buffer.from('xxx', 'utf8'), {}],
1818
id: 127,
1919
nsp: '/back'
20-
})
20+
}, done)
2121
});
2222
});

test/helpers.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,28 @@ const expect = require('expect.js');
33
const encoder = new parser.Encoder();
44

55
// tests encoding and decoding a single packet
6-
module.exports.test = obj => {
6+
module.exports.test = (obj, done) => {
77
encoder.encode(obj, encodedPackets => {
88
const decoder = new parser.Decoder();
99
decoder.on('decoded', packet => {
1010
expect(packet).to.eql(obj);
11+
done();
1112
});
1213

1314
decoder.add(encodedPackets[0]);
1415
});
1516
}
1617

1718
// tests encoding of binary packets
18-
module.exports.test_bin = obj => {
19+
module.exports.test_bin = (obj, done) => {
1920
const originalData = obj.data;
2021
encoder.encode(obj, encodedPackets => {
2122
const decoder = new parser.Decoder();
2223
decoder.on('decoded', packet => {
2324
obj.data = originalData;
2425
obj.attachments = undefined;
2526
expect(obj).to.eql(packet);
27+
done();
2628
});
2729

2830
for (let i = 0; i < encodedPackets.length; i++) {

test/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ const blobSupported = (function () {
1212
/**
1313
* Create a blob builder even when vendor prefixes exist
1414
*/
15-
const BlobBuilderRef = typeof BlobBuilder !== 'undefined' ? BlobBuilder :
15+
const BlobBuilderImpl = typeof BlobBuilder !== 'undefined' ? BlobBuilder :
1616
typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder :
1717
typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :
1818
typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : false;
19-
const blobBuilderSupported = !!BlobBuilderRef && !!BlobBuilderRef.prototype.append && !!BlobBuilderRef.prototype.getBlob;
19+
const blobBuilderSupported = !!BlobBuilderImpl && !!BlobBuilderImpl.prototype.append && !!BlobBuilderImpl.prototype.getBlob;
2020

2121
require('./parser.js');
2222

test/parser.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,49 +14,52 @@ describe('parser', () => {
1414
expect(PacketType.BINARY_ACK).to.be.a('number');
1515
});
1616

17-
it('encodes connection', () => {
17+
it('encodes connection', done => {
1818
helpers.test({
1919
type: PacketType.CONNECT,
2020
nsp: '/woot'
21-
});
21+
}, done);
2222
});
2323

24-
it('encodes disconnection', () => {
24+
it('encodes disconnection', done => {
2525
helpers.test({
2626
type: PacketType.DISCONNECT,
2727
nsp: '/woot'
28-
});
28+
}, done);
2929
});
3030

31-
it('encodes an event', () => {
31+
it('encodes an event', done => {
3232
helpers.test({
3333
type: PacketType.EVENT,
3434
data: ['a', 1, {}],
3535
nsp: '/'
36-
});
36+
}, done);
37+
});
38+
39+
it('encodes an event (with ack)', done => {
3740
helpers.test({
3841
type: PacketType.EVENT,
3942
data: ['a', 1, {}],
4043
id: 1,
4144
nsp: '/test'
42-
});
45+
}, done);
4346
});
4447

45-
it('encodes an ack', () => {
48+
it('encodes an ack', done => {
4649
helpers.test({
4750
type: PacketType.ACK,
4851
data: ['a', 1, {}],
4952
id: 123,
5053
nsp: '/'
51-
});
54+
}, done);
5255
});
5356

54-
it('encodes an error', () => {
57+
it('encodes an error', done => {
5558
helpers.test({
5659
type: PacketType.ERROR,
5760
data: 'Unauthorized',
5861
nsp: '/'
59-
});
62+
}, done);
6063
});
6164

6265
it('throws an error when encoding circular objects', () => {

0 commit comments

Comments
 (0)