e2ed
Version:
E2E testing framework over Playwright
51 lines (50 loc) • 2.35 kB
JavaScript
;
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;