UNPKG

@push.rocks/smartexpect

Version:

A testing library to manage expectations in code, offering both synchronous and asynchronous assertion methods.

45 lines 4.79 kB
import { Assertion } from '../smartexpect.classes.assertion.js'; import * as plugins from '../plugins.js'; /** * Namespace for array-specific matchers */ export class ArrayMatchers { constructor(assertion) { this.assertion = assertion; } toBeArray() { return this.assertion.customAssertion((value) => Array.isArray(value), `Expected value to be array`); } toHaveLength(length) { return this.assertion.customAssertion((value) => value.length === length, `Expected array to have length ${length}`); } toContain(item) { return this.assertion.customAssertion((value) => value.includes(item), `Expected array to contain ${JSON.stringify(item)}`); } toContainEqual(item) { return this.assertion.customAssertion((value) => value.some((e) => plugins.fastDeepEqual(e, item)), (value) => `Expected array to contain equal to ${JSON.stringify(item)}` + `\nReceived: ${JSON.stringify(value, null, 2)}`); } toContainAll(items) { return this.assertion.customAssertion((value) => items.every((i) => value.includes(i)), `Expected array to contain all ${JSON.stringify(items)}`); } toExclude(item) { return this.assertion.customAssertion((value) => !value.includes(item), `Expected array to exclude ${JSON.stringify(item)}`); } toBeEmptyArray() { return this.assertion.customAssertion((value) => Array.isArray(value) && value.length === 0, `Expected array to be empty`); } /** * Alias for empty array check */ toBeEmpty() { return this.toBeEmptyArray(); } toHaveLengthGreaterThan(length) { return this.assertion.customAssertion((value) => value.length > length, `Expected array to have length greater than ${length}`); } toHaveLengthLessThan(length) { return this.assertion.customAssertion((value) => value.length < length, `Expected array to have length less than ${length}`); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9uYW1lc3BhY2VzL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUd6Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQW9CLFNBQTRCO1FBQTVCLGNBQVMsR0FBVCxTQUFTLENBQW1CO0lBQUcsQ0FBQztJQUVwRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDbkMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQy9CLDRCQUE0QixDQUM3QixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQ25DLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBRSxLQUFhLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFDM0MsaUNBQWlDLE1BQU0sRUFBRSxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFPO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDbkMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFFLEtBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQ3hDLDZCQUE2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQU87UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDbkMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFFLEtBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQ3JFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixzQ0FBc0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1RCxlQUFlLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUNsRCxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQ25DLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxLQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3pELGlDQUFpQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ3pELENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQU87UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBRSxLQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUN6Qyw2QkFBNkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNwRCxDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSyxLQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFDOUQsNEJBQTRCLENBQzdCLENBQUM7SUFDSixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELHVCQUF1QixDQUFDLE1BQWM7UUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDbkMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFFLEtBQWEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUN6Qyw4Q0FBOEMsTUFBTSxFQUFFLENBQ3ZELENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBYztRQUNqQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUUsS0FBYSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQ3pDLDJDQUEyQyxNQUFNLEVBQUUsQ0FDcEQsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9