mirror of
https://github.com/theoludwig/react-component-form.git
synced 2024-07-17 07:30:13 +02:00
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
|
import React from 'react'
|
||
|
import Form, { HandleForm } from '.'
|
||
|
import { render, cleanup, fireEvent } from '@testing-library/react'
|
||
|
|
||
|
afterEach(cleanup)
|
||
|
|
||
|
describe('Form component', () => {
|
||
|
it('should get the formData and formElement onSubmit and onChange', () => {
|
||
|
let formData: { [k: string]: any } = {}
|
||
|
let formElement: any = null
|
||
|
const handleSubmitChange: HandleForm = (data, element) => {
|
||
|
formData = data
|
||
|
formElement = element
|
||
|
}
|
||
|
const formComponent = render(
|
||
|
<Form onSubmit={handleSubmitChange} onChange={handleSubmitChange}>
|
||
|
<input data-testid='input-form' type='text' name='inputName' />
|
||
|
<button data-testid='button-submit' type='submit'>
|
||
|
Submit
|
||
|
</button>
|
||
|
</Form>
|
||
|
)
|
||
|
const inputForm = formComponent.getByTestId(
|
||
|
'input-form'
|
||
|
) as HTMLInputElement
|
||
|
const buttonSubmit = formComponent.getByTestId('button-submit')
|
||
|
const text = 'some random text'
|
||
|
|
||
|
fireEvent.change(inputForm, { target: { value: text } })
|
||
|
expect(formData.inputName).toEqual(text)
|
||
|
expect(formElement instanceof HTMLFormElement).toBeTruthy()
|
||
|
formData = {}
|
||
|
formElement = null
|
||
|
|
||
|
fireEvent.click(buttonSubmit)
|
||
|
expect(Object.keys(formData).length).toEqual(1)
|
||
|
expect(formData.inputName).toEqual(text)
|
||
|
expect(formElement instanceof HTMLFormElement).toBeTruthy()
|
||
|
})
|
||
|
})
|