From 02570eca1ff47c490aa8b70428ee34c61158b3c6 Mon Sep 17 00:00:00 2001 From: Viraj Trivedi Date: Sun, 3 Feb 2019 18:04:22 +0530 Subject: [PATCH] test(RealTimeAPI): Added basic tests. Setup for mocking websockets with mock-socket package. Added tests for websocket connection and keepAlive(). #25 --- __tests__/RealTimeAPI.test.ts | 47 +++++++++++++++++++++++++++++++++++ __tests__/rx-sql.test.ts | 6 ----- 2 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 __tests__/RealTimeAPI.test.ts delete mode 100644 __tests__/rx-sql.test.ts diff --git a/__tests__/RealTimeAPI.test.ts b/__tests__/RealTimeAPI.test.ts new file mode 100644 index 0000000..6b6a57d --- /dev/null +++ b/__tests__/RealTimeAPI.test.ts @@ -0,0 +1,47 @@ +import { WebSocket, Server } from "mock-socket"; +import { RealTimeAPI } from "../src/index"; + +describe("RealTimeAPI tests", () => { + const url = "ws://localhost:8080/"; + let mockServer; + + beforeEach(() => { + mockServer = new Server(url); + }); + + afterEach(() => { + let closer = { + code: 0, + reason: "disconnected", + wasClean: true + }; + mockServer.close(closer); + }); + + it("can connect", done => { + const realtimeAPI$ = new RealTimeAPI(url); // Connecting to websocket url. + + realtimeAPI$.subscribe(); + + mockServer.on("connection", (socket: WebSocket) => { + expect(socket.url).toEqual(url); // Expecting websocket url. + done(); + }); + }); + + it("can send pong for every ping", done => { + const realtimeAPI$ = new RealTimeAPI(url); + + realtimeAPI$.keepAlive().subscribe(); // Should send pong to every ping message. + + mockServer.on("connection", (socket: WebSocket) => { + expect(socket.url).toEqual(url); // Expecting websocket url. + + socket.send(JSON.stringify({ msg: "ping" })); // Sending "ping" message. + socket.on("message", data => { + expect(data).toEqual(JSON.stringify({ msg: "pong" })); // Expecting to receive "pong" message. + done(); + }); + }); + }); +}); diff --git a/__tests__/rx-sql.test.ts b/__tests__/rx-sql.test.ts deleted file mode 100644 index f8d3d5e..0000000 --- a/__tests__/rx-sql.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Server, WebSocket } from "mock-socket"; -import { RealTimeAPI } from "../src/RealTimeAPI"; - -describe("RxSQL Tests", () => { - it("Mock Test", () => {}); -});