neet/masto.js

View on GitHub
src/adapters/ws/web-socket-connector.spec.ts

Summary

Maintainability
A
0 mins
Test Coverage
import getPort from "get-port";
import { WebSocketServer } from "isomorphic-ws";

import { MastoWebSocketError } from "../errors";
import { WebSocketConnectorImpl } from "./web-socket-connector";

describe("WebSocketConnector", () => {
  it("returns existing connection if it exists", async () => {
    const port = await getPort();
    const server = new WebSocketServer({ port });
    const connector = new WebSocketConnectorImpl({
      constructorParameters: [`ws://localhost:${port}`],
    });

    const ws1 = await connector.acquire();
    const ws2 = await connector.acquire();

    expect(ws1).toBe(ws2);

    server.close();
    connector.close();
  });

  it("rejects if WebSocket closes", async () => {
    const connector = new WebSocketConnectorImpl({
      constructorParameters: [`ws://localhost:0`],
    });
    const promise = connector.acquire();
    connector.close();

    await expect(promise).rejects.toBeInstanceOf(MastoWebSocketError);
  });

  it("rejects if it reaches max attempts", async () => {
    const connector = new WebSocketConnectorImpl({
      constructorParameters: [`ws://localhost:0`],
      maxAttempts: 1,
    });

    const promise = connector.acquire();
    await expect(promise).rejects.toBeInstanceOf(MastoWebSocketError);
  });
});