test: add test for svelte components
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
import { render, screen, fireEvent } from "@testing-library/svelte";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import SelectFont from "$components/ui/SelectFont.svelte";
|
||||
|
||||
describe("SelectFont.svelte", () => {
|
||||
const fonts = [
|
||||
"Arial",
|
||||
"Verdana",
|
||||
"Georgia",
|
||||
"Times New Roman",
|
||||
"Courier New",
|
||||
"Impact",
|
||||
"Comic Sans MS",
|
||||
"Trebuchet MS",
|
||||
];
|
||||
|
||||
it("should render with initial value", () => {
|
||||
const { container } = render(SelectFont, {
|
||||
props: {
|
||||
value: "Arial",
|
||||
},
|
||||
});
|
||||
|
||||
const select = container.querySelector(".select-input");
|
||||
expect(select).toBeInTheDocument();
|
||||
expect(select).toHaveValue("Arial");
|
||||
});
|
||||
|
||||
it("should render all font options", () => {
|
||||
render(SelectFont, {
|
||||
props: {
|
||||
value: "Arial",
|
||||
},
|
||||
});
|
||||
|
||||
fonts.forEach(font => {
|
||||
const options = screen.queryAllByText(font);
|
||||
expect(options.length).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
|
||||
it("should update value on change", async () => {
|
||||
const { container } = render(SelectFont, {
|
||||
props: {
|
||||
value: "Arial",
|
||||
},
|
||||
});
|
||||
|
||||
const select = container.querySelector(".select-input");
|
||||
await fireEvent.change(select, { target: { value: "Verdana" } });
|
||||
|
||||
expect(select).toHaveValue("Verdana");
|
||||
});
|
||||
|
||||
it("should select different fonts", async () => {
|
||||
const { container } = render(SelectFont, {
|
||||
props: {
|
||||
value: "Arial",
|
||||
},
|
||||
});
|
||||
|
||||
const select = container.querySelector(".select-input");
|
||||
|
||||
await fireEvent.change(select, { target: { value: "Georgia" } });
|
||||
expect(select).toHaveValue("Georgia");
|
||||
|
||||
await fireEvent.change(select, { target: { value: "Impact" } });
|
||||
expect(select).toHaveValue("Impact");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user