UNPKG

@iamkenos/iris

Version:

Test API endpoints with Axios & Jest using a collection of custom matchers and built-in utility functions.

99 lines 4.46 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.configure = void 0; const fs = __importStar(require("fs-extra")); const path = __importStar(require("path")); const callsites_1 = __importDefault(require("callsites")); const dotenv_1 = __importDefault(require("dotenv")); function loadEnv(baseDir) { const { NODE_ENV } = process.env; dotenv_1.default.config({ path: NODE_ENV ? path.join(baseDir, `.env.${NODE_ENV}`) : path.join(baseDir, ".env") }); } function getConfigResultsDir(overrides) { const { RESULTS_DIR } = process.env; const { resultsDir = "results/", baseDir } = overrides; return path.join(baseDir, RESULTS_DIR ? RESULTS_DIR : resultsDir); } function getConfigSnapshotsDir(overrides) { const { SNAPSHOTS_DIR } = process.env; const { snapshotsDir = "snapshots/", baseDir } = overrides; return path.join(baseDir, SNAPSHOTS_DIR ? SNAPSHOTS_DIR : snapshotsDir); } function getConfigSnapshots(overrides) { const [actualDir, expectedDir, diffDir] = ["actual", "expected", "diff"]; const { snapshots } = overrides; const snapshotsDir = getConfigSnapshotsDir(overrides); const snapshotOptions = { schema: { outDir: "schema", ...snapshots?.schema } }; Object.keys(snapshotOptions).forEach(key => { snapshotOptions[key].outDir = path.resolve(snapshotsDir, snapshotOptions[key].outDir); snapshotOptions[key].actualDir = path.resolve(snapshotOptions[key].outDir, actualDir); snapshotOptions[key].expectedDir = path.resolve(snapshotOptions[key].outDir, expectedDir); snapshotOptions[key].diffDir = path.resolve(snapshotOptions[key].outDir, diffDir); fs.removeSync(snapshotOptions[key].actualDir); fs.removeSync(snapshotOptions[key].diffDir); }); return snapshotOptions; } function getPresetTestResultsProcessor(overrides) { const resultsDir = getConfigResultsDir(overrides); process.env.JEST_HTML_REPORTER_OUTPUT_PATH = path.join(resultsDir, "report.html"); process.env.JEST_HTML_REPORTER_INCLUDE_FAILURE_MSG = "true"; process.env.JEST_HTML_REPORTER_INCLUDE_SUITE_FAILURE = "true"; const testResultsProcessor = path.join(process.cwd(), "node_modules/jest-html-reporter"); return testResultsProcessor; } function configure(overrides = {}) { const baseDir = path.dirname((0, callsites_1.default)()[1].getFileName()).replace("file://", ""); loadEnv(baseDir); // custom options defaults overrides.baseDir = baseDir; const iris = { baseDir, resultsDir: getConfigResultsDir(overrides), snapshots: getConfigSnapshots(overrides) }; // jest options defaults const config = { ...overrides, preset: path.resolve(__dirname, "../../"), testResultsProcessor: getPresetTestResultsProcessor(overrides) }; // remove custom config props from here then assign everything under globals so we can get the config object from there delete config.baseDir; const { resultsDir, snapshotsDir, snapshots, globals, ...rest } = config; // eslint-disable-line config.globals = { ...globals, iris: { config: { ...iris, ...rest } } }; return config; } exports.configure = configure; //# sourceMappingURL=index.js.map