Skip to content

Commit

Permalink
feat: export initialized socket client (#4304)
Browse files Browse the repository at this point in the history
  • Loading branch information
pmmmwh authored Apr 5, 2022
1 parent 4e7800e commit 7920364
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
6 changes: 5 additions & 1 deletion client-src/socket.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ const Client =

let retries = 0;
let maxRetries = 10;
let client = null;

// Initialized client is exported so external consumers can utilize the same instance
// It is mutable to enforce singleton
// eslint-disable-next-line import/no-mutable-exports
export let client = null;

/**
* @param {string} url
Expand Down
17 changes: 16 additions & 1 deletion test/client/socket-helper.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"use strict";

describe("socket", () => {
afterEach(() => {
beforeEach(() => {
jest.resetAllMocks();
jest.resetModules();
});
Expand Down Expand Up @@ -77,4 +77,19 @@ describe("socket", () => {
expect(mockClientInstance.onMessage.mock.calls).toMatchSnapshot();
expect(mockHandler.mock.calls).toMatchSnapshot();
});

it("should export initialized client", () => {
const socket = require("../../client/socket").default;

const nonInitializedInstance = require("../../client/socket").client;
expect(nonInitializedInstance).toBe(null);

socket("my.url", {});

const initializedInstance = require("../../client/socket").client;
expect(initializedInstance).not.toBe(null);
expect(typeof initializedInstance.onClose).toBe("function");
expect(typeof initializedInstance.onMessage).toBe("function");
expect(typeof initializedInstance.onOpen).toBe("function");
});
});

0 comments on commit 7920364

Please sign in to comment.