import { describe, it, expect, vi } from 'vitest'
import { render, screen, fireEvent } from '@testing-library/react'
import HozzadasForm from '../components/HozzadasForm'
describe('HozzadasForm', () => {
it('Hibák megjelennek üres submitnál', () => {
const mockHozzaAd = vi.fn()
render()
const submitButton = screen.getByDisplayValue('Küldés')
fireEvent.submit(submitButton.closest('form'))
expect(screen.getByText('A név megadása kötelező')).toBeInTheDocument()
expect(screen.getByText('Az email megadása kötelező')).toBeInTheDocument()
expect(mockHozzaAd).not.toHaveBeenCalled()
})
it('Érvényes adatoknál meghívódik az onSubmit', () => {
const mockHozzaAd = vi.fn()
render()
const nevInput = screen.getByPlaceholderText('Név')
const emailInput = screen.getByPlaceholderText('Email')
const submitButton = screen.getByDisplayValue('Küldés')
fireEvent.change(nevInput, { target: { value: 'Teszt Elek' } })
fireEvent.change(emailInput, { target: { value: 'teszt@proba.com' } })
fireEvent.submit(submitButton.closest('form'))
expect(mockHozzaAd).toHaveBeenCalledWith(
expect.objectContaining({
nev: 'Teszt Elek',
email: 'teszt@proba.com'
})
)
})
it('Érvénytelen email nem engedi a submitet', () => {
const mockHozzaAd = vi.fn()
render()
const nevInput = screen.getByPlaceholderText('Név')
const emailInput = screen.getByPlaceholderText('Email')
const submitButton = screen.getByDisplayValue('Küldés')
fireEvent.change(nevInput, { target: { value: 'Teszt Elek' } })
fireEvent.change(emailInput, { target: { value: 'rosszemail' } })
fireEvent.submit(submitButton.closest('form'))
expect(screen.getByText('Érvénytelen email formátum')).toBeInTheDocument()
expect(mockHozzaAd).not.toHaveBeenCalled()
})
})