assertthat
Version:
assertthat provides fluent TDD.
42 lines (41 loc) • 1.99 kB
JavaScript
;
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;