import { ValidationSchemas } from '~/domain'; import { themis } from '~/main'; const wrapSut = (sut: S) => ({ sut }); const getMakeSutFn = (type: T, rules: ValidationSchemas.Rules) => { const makeSchemaFn = themis[type] as (rules: ValidationSchemas.Rules) => ValidationSchemas; return (moreRules: ValidationSchemas.Rules) => { return wrapSut(makeSchemaFn({ ...rules, ...moreRules })); }; }; export const getMakeSut = Object.assign(getMakeSutFn, { customFormat: ( format: ValidationSchemas.Format, rules: ValidationSchemas.Rules ) => { return (moreRules: ValidationSchemas.Rules) => { return wrapSut(themis.custom[format]({ ...rules, ...moreRules })); }; }, });