import React from 'react';
import { render, screen, fireEvent } from '@testing-library/react';
import '@testing-library/jest-dom';
import { DefaultNavigationArrow } from '../DefaultNavigationArrow';
describe('DefaultNavigationArrow', () => {
const mockOnClick = jest.fn();
beforeEach(() => {
mockOnClick.mockClear();
});
it('renders left arrow', () => {
render(
);
const button = screen.getByLabelText('Previous items');
expect(button).toBeInTheDocument();
});
it('renders right arrow', () => {
render(
);
const button = screen.getByLabelText('Next items');
expect(button).toBeInTheDocument();
});
it('calls onClick when clicked', () => {
render(
);
const button = screen.getByLabelText('Previous items');
fireEvent.click(button);
expect(mockOnClick).toHaveBeenCalledTimes(1);
});
it('does not call onClick when disabled', () => {
render(
);
const button = screen.getByLabelText('Previous items');
fireEvent.click(button);
expect(mockOnClick).not.toHaveBeenCalled();
});
it('applies disabled styling when disabled', () => {
render(
);
const button = screen.getByLabelText('Previous items');
expect(button).toHaveAttribute('disabled');
});
it('renders SVG icon', () => {
const { container } = render(
);
const svg = container.querySelector('svg');
expect(svg).toBeInTheDocument();
});
it('has correct aria-label for accessibility', () => {
const { rerender } = render(
);
expect(screen.getByLabelText('Previous items')).toBeInTheDocument();
rerender(
);
expect(screen.getByLabelText('Next items')).toBeInTheDocument();
});
it('renders as a button element', () => {
render(
);
const button = screen.getByLabelText('Previous items');
expect(button.tagName).toBe('BUTTON');
});
it('applies correct styles based on direction', () => {
const { container, rerender } = render(
);
let button = container.querySelector('button');
expect(button).toBeInTheDocument();
rerender(
);
button = container.querySelector('button');
expect(button).toBeInTheDocument();
});
});