· 4 years ago · Feb 17, 2021, 07:26 PM
1/* eslint-disable */
2import { makeHandleReconnect } from "./handleReconnect";
3import { Map } from "immutable";
4
5const makeParams = (opts = {}) => ({
6 peerId: "123",
7 payload: { secretKey: "existing-secret" },
8 respond: jest.fn(),
9 error: jest.fn(),
10 ...opts,
11});
12
13const makeGetPrivate = (opts = {}) => () => ({
14 secretKeyPlayerIdMap: Map([["existing-secret", "player-id"]]),
15 ...opts,
16});
17
18const makeStoreAction = (opts = {}) => ({
19 setPlayerConnection: jest.fn(),
20 ...opts,
21});
22
23let callHandleReconnect;
24beforeEach(() => {
25 callHandleReconnect = ({
26 params = makeParams(),
27 getPrivate = makeGetPrivate(),
28 StoreAction = makeStoreAction(),
29 }) => {
30 // noinspection JSCheckFunctionSignatures
31 const handleReconnect = makeHandleReconnect(getPrivate, StoreAction);
32 return handleReconnect(params);
33 };
34});
35
36test("responds if secret key is found", () => {
37 const params = makeParams();
38
39 callHandleReconnect({ params });
40
41 expect(params.respond.mock.calls.length).toBe(1);
42});
43
44test("updates player's peer id if secret key is found", () => {
45 const params = makeParams();
46 const StoreAction = makeStoreAction();
47
48 callHandleReconnect({ params, StoreAction });
49
50 const { mock } = StoreAction.setPlayerConnection;
51 expect(mock.calls.length).toBe(1);
52
53 const [playerId, { peerId }] = mock.calls[0];
54 expect(playerId).toBe("player-id");
55 expect(peerId).toBe("123");
56});
57
58test("errors if secret key is not found", () => {
59 const params = makeParams({
60 payload: { secretKey: "missing-secret" },
61 });
62
63 callHandleReconnect({ params });
64
65 expect(params.error.mock.calls.length).toBe(1);
66});
67