import { describe, expect, test, vi } from 'vitest'; import { render, screen } from '@testing-library/svelte'; import { pageUrlModule } from '$test-utils/mocks/appState'; const state = vi.hoisted(() => ({ pageUrl: new URL('http://localhost/discover') })); vi.mock('$app/state', () => pageUrlModule(state)); import DiscoverTabs from './DiscoverTabs.svelte'; describe('DiscoverTabs', () => { test('Discover tab is current on /discover', () => { state.pageUrl = new URL('http://localhost/discover'); render(DiscoverTabs); expect(screen.getByRole('link', { name: /discover/i })).toHaveAttribute('aria-current', 'page'); expect(screen.getByRole('link', { name: /requests/i })).not.toHaveAttribute('aria-current'); }); test('Requests tab is current on /requests', () => { state.pageUrl = new URL('http://localhost/requests'); render(DiscoverTabs); expect(screen.getByRole('link', { name: /requests/i })).toHaveAttribute('aria-current', 'page'); expect(screen.getByRole('link', { name: /discover/i })).not.toHaveAttribute('aria-current'); }); test('renders both tabs in order', () => { state.pageUrl = new URL('http://localhost/discover'); render(DiscoverTabs); const labels = screen.getAllByRole('link').map((l) => l.textContent?.trim()); expect(labels).toEqual(['Discover', 'Requests']); }); });