import { test, expect } from 'vitest';
import { render, screen, within } from '@testing-library/react';
import SkipLinks from './SkipLinks';
const MAIN_CONTENT_ID = 'main-content';
const LINK_TEXT = 'Skip to main content';
test('skip links renders correctly', () => {
render(
);
const skipLinksList = screen.getByRole('list');
const skipLinksContainer = skipLinksList.parentElement;
const skipLinksListItem = within(skipLinksList).getByRole('listitem');
const skipLinksLink = within(skipLinksList).getByRole('link');
expect(skipLinksContainer).toHaveClass('ds_skip-links');
expect(skipLinksContainer?.tagName).toEqual('DIV');
expect(skipLinksList).toHaveClass('ds_skip-links__list');
expect(skipLinksList.tagName).toEqual('UL');
expect(skipLinksListItem).toHaveClass('ds_skip-links__item');
expect(skipLinksLink).toHaveClass('ds_skip-links__link');
expect(skipLinksLink).toHaveAttribute('href', `#${MAIN_CONTENT_ID}`);
expect(skipLinksLink.textContent).toEqual(LINK_TEXT);
});
test('custom link text', () => {
const MAIN_LINK_TEXT = 'foo';
render(
);
const skipLinksList = screen.getByRole('list');
const skipLinksLink = within(skipLinksList).getByRole('link');
expect(skipLinksLink.textContent).toEqual(MAIN_LINK_TEXT);
});
test('custom link target', () => {
const CUSTOM_ID = 'bar'
render(
);
const skipLinksList = screen.getByRole('list');
const skipLinksLink = within(skipLinksList).getByRole('link');
expect(skipLinksLink).toHaveAttribute('href', `#${CUSTOM_ID}`)
});
test('explicit links', () => {
const LINK_ID = 'foo';
const LINK_TEXT = 'bar';
render(
{LINK_TEXT}
);
const skipLinksList = screen.getByRole('list');
const skipLinksListItems = within(skipLinksList).getAllByRole('listitem');
const skipLinksSecondLink = within(skipLinksList).getByRole('link');
expect(skipLinksListItems.length).toEqual(1);
expect(skipLinksSecondLink).toHaveAttribute('href', `#${LINK_ID}`);
expect(skipLinksSecondLink.textContent).toEqual(LINK_TEXT);
});
test('static skip links', () => {
render(
);
const skipLinksList = screen.getByRole('list');
const skipLinksContainer = skipLinksList.parentElement;
expect(skipLinksContainer).toHaveClass('ds_skip-links--static');
});
test('passing additional props', () => {
render(
);
const skipLinksList = screen.getByRole('list');
const skipLinksContainer = skipLinksList.parentElement;
expect(skipLinksContainer?.dataset.test).toEqual('foo');
});