Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test - src/sockets.js #209

Merged
merged 7 commits into from
Aug 10, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 18 additions & 14 deletions test/sockets.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ const url = 'ws://localhost:8080/';
const makeEventPromise = (emitter, event) => {
let resolver;

const promise = new Promise(resolve => (resolver = resolve));
emitter.on(event, data => resolver(data));
const promise = new Promise((resolve) => (resolver = resolve));
emitter.on(event, (data) => resolver(data));

return promise;
};
Expand All @@ -29,7 +29,7 @@ describe('Sockets', () => {
mockServer.close();
});

test('sends keep-alive messages automatically', async () => {
test('client socket sends keep-alive messages automatically', async () => {
const keepAliveTimeout = 300,
expectedMessagesCount = 3,
messages = [],
Expand All @@ -38,11 +38,13 @@ describe('Sockets', () => {
// Creating a socket will open connection and start keep-alive pings.
new Socket({ url, keepAliveTimeout });

// Resolving the Promise returns a Websocket object
const serverSocket = await mockServer.connected;

serverSocket.on('message', message => messages.push(JSON.parse(message)));
serverSocket.on('message', (message) => messages.push(JSON.parse(message)));

await new Promise(done =>
// Use Promise chain to sleep enough time for client socket to ping server socket
await new Promise((done) =>
setTimeout(
done,
keepAliveTimeout * expectedMessagesCount + keepAliveTimeout / 2
Expand All @@ -56,7 +58,7 @@ describe('Sockets', () => {
expectedTypes.push(SOCKET_PING);
}

expect(messages.map(message => message['type'])).toEqual(expectedTypes);
expect(messages.map((message) => message['type'])).toEqual(expectedTypes);
});

test('triggers onOpen event', async () => {
Expand All @@ -74,13 +76,15 @@ describe('Sockets', () => {
onClose = jest.fn(),
mySocket = new Socket({
url,
onClose
onClose,
});

await mockServer.connected;

// Client socket in the process of closing, (readyState: 2)
mySocket.stop();

// Server and client sockets closed (readyState: 3)
await closed;

expect(onClose).toHaveBeenCalledTimes(1);
Expand All @@ -95,7 +99,7 @@ describe('Sockets', () => {
mySocket = new Socket({
workerId: testworkerId,
url,
onMessage: data => data
onMessage: (data) => data,
});

const serverSocket = await mockServer.connected;
Expand All @@ -112,15 +116,15 @@ describe('Sockets', () => {

expect(JSON.parse(message)).toEqual({
type: testReqType,
data: testReqData
data: testReqData,
});
expect(response).toEqual(testResponse);
});

test('returns error when .send() fails', async () => {
const mySocket = new Socket({
url,
onMessage: data => data
onMessage: (data) => data,
});

const serverSocket = await mockServer.connected;
Expand All @@ -143,7 +147,7 @@ describe('Sockets', () => {

test('disconnects from server after .stop()', async () => {
const mySocket = new Socket({
url
url,
});

await mockServer.connected;
Expand All @@ -152,19 +156,19 @@ describe('Sockets', () => {

mySocket.stop();

await new Promise(done => setTimeout(done, 100));
await new Promise((done) => setTimeout(done, 100));

expect(mockServer.clients()).toHaveLength(0);
});

test('triggers onMessage event', async () => {
const testResponse = { response: 'test' },
testworkerId = 'test-worker',
onMessage = jest.fn(message => message),
onMessage = jest.fn((message) => message),
mySocket = new Socket({
workerId: testworkerId,
url,
onMessage: onMessage
onMessage: onMessage,
});

const serverSocket = await mockServer.connected;
Expand Down