@contract-case/case-core
Version:
Core functionality for the ContractCase contract testing suite
73 lines • 3.51 kB
JavaScript
;
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