e2ed
Version:
E2E testing framework over Playwright
54 lines (53 loc) • 2.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mockWebSocketRoute = void 0;
const fullMocks_1 = require("../../context/fullMocks");
const webSocketMockState_1 = require("../../context/webSocketMockState");
const useContext_1 = require("../../useContext");
const asserts_1 = require("../../utils/asserts");
const fn_1 = require("../../utils/fn");
const log_1 = require("../../utils/log");
const mockWebSocketRoute_1 = require("../../utils/mockWebSocketRoute");
const object_1 = require("../../utils/object");
/**
* Mock WebSocket for some API route.
* Applicable only for routes with the `getParamsFromUrlOrThrow` method.
* The mock is applied to a WebSocket that matches the route by url
* (by methods `getParamsFromUrlOrThrow` and `isMatchUrl`).
*/
const mockWebSocketRoute = async (Route, webSocketMockFunction, { skipLogs = false } = {}) => {
(0, fn_1.setCustomInspectOnFunction)(webSocketMockFunction);
const webSocketMockState = (0, webSocketMockState_1.getWebSocketMockState)();
if (!webSocketMockState.isMocksEnabled) {
return;
}
const fullMocksState = (0, fullMocks_1.getFullMocksState)();
if (fullMocksState?.appliedMocks !== undefined) {
(0, object_1.setReadonlyProperty)(webSocketMockState, 'isMocksEnabled', false);
}
let { optionsByRoute } = webSocketMockState;
if (optionsByRoute === undefined) {
optionsByRoute = new Map();
(0, object_1.setReadonlyProperty)(webSocketMockState, 'optionsByRoute', optionsByRoute);
const requestsFilter = (0, mockWebSocketRoute_1.getRequestsFilter)(webSocketMockState);
(0, object_1.setReadonlyProperty)(webSocketMockState, 'requestsFilter', requestsFilter);
}
if (optionsByRoute.size === 0) {
const { requestsFilter } = webSocketMockState;
(0, asserts_1.assertValueIsDefined)(requestsFilter, 'requestsFilter is defined', {
routeName: Route.name,
webSocketMockState,
});
const page = (0, useContext_1.getPlaywrightPage)();
const setResponse = (0, mockWebSocketRoute_1.getSetResponse)(webSocketMockState);
await page.routeWebSocket(requestsFilter, setResponse);
}
optionsByRoute.set(Route, {
skipLogs,
webSocketMockFunction: webSocketMockFunction,
});
if (skipLogs !== true) {
(0, log_1.log)(`Mock WebSocket for route "${Route.name}"`, { webSocketMockFunction }, 5 /* LogEventType.InternalAction */);
}
};
exports.mockWebSocketRoute = mockWebSocketRoute;