UNPKG

assertthat

Version:
42 lines (41 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.wrapAsyncAssertionForIterable = exports.wrapAssertionForIterable = void 0; const errors_1 = require("./errors"); const prettyPrint_1 = require("./prettyPrint/typeAware/prettyPrint"); const typedescriptor_1 = require("typedescriptor"); const defekt_1 = require("defekt"); const wrapAssertionForIterable = function (assertion) { return (actual, ...params) => { for (const [index, item] of actual.entries()) { const result = assertion(item, ...params); if (result.hasError()) { return (0, defekt_1.error)(new errors_1.AssertionFailed({ message: `Assertion failed for item ${(0, prettyPrint_1.prettyPrint)(index)} of the ${(0, typedescriptor_1.typeOf)(actual)}.\n${result.error.message}`, actual: result.error.data.actual, expected: result.error.data.expected, diff: result.error.data.diff })); } } return (0, defekt_1.value)(); }; }; exports.wrapAssertionForIterable = wrapAssertionForIterable; const wrapAsyncAssertionForIterable = function (assertion) { return async (actual, ...params) => { for (const [index, item] of actual.entries()) { const result = await assertion(item, ...params); if (result.hasError()) { return (0, defekt_1.error)(new errors_1.AssertionFailed({ message: `Assertion failed for item ${(0, prettyPrint_1.prettyPrint)(index)} of the ${(0, typedescriptor_1.typeOf)(actual)}.\n${result.error.message}`, actual: result.error.data.actual, expected: result.error.data.expected, diff: result.error.data.diff })); } } return (0, defekt_1.value)(); }; }; exports.wrapAsyncAssertionForIterable = wrapAsyncAssertionForIterable;