import { ValidationError } from '~/domain'; class AssertValidation { constructor(private readonly result: ValidationError | null) {} public toBeInvalid = () => { expect(this.result).not.toBeValidResult(); }; public toBeValid = () => { expect(this.result).toBeValidResult(); }; public toBe = (valid: boolean) => { return (valid ? this.toBeValid : this.toBeInvalid)(); }; public get erratum() { return new AssertErratumValidation(this.result); } } class AssertErratumValidation { constructor(private readonly result: ValidationError | null) {} private get erratum(): ValidationError.ValidationErratum { return this.result?.erratum || []; } toHaveErrorOnProperty = (path: string) => { expect(this.erratum).toContainEqual(expect.stringContaining(path)); }; } export const assertValidation = (result: ValidationError | null): AssertValidation => { return new AssertValidation(result); };