UNPKG

@contract-case/case-core

Version:

Core functionality for the ContractCase contract testing suite

73 lines 3.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ContractDefinerConnector = void 0; const case_plugin_base_1 = require("@contract-case/case-plugin-base"); const core_1 = require("../../core"); const dependencies_1 = require("../dependencies"); const config_1 = require("../../core/config"); class ContractDefinerConnector { contract; invoker; config; constructor(description, config, invoker, printer, parentVersions, dependencies = (0, dependencies_1.writerDependencies)(printer)) { this.config = { ...dependencies.defaultConfig, ...(0, config_1.configFromEnv)(), ...config, }; this.contract = new core_1.WritingCaseContract(description, dependencies, this.config, parentVersions); this.invoker = invoker; } registerFunction(handle, invokeableFn) { this.contract.registerFunction(handle, invokeableFn); } runInteraction({ states = [], definition, trigger, triggers, triggerAndTest, triggerAndTests, testResponse, stateHandlers, }, runConfig = {}) { if (trigger === undefined && testResponse !== undefined) { throw new case_plugin_base_1.CaseConfigurationError('The testResponse function was supplied, but this is not valid without also supplying `trigger`', 'DONT_ADD_LOCATION', 'INVALID_CONFIG'); } if (trigger !== undefined && testResponse === undefined) { throw new case_plugin_base_1.CaseConfigurationError('There was a trigger supplied, but without a corresponding `testResponse` function', 'DONT_ADD_LOCATION', 'INVALID_CONFIG'); } return this.contract.executeTest({ states, mockDescription: definition, trigger, triggers: triggers || this.invoker.triggers || {}, testResponse, triggerAndTest, triggerAndTests, stateHandlers: stateHandlers || this.invoker.stateHandlers || {}, }, runConfig); } runRejectingInteraction({ states = [], definition, trigger, triggers, triggerAndTest, triggerAndTests, testErrorResponse, stateHandlers, }, runConfig = {}) { if (trigger === undefined && testErrorResponse !== undefined) { throw new case_plugin_base_1.CaseConfigurationError('The testErrorResponse function was supplied, but this is not valid without also supplying `trigger`', 'DONT_ADD_LOCATION', 'INVALID_CONFIG'); } if (trigger !== undefined && testErrorResponse === undefined) { throw new case_plugin_base_1.CaseConfigurationError('There was a trigger supplied, but without a corresponding `testErrorResponse` function', 'DONT_ADD_LOCATION', 'INVALID_CONFIG'); } return this.contract.executeTest({ states, mockDescription: definition, trigger, testResponse: undefined, triggerAndTest, triggerAndTests, testErrorResponse, triggers: triggers || this.invoker.triggers || {}, stateHandlers: stateHandlers || this.invoker.stateHandlers || {}, }, runConfig); } endRecord() { return this.contract.endRecord(); } stripMatchers(matcherOrData) { return this.contract.stripMatchers(matcherOrData); } } exports.ContractDefinerConnector = ContractDefinerConnector; //# sourceMappingURL=ContractDefinerConnector.js.map