@contract-case/case-core
Version:
Core functionality for the ContractCase contract testing suite
51 lines • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeFailedExample = exports.makeSuccessExample = exports.exampleToNames = void 0;
const case_plugin_base_1 = require("@contract-case/case-plugin-base");
const getRequestName = (index, mock) => {
if (!('request' in mock)) {
return 'No request defined';
}
return '_case:matcher:uniqueName' in mock.request &&
typeof mock.request['_case:matcher:uniqueName'] === 'string'
? mock.request['_case:matcher:uniqueName']
: `Mock ${index}'s request`;
};
const getResponseName = (index, mock) => {
if (!('response' in mock)) {
return 'No response defined';
}
if (mock.response == null) {
return 'null';
}
return '_case:matcher:uniqueName' in mock.response &&
typeof mock.response['_case:matcher:uniqueName'] === 'string'
? mock.response['_case:matcher:uniqueName']
: `Mock ${index}'s response`;
};
const exampleToNames = ({ states, mock }, index) => {
const stateNames = states.map((state) => state.stateName).join(' and ');
const requestName = getRequestName(index, mock);
const responseName = getResponseName(index, mock);
return {
requestName,
responseName,
mockName: `${stateNames !== '' ? `When ${stateNames}, then ` : ''}${requestName} ${responseName}`,
};
};
exports.exampleToNames = exampleToNames;
const makeSuccessExample = (example) => {
if (example.result !== 'PENDING') {
throw new case_plugin_base_1.CaseCoreError(`Trying to make a successful example from one that wasn't pending (was ${example.result})`);
}
return { ...example, result: 'VERIFIED' };
};
exports.makeSuccessExample = makeSuccessExample;
const makeFailedExample = (example, errors) => {
if (example.result !== 'PENDING') {
throw new case_plugin_base_1.CaseCoreError(`Trying to make a failed example from one that wasn't pending (was ${example.result})`);
}
return { ...example, result: 'FAILED', errors };
};
exports.makeFailedExample = makeFailedExample;
//# sourceMappingURL=examples.js.map