import { render, fireEvent } from '@@/test/kalimotxo-test-utils'
import KaForm from './KaForm.vue'
describe('KaForm should', () => {
test('Send form if sumbit is pressed and fields are correct', async () => {
const { button, emitted } = renderForm()
await fireEvent.click(button)
expect(emitted()).toHaveProperty('submit')
})
test('Not submit form if submit is pressed and fields are incorrect', async () => {
window.HTMLElement.prototype.scrollIntoView = jest.fn()
const { button, emitted } = renderForm({ hasError: true })
await fireEvent.click(button)
expect(emitted()).not.toHaveProperty('submit')
expect(window.HTMLElement.prototype.scrollIntoView).toHaveBeenCalledTimes(1)
})
test('Send form if enter key is pressed', async () => {
const { input, emitted } = renderForm()
await fireEvent.submit(input)
expect(emitted()).toHaveProperty('submit')
})
})
function renderForm({ hasError = false } = {}) {
const view = render(
KaForm,
{
slots: {
default: [
``,
``,
],
},
},
(vue) => {
vue.component('KaFormField', {
name: 'KaFormField',
props: { hasError: { type: Boolean, default: hasError } },
render() {
const h = this.$createElement
return h('input', { attrs: { 'data-testid': 'test-input' } })
},
})
},
)
const input = view.getByTestId('test-input')
const button = view.getByText('Submit')
return { ...view, button, input }
}