62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
import { render, screen, fireEvent } from "@testing-library/svelte";
|
|
import { describe, expect, it, vi } from "vitest";
|
|
import RangeSlider from "$components/ui/RangeSlider.svelte";
|
|
|
|
describe("RangeSlider.svelte", () => {
|
|
it("should render with default props", () => {
|
|
const { container } = render(RangeSlider, {
|
|
props: {
|
|
value: 50,
|
|
},
|
|
});
|
|
|
|
const slider = container.querySelector(".slider");
|
|
expect(slider).toBeInTheDocument();
|
|
expect(screen.getByText("50")).toBeInTheDocument();
|
|
});
|
|
|
|
it("should render with custom min, max, step", () => {
|
|
const { container } = render(RangeSlider, {
|
|
props: {
|
|
value: 25,
|
|
min: 0,
|
|
max: 50,
|
|
step: 5,
|
|
},
|
|
});
|
|
|
|
const slider = container.querySelector(".slider");
|
|
expect(slider).toHaveAttribute("min", "0");
|
|
expect(slider).toHaveAttribute("max", "50");
|
|
expect(slider).toHaveAttribute("step", "5");
|
|
});
|
|
|
|
it("should update value on change", async () => {
|
|
const { container } = render(RangeSlider, {
|
|
props: {
|
|
value: 50,
|
|
},
|
|
});
|
|
|
|
const slider = container.querySelector(".slider");
|
|
await fireEvent.input(slider, { target: { value: "75" } });
|
|
|
|
expect(screen.getByText("75")).toBeInTheDocument();
|
|
});
|
|
|
|
it("should call onchange handler", async () => {
|
|
const onchange = vi.fn();
|
|
const { container } = render(RangeSlider, {
|
|
props: {
|
|
value: 50,
|
|
onchange,
|
|
},
|
|
});
|
|
|
|
const slider = container.querySelector(".slider");
|
|
await fireEvent.change(slider, { target: { value: "75" } });
|
|
|
|
expect(onchange).toHaveBeenCalled();
|
|
});
|
|
});
|