Skip to content

Commit f674014

Browse files
committed
chore: test cases
1 parent fc1faa4 commit f674014

File tree

4 files changed

+169
-0
lines changed

4 files changed

+169
-0
lines changed

packages/angular-form/tests/test.component.spec.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,3 +363,52 @@ describe('TanStackFieldDirective', () => {
363363
expect(getByText(onBlurError)).toBeInTheDocument()
364364
})
365365
})
366+
367+
describe('form should reset when rendered correctly - angular', () => {
368+
it('should be able to handle async resets', async () => {
369+
@Component({
370+
selector: 'test-component',
371+
standalone: true,
372+
template: `
373+
<ng-container [tanstackField]="form" name="name" #f="field">
374+
<input
375+
data-testid="fieldinput"
376+
[value]="f.api.state.value"
377+
(input)="f.api.handleChange($any($event).target.value)"
378+
/>
379+
</ng-container>
380+
<button
381+
type="button"
382+
(click)="form.handleSubmit()"
383+
data-testid="submit"
384+
>
385+
submit
386+
</button>
387+
`,
388+
imports: [TanStackField],
389+
})
390+
class TestComponent {
391+
form = injectForm({
392+
defaultValues: {
393+
name: '',
394+
},
395+
onSubmit: ({ value }) => {
396+
expect(value).toEqual({ name: 'test' })
397+
this.form.reset({ name: 'test' })
398+
},
399+
})
400+
}
401+
402+
const { getByTestId } = await render(TestComponent)
403+
404+
const input = getByTestId('fieldinput')
405+
const submit = getByTestId('submit')
406+
407+
await user.type(input, 'test')
408+
await expect(input).toHaveValue('test')
409+
410+
await user.click(submit)
411+
412+
await expect(input).toHaveValue('test')
413+
})
414+
})

packages/form-core/tests/FormApi.spec.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,25 @@ describe('form api', () => {
120120
})
121121
})
122122

123+
it('form should reset when rendered correctly - core', async () => {
124+
const defaultValues = {
125+
name: '',
126+
}
127+
const form = new FormApi({
128+
defaultValues: defaultValues,
129+
onSubmit: ({ value }) => {
130+
form.reset(value)
131+
132+
expect(form.options.defaultValues).toMatchObject({
133+
name: 'test',
134+
})
135+
},
136+
})
137+
form.mount()
138+
form.setFieldValue('name', 'test')
139+
form.handleSubmit()
140+
})
141+
123142
it('should reset and set the new default values that are restored after an empty reset', () => {
124143
const form = new FormApi({ defaultValues: { name: 'initial' } })
125144
form.mount()

packages/react-form/tests/useForm.test.tsx

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,3 +795,53 @@ describe('useForm', () => {
795795
expect(fn).toHaveBeenCalledTimes(1)
796796
})
797797
})
798+
799+
it('form should reset when rendered correctly - react', async () => {
800+
function Comp() {
801+
const form = useForm({
802+
defaultValues: {
803+
name: '',
804+
},
805+
onSubmit: ({ value }) => {
806+
expect(value).toEqual({ name: 'test' })
807+
808+
form.reset({ name: 'test' })
809+
},
810+
})
811+
812+
return (
813+
<div>
814+
<form.Field
815+
name="name"
816+
children={(field) => (
817+
<input
818+
data-testid="fieldinput"
819+
name={field.name}
820+
value={field.state.value}
821+
onChange={(e) => field.handleChange(e.target.value)}
822+
/>
823+
)}
824+
/>
825+
826+
<button
827+
type="button"
828+
onClick={() => form.handleSubmit()}
829+
data-testid="submit"
830+
>
831+
submit
832+
</button>
833+
</div>
834+
)
835+
}
836+
837+
const { getByTestId } = render(<Comp />)
838+
const input = getByTestId('fieldinput')
839+
const submit = getByTestId('submit')
840+
841+
await user.type(input, 'test')
842+
await waitFor(() => expect(input).toHaveValue('test'))
843+
844+
await user.click(submit)
845+
846+
await waitFor(() => expect(input).toHaveValue('test'))
847+
})

packages/vue-form/tests/useForm.test.tsx

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,4 +476,55 @@ describe('useForm', () => {
476476
await waitFor(() => getByText(error))
477477
expect(getByText(error)).toBeInTheDocument()
478478
})
479+
480+
it('form should reset when rendered correctly - vue', async () => {
481+
const Comp = defineComponent(() => {
482+
const form = useForm({
483+
defaultValues: {
484+
name: '',
485+
},
486+
onSubmit: ({ value }) => {
487+
expect(value).toEqual({ name: 'test' })
488+
489+
form.reset({ name: 'test' })
490+
},
491+
})
492+
493+
return () => (
494+
<div>
495+
<form.Field name="name">
496+
{({ field }: { field: AnyFieldApi }) => (
497+
<input
498+
data-testid="fieldinput"
499+
name={field.name}
500+
value={field.state.value}
501+
onInput={(e) =>
502+
field.handleChange((e.target as HTMLInputElement).value)
503+
}
504+
/>
505+
)}
506+
</form.Field>
507+
508+
<button
509+
type="button"
510+
onClick={() => form.handleSubmit()}
511+
data-testid="submit"
512+
>
513+
submit
514+
</button>
515+
</div>
516+
)
517+
})
518+
519+
const { getByTestId } = render(<Comp />)
520+
const input = getByTestId('fieldinput')
521+
const submit = getByTestId('submit')
522+
523+
await user.type(input, 'test')
524+
await waitFor(() => expect(input).toHaveValue('test'))
525+
526+
await user.click(submit)
527+
528+
await waitFor(() => expect(input).toHaveValue('test'))
529+
})
479530
})

0 commit comments

Comments
 (0)