test(client): add auth page tab tests
This commit is contained in:
@@ -0,0 +1,59 @@
|
|||||||
|
import { render, screen, fireEvent } from '@testing-library/react'
|
||||||
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
|
||||||
|
import { MemoryRouter } from 'react-router-dom'
|
||||||
|
import { describe, expect, it, vi } from 'vitest'
|
||||||
|
import { AuthPage } from '../ui/AuthPage'
|
||||||
|
|
||||||
|
vi.mock('@/shared/api/client', () => ({ apiClient: { post: vi.fn() } }))
|
||||||
|
vi.mock('effector-react', async () => {
|
||||||
|
const actual = await vi.importActual('effector-react')
|
||||||
|
return { ...actual, useUnit: () => null }
|
||||||
|
})
|
||||||
|
|
||||||
|
function renderPage() {
|
||||||
|
const qc = new QueryClient({ defaultOptions: { queries: { retry: false } } })
|
||||||
|
return render(
|
||||||
|
<QueryClientProvider client={qc}>
|
||||||
|
<MemoryRouter>
|
||||||
|
<AuthPage />
|
||||||
|
</MemoryRouter>
|
||||||
|
</QueryClientProvider>,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('AuthPage', () => {
|
||||||
|
it('renders three tabs', () => {
|
||||||
|
renderPage()
|
||||||
|
expect(screen.getByRole('tab', { name: 'Пароль' })).toBeTruthy()
|
||||||
|
expect(screen.getByRole('tab', { name: 'Код' })).toBeTruthy()
|
||||||
|
expect(screen.getByRole('tab', { name: 'Другой способ' })).toBeTruthy()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('shows login form by default on tab 0', () => {
|
||||||
|
renderPage()
|
||||||
|
expect(screen.getByText('Вход')).toBeTruthy()
|
||||||
|
expect(screen.getByText('Регистрация')).toBeTruthy()
|
||||||
|
const buttons = screen.getAllByRole('button')
|
||||||
|
const loginBtn = buttons.find((b) => b.textContent === 'Войти')
|
||||||
|
expect(loginBtn).toBeTruthy()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('switches to register form', () => {
|
||||||
|
renderPage()
|
||||||
|
fireEvent.click(screen.getByText('Регистрация'))
|
||||||
|
expect(screen.getByText('Зарегистрироваться')).toBeTruthy()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('switches to code tab', () => {
|
||||||
|
renderPage()
|
||||||
|
fireEvent.click(screen.getByText('Код'))
|
||||||
|
expect(screen.getByText('Отправить код')).toBeTruthy()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('switches to OAuth tab', () => {
|
||||||
|
renderPage()
|
||||||
|
fireEvent.click(screen.getByText('Другой способ'))
|
||||||
|
expect(screen.getByText('Войти через VK ID')).toBeTruthy()
|
||||||
|
expect(screen.getByText('Войти через Яндекс ID')).toBeTruthy()
|
||||||
|
})
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user