UNPKG

@case-contract-testing/case

Version:

Next-generation contract testing suite

24 lines (23 loc) 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EachArrayEntryMatches = void 0; const context_1 = require("../../entities/context"); const results_1 = require("../../entities/results"); const strip = (matcher, matchContext) => 'case:matcher:example' in matcher ? matchContext.descendAndStrip(matcher['case:matcher:example'], (0, context_1.addLocation)(`:eachEntryLike[example]`, matchContext)) : [ matchContext.descendAndStrip(matcher['case:matcher:matcher'], (0, context_1.addLocation)(`:eachEntryLike[matcher]`, matchContext)), ]; const check = async (matcher, matchContext, actual) => (0, results_1.combineResults)(Array.isArray(actual) ? (0, results_1.combineResults)(actual.length !== 0 ? (await Promise.all(actual .map((actualEntry, index) => matchContext.descendAndCheck(matcher['case:matcher:matcher'], (0, context_1.addLocation)(`:eachEntryLike[${index}]`, matchContext), actualEntry)) .flat())).flat() : (0, results_1.makeResults)((0, results_1.matchingError)(matcher, // TODO: Documentation links `Expected a non-empty array. It's not valid to use eachArrayEntryMatches for empty arrays. See the documentation for more details`, actual, matchContext))) : (0, results_1.makeResults)((0, results_1.matchingError)(matcher, `'${typeof actual}' is not an array`, actual, matchContext))); exports.EachArrayEntryMatches = { describe: (matcher, context) => `an array where each entry matches ${context.descendAndDescribe(matcher['case:matcher:matcher'], (0, context_1.addLocation)(`:eachEntryLike`, context))}`, check, strip, };