You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.2 KiB
TypeScript

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();
});
});
});
});