test(Slider): cover Slider with tests
This commit is contained in:
62
src/shared/ui/Slider/Slider.svelte.test.ts
Normal file
62
src/shared/ui/Slider/Slider.svelte.test.ts
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
import {
|
||||||
|
render,
|
||||||
|
screen,
|
||||||
|
} from '@testing-library/svelte';
|
||||||
|
import Slider from './Slider.svelte';
|
||||||
|
|
||||||
|
describe('Slider', () => {
|
||||||
|
describe('Rendering', () => {
|
||||||
|
it('renders a slider element', () => {
|
||||||
|
render(Slider);
|
||||||
|
expect(screen.getByRole('slider')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('displays formatted value', () => {
|
||||||
|
render(Slider, { value: 50 });
|
||||||
|
expect(screen.getByText('50')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('applies a custom formatter', () => {
|
||||||
|
const { container } = render(Slider, { value: 25, format: (v: number) => `${v}%` });
|
||||||
|
expect(container.textContent).toContain('25%');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Props', () => {
|
||||||
|
it('respects min and max attributes', () => {
|
||||||
|
render(Slider, { min: 10, max: 90, value: 50 });
|
||||||
|
const slider = screen.getByRole('slider');
|
||||||
|
expect(slider).toHaveAttribute('aria-valuemin', '10');
|
||||||
|
expect(slider).toHaveAttribute('aria-valuemax', '90');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('reflects value as aria-valuenow', () => {
|
||||||
|
render(Slider, { value: 42 });
|
||||||
|
expect(screen.getByRole('slider')).toHaveAttribute('aria-valuenow', '42');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('is disabled when disabled=true', () => {
|
||||||
|
render(Slider, { disabled: true });
|
||||||
|
expect(screen.getByRole('slider')).toHaveAttribute('aria-disabled', 'true');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('is not disabled by default', () => {
|
||||||
|
render(Slider, { value: 0 });
|
||||||
|
expect(screen.getByRole('slider')).not.toHaveAttribute('aria-disabled', 'true');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Orientations', () => {
|
||||||
|
it('renders horizontal by default', () => {
|
||||||
|
const { container } = render(Slider);
|
||||||
|
expect(screen.getByRole('slider')).toHaveAttribute('aria-orientation', 'horizontal');
|
||||||
|
expect(container.querySelector('.cursor-col-resize')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders vertical when orientation="vertical"', () => {
|
||||||
|
const { container } = render(Slider, { orientation: 'vertical' });
|
||||||
|
expect(screen.getByRole('slider')).toHaveAttribute('aria-orientation', 'vertical');
|
||||||
|
expect(container.querySelector('.cursor-row-resize')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user