import React from 'react'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { vi, describe, test, beforeEach, expect } from 'vitest'; import HelpPage from '../../pages/HelpPage'; // Mock react-router-dom const mockNavigate = vi.fn(); const mockUseLocation = vi.fn(); vi.mock('react-router-dom', () => ({ BrowserRouter: ({ children }: { children: React.ReactNode }) => <>{children}, useNavigate: () => mockNavigate, useLocation: () => mockUseLocation(), })); // Mock the useFilterContext hook const mockUseFilterContext = { search: '', srcFilter: '', catFilter: '', regionFilter: '', countryFilter: '', imageTypeFilter: '', showReferenceExamples: false, setSearch: vi.fn(), setSrcFilter: vi.fn(), setCatFilter: vi.fn(), setRegionFilter: vi.fn(), setCountryFilter: vi.fn(), setImageTypeFilter: vi.fn(), setShowReferenceExamples: vi.fn(), clearAllFilters: vi.fn(), }; vi.mock('../../hooks/useFilterContext', () => ({ useFilterContext: () => mockUseFilterContext, })); describe('HelpPage + Routing Integration', () => { beforeEach(() => { vi.clearAllMocks(); mockUseLocation.mockReturnValue({ pathname: '/help' }); }); test('HelpPage shows all help sections', () => { render(); // Check if all help section headings are visible expect(screen.getByRole('heading', { name: /Introduction/i })).toBeInTheDocument(); expect(screen.getByRole('heading', { name: /Guidelines/i })).toBeInTheDocument(); expect(screen.getByRole('heading', { name: /VLMs/i })).toBeInTheDocument(); expect(screen.getByRole('heading', { name: /Dataset/i })).toBeInTheDocument(); expect(screen.getByRole('heading', { name: /Contact us/i })).toBeInTheDocument(); }); test('HelpPage navigates to explore when export button is clicked', async () => { const user = userEvent.setup(); render(); // Find and click the export dataset button const exportButton = screen.getByRole('button', { name: /export dataset/i }); await user.click(exportButton); // The button should be present expect(exportButton).toBeInTheDocument(); }); test('HelpPage shows contact information', () => { render(); // Check if contact information is displayed expect(screen.getByText(/Contact us/i)).toBeInTheDocument(); expect(screen.getByText(/Need help or have questions about PromptAid Vision/i)).toBeInTheDocument(); }); test('HelpPage shows guidelines section with common issues', () => { render(); // Check if guidelines section is displayed expect(screen.getByRole('heading', { name: /Guidelines/i })).toBeInTheDocument(); expect(screen.getByText(/Avoid uploading images that are not crisis maps/i)).toBeInTheDocument(); }); test('HelpPage shows VLMs section with key capabilities', () => { render(); // Check if VLMs section is displayed expect(screen.getByRole('heading', { name: /VLMs/i })).toBeInTheDocument(); expect(screen.getByText(/random VLM is selected for each upload/i)).toBeInTheDocument(); }); });