@push.rocks/smartexpect
Version:
A testing library to manage expectations in code, offering both synchronous and asynchronous assertion methods.
45 lines • 4.79 kB
JavaScript
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