UNPKG

e2ed

Version:

E2E testing framework over Playwright

51 lines (50 loc) 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mockApiRoute = void 0; const apiMockState_1 = require("../../context/apiMockState"); const fullMocks_1 = require("../../context/fullMocks"); const useContext_1 = require("../../useContext"); const asserts_1 = require("../../utils/asserts"); const fn_1 = require("../../utils/fn"); const log_1 = require("../../utils/log"); const mockApiRoute_1 = require("../../utils/mockApiRoute"); const object_1 = require("../../utils/object"); /** * Mock API for some API route. * Applicable only for routes with the `getParamsFromUrlOrThrow` method. * The mock is applied to a request that matches the route by url * (by methods `getParamsFromUrlOrThrow` and `isMatchUrl`). */ const mockApiRoute = async (Route, apiMockFunction, { skipLogs = false } = {}) => { (0, fn_1.setCustomInspectOnFunction)(apiMockFunction); const apiMockState = (0, apiMockState_1.getApiMockState)(); if (!apiMockState.isMocksEnabled) { return; } const fullMocksState = (0, fullMocks_1.getFullMocksState)(); if (fullMocksState?.appliedMocks !== undefined) { (0, object_1.setReadonlyProperty)(apiMockState, 'isMocksEnabled', false); } let { optionsByRoute } = apiMockState; if (optionsByRoute === undefined) { optionsByRoute = new Map(); (0, object_1.setReadonlyProperty)(apiMockState, 'optionsByRoute', optionsByRoute); const requestsFilter = (0, mockApiRoute_1.getRequestsFilter)(apiMockState); (0, object_1.setReadonlyProperty)(apiMockState, 'requestsFilter', requestsFilter); } if (optionsByRoute.size === 0) { const { requestsFilter } = apiMockState; (0, asserts_1.assertValueIsDefined)(requestsFilter, 'requestsFilter is defined', { apiMockState, routeName: Route.name, }); const page = (0, useContext_1.getPlaywrightPage)(); const setResponse = (0, mockApiRoute_1.getSetResponse)(apiMockState); await page.route(requestsFilter, setResponse); } optionsByRoute.set(Route, { apiMockFunction: apiMockFunction, skipLogs }); if (skipLogs !== true) { (0, log_1.log)(`Mock API for route "${Route.name}"`, { apiMockFunction }, 5 /* LogEventType.InternalAction */); } }; exports.mockApiRoute = mockApiRoute;