Skip to content

Commit c1d5433

Browse files
authored
fix(yup): lazy schema (#619)
1 parent 4882173 commit c1d5433

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

yup/src/__tests__/yup.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,4 +189,29 @@ describe('yupResolver', () => {
189189
expect(schemaSyncSpy).not.toHaveBeenCalled();
190190
expect(result).toEqual({ errors: {}, values: validData });
191191
});
192+
193+
it('shoud validate a lazy schema with success', async () => {
194+
const lazySchema = yup.lazy(() => yup.object().shape({ firstName: yup.string().optional() }));
195+
196+
const schemaSpy = vi.spyOn(lazySchema, 'validate');
197+
const schemaSyncSpy = vi.spyOn(lazySchema, 'validateSync');
198+
199+
const result = await yupResolver(lazySchema, undefined,)(
200+
{ firstName: "resolver" },
201+
undefined,
202+
{
203+
fields: {
204+
firstName: {
205+
ref: { name: 'firstName' },
206+
name: 'firstName',
207+
}
208+
},
209+
shouldUseNativeValidation,
210+
},
211+
);
212+
213+
expect(schemaSpy).toHaveBeenCalledTimes(1);
214+
expect(schemaSyncSpy).not.toHaveBeenCalled();
215+
expect(result).toEqual({ errors: {}, values: { firstName: "resolver" } });
216+
});
192217
});

yup/src/yup.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const parseErrorSchema = (
4343
};
4444

4545
export function yupResolver<TFieldValues extends FieldValues>(
46-
schema: Yup.ObjectSchema<TFieldValues>,
46+
schema: Yup.ObjectSchema<TFieldValues> | ReturnType<typeof Yup.lazy>,
4747
schemaOptions: Parameters<(typeof schema)['validate']>[1] = {},
4848
resolverOptions: {
4949
/**
@@ -90,7 +90,7 @@ export function yupResolver<TFieldValues extends FieldValues>(
9090
parseErrorSchema(
9191
e,
9292
!options.shouldUseNativeValidation &&
93-
options.criteriaMode === 'all',
93+
options.criteriaMode === 'all',
9494
),
9595
options,
9696
),

0 commit comments

Comments
 (0)