UNPKG

@case-contract-testing/case

Version:

Next-generation contract testing suite

46 lines (45 loc) 2.11 kB
"use strict"; 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;