@case-contract-testing/case
Version:
Next-generation contract testing suite
46 lines (45 loc) • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.addLookupableMatcher = exports.findVariable = exports.addVariable = exports.findMatcher = exports.hasFailure = exports.addExample = exports.makeContract = void 0;
const caseVersion_1 = require("../../entities/caseVersion");
const lookup_1 = require("./lookup");
const internals_1 = require("./lookup/internals");
const makeContract = (description) => ({
contractType: 'case::contract',
description,
metadata: { case: { version: caseVersion_1.caseVersion } },
matcherLookup: {},
examples: new Array(),
});
exports.makeContract = makeContract;
const addExample = (contract, example, context) => ({
...contract,
matcherLookup: (0, lookup_1.addMock)(contract.matcherLookup, example.mock, context),
examples: [...contract.examples, example],
});
exports.addExample = addExample;
const hasFailure = (contract) => contract.examples.find((example) => example.result === 'FAILED') !==
undefined;
exports.hasFailure = hasFailure;
const findMatcher = (contract, uniqueName) => (0, internals_1.findLookup)(contract.matcherLookup, 'matcher', uniqueName);
exports.findMatcher = findMatcher;
const addVariable = (contract, uniqueName, variable, context) => ({
...contract,
matcherLookup: (0, internals_1.addLookup)(contract.matcherLookup, `variable:default`, uniqueName, variable, context),
examples: [...contract.examples],
});
exports.addVariable = addVariable;
const findVariable = (contract, uniqueName) => {
const stateVariable = (0, internals_1.findLookup)(contract.matcherLookup, 'variable:state', uniqueName);
if (stateVariable !== undefined) {
return stateVariable;
}
return (0, internals_1.findLookup)(contract.matcherLookup, `variable:default`, uniqueName);
};
exports.findVariable = findVariable;
const addLookupableMatcher = (contract, matcher, context) => ({
...contract,
matcherLookup: (0, lookup_1.addMatcher)(contract.matcherLookup, matcher, context),
examples: [...contract.examples],
});
exports.addLookupableMatcher = addLookupableMatcher;