UNPKG

@ryinner/web-socket-manager

Version:
158 lines 6.98 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const WebSocket_1 = require("./__mocks__/WebSocket"); const websocket_1 = __importDefault(require("./websocket")); vitest_1.vi.stubGlobal('WebSocket', WebSocket_1.mockWebSocket); (0, vitest_1.describe)('WebsocketManager', () => { (0, vitest_1.beforeEach)(() => { vitest_1.vi.useFakeTimers(); }); (0, vitest_1.afterEach)(() => { vitest_1.vi.restoreAllMocks(); }); (0, vitest_1.test)('isOpen', () => { const webSocket = new websocket_1.default({ url: 'wss' }); webSocket.webSocketInstance = { readyState: WebSocket_1.mockWebSocket.OPEN }; (0, vitest_1.expect)(webSocket.isOpen()).toBeTruthy(); }); (0, vitest_1.test)('isClose', () => { const webSocket = new websocket_1.default({ url: 'wss' }); webSocket.webSocketInstance = { readyState: WebSocket_1.mockWebSocket.CLOSED }; (0, vitest_1.expect)(webSocket.isClose()).toBeTruthy(); }); (0, vitest_1.test)('isClosing', () => { const webSocket = new websocket_1.default({ url: 'wss' }); webSocket.webSocketInstance = { readyState: WebSocket_1.mockWebSocket.CLOSING }; (0, vitest_1.expect)(webSocket.isClosing()).toBeTruthy(); }); (0, vitest_1.test)('isValidWebSocketAnswer', () => { const webSocket = new websocket_1.default({ url: 'wss' }); (0, vitest_1.expect)(webSocket.isValidWebSocketAnswer({ method: vitest_1.test })).toBeTruthy(); }); (0, vitest_1.test)('isIntervaledOperation', () => { const webSocket = new websocket_1.default({ url: 'wss' }); (0, vitest_1.expect)(webSocket.isIntervaledOperation({ method: vitest_1.test, interval: true })).toBeTruthy(); }); (0, vitest_1.test)('isWebSocket', () => { const webSocket = new websocket_1.default({ url: 'wss' }); (0, vitest_1.expect)(webSocket.isWebSocket()).toBeFalsy(); webSocket.isTesting = true; (0, vitest_1.expect)(webSocket.isWebSocket()).toBeTruthy(); }); (0, vitest_1.test)('pickOperationStrategy', () => { const webSocket = new websocket_1.default({ url: 'wss' }); webSocket.addOperation({ method: 'test', request: () => ({}), interval: true }); webSocket.addOperation({ method: 'test2', request: () => ({}) }); webSocket.addOperation({ method: 'test3', request: () => ({}), interval: 1000 }); webSocket.onOpenHandler(); const firstOperation = webSocket.findOperation('test'); (0, vitest_1.expect)(firstOperation._interval).not.toBe(undefined); (0, vitest_1.expect)(webSocket.findOperation('test2')._interval).toBe(undefined); (0, vitest_1.expect)(webSocket.findOperation('test3').interval).toBe(1000); }); (0, vitest_1.test)('onErrorHandler', () => { const webSocket = new websocket_1.default({ url: 'wss' }); webSocket.onErrorHandler({}); (0, vitest_1.expect)(WebSocket_1.webSocketSpy.close).toHaveBeenCalledOnce(); }); (0, vitest_1.test)('onMessageHandler', () => { const webSocket = new websocket_1.default({ url: 'wss' }); const spy = vitest_1.vi.fn(); webSocket.addOperation({ method: 'test', request: () => ({ data: 123 }), handlers: [spy] }); const fixture = { method: 'test', data: { data: 'test' } }; webSocket.onMessageHandler({ data: JSON.stringify(fixture) }); (0, vitest_1.expect)(spy).toHaveBeenCalledOnce(); }); (0, vitest_1.test)('onCloseHandler', () => { const webSocket = new websocket_1.default({ url: 'wss' }); webSocket.addOperation({ method: 'test', request: () => ({ data: 123 }), handlers: [() => { }], interval: true }); webSocket.onOpenHandler(); webSocket.onCloseHandler({ wasClean: true }); (0, vitest_1.expect)(webSocket.reconnectInterval).equal(undefined); webSocket.onCloseHandler({ wasClean: false }); (0, vitest_1.expect)(webSocket.reconnectInterval).not.equal(undefined); (0, vitest_1.expect)(webSocket.findOperation('test')._interval).not.toBe(0); }); (0, vitest_1.test)('addHandlers', () => { const webSocket = new websocket_1.default({ url: 'wss' }); webSocket.addOperation({ method: 'test', request: () => ({ data: 123 }), interval: true }); const operation = webSocket.findOperation('test'); webSocket.addHandlers(operation, [() => { }]); (0, vitest_1.expect)(operation?.handlers?.length).toBe(1); }); (0, vitest_1.test)('removeHandler', () => { const webSocket = new websocket_1.default({ url: 'wss' }); const handler = () => { }; webSocket.addOperation({ method: 'test', request: () => ({ data: 123 }), handlers: [handler] }); webSocket.removeHandler('test', handler); (0, vitest_1.expect)(webSocket.findOperation('test')?.handlers?.length).toBe(0); }); (0, vitest_1.test)('removeOperation', () => { const webSocket = new websocket_1.default({ url: 'wss' }); webSocket.addOperation({ method: 'test', request: () => ({ data: 123 }) }); webSocket.removeOperation('test'); (0, vitest_1.expect)(webSocket.findOperation('test')).toBe(undefined); }); (0, vitest_1.test)('addOperation', () => { const webSocket = new websocket_1.default({ url: 'wss' }); webSocket.addOperation({ method: 'test', request: () => ({ data: 123 }), handlers: [() => { }] }); webSocket.addOperation({ method: 'test', request: () => ({ data: 123 }), handlers: [() => { }] }); const operation = webSocket.findOperation('test'); (0, vitest_1.expect)(operation).not.toBe(undefined); (0, vitest_1.expect)(operation?.handlers?.length).toBe(2); }); (0, vitest_1.test)('getWs', () => { const webSocket = new websocket_1.default({ url: 'wss' }); webSocket.webSocketInstance = { readyState: WebSocket_1.mockWebSocket.OPEN }; webSocket.isTesting = true; webSocket.open(); (0, vitest_1.expect)(WebSocket_1.mockWebSocket).toHaveBeenCalledTimes(0); webSocket.webSocketInstance = { readyState: WebSocket_1.mockWebSocket.CLOSED }; webSocket.open(); (0, vitest_1.expect)(WebSocket_1.mockWebSocket).toHaveBeenCalledTimes(1); }); }); //# sourceMappingURL=websocket.test.js.map