import { render, screen } from '@testing-library/react'; import React from 'react'; import { describe, expect, it } from 'vitest'; import { MdSkipToMainContent } from '../MdSkipToMainContent'; describe('MdSkipToMainContent', () => { describe('rendering', () => { it('renders a link', () => { render(); expect(screen.getByRole('link')).toBeInTheDocument(); }); it('renders default text', () => { render(); expect(screen.getByText('Hopp til hovedinnhold')).toBeInTheDocument(); }); it('renders custom children text', () => { render(Skip to content); expect(screen.getByText('Skip to content')).toBeInTheDocument(); }); it('renders children as ReactNode', () => { render( Custom content , ); expect(screen.getByTestId('custom')).toBeInTheDocument(); }); }); describe('href', () => { it('sets href attribute', () => { render(); expect(screen.getByRole('link')).toHaveAttribute('href', '#main-content'); }); }); describe('styling', () => { it('has skip-to-main-content class', () => { render(); expect(screen.getByRole('link')).toHaveClass('md-skip-to-main-content'); }); }); describe('props forwarding', () => { it('forwards id', () => { render(); expect(screen.getByRole('link')).toHaveAttribute('id', 'skip-link'); }); it('forwards aria-label', () => { render(); expect(screen.getByRole('link')).toHaveAttribute('aria-label', 'Skip navigation'); }); it('forwards data-* attributes', () => { render(); expect(screen.getByTestId('skip')).toBeInTheDocument(); }); }); describe('accessibility', () => { it('is a link element for keyboard navigation', () => { render(); const link = screen.getByRole('link'); expect(link.tagName).toBe('A'); }); it('has descriptive text', () => { render(); expect(screen.getByRole('link')).toHaveAccessibleName('Hopp til hovedinnhold'); }); }); });