From 5651403d2e93603b96ef8bef6a10c78560ffc508 Mon Sep 17 00:00:00 2001 From: Kirill Date: Fri, 22 May 2026 12:21:50 +0500 Subject: [PATCH] test(client): add auth page tab tests --- .../pages/auth/__tests__/AuthPage.test.tsx | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 client/src/pages/auth/__tests__/AuthPage.test.tsx diff --git a/client/src/pages/auth/__tests__/AuthPage.test.tsx b/client/src/pages/auth/__tests__/AuthPage.test.tsx new file mode 100644 index 0000000..e068d9c --- /dev/null +++ b/client/src/pages/auth/__tests__/AuthPage.test.tsx @@ -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( + + + + + , + ) +} + +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() + }) +})