@ryinner/web-socket-manager
Version:
simple ws manager
158 lines • 6.98 kB
JavaScript
;
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