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');
});
});
});