import { cleanup, render } from "@solidjs/testing-library";
import { createSignal } from "solid-js";
import { afterEach, describe, expect, it, vi } from "vitest";
import { Button } from "../../../src/ts/components/common/Button";
import { FaSolidIcon } from "../../../src/ts/types/font-awesome";
describe("Button component", () => {
afterEach(() => {
cleanup();
});
it("renders a button element when onClick is provided", () => {
const onClick = vi.fn();
const { container } = render(() => (
));
const button = container.querySelector("button");
expect(button).toBeTruthy();
expect(button).toHaveTextContent("Click me");
expect(button).not.toBeDisabled();
});
it("renders an anchor element when href is provided", () => {
const { container } = render(() => (
));
const anchor = container.querySelector("a");
expect(anchor).toBeTruthy();
expect(anchor).toHaveAttribute("href", "https://example.com");
expect(anchor).toHaveAttribute("target", "_blank");
expect(anchor).toHaveAttribute("rel", "noreferrer noopener");
expect(anchor).not.toHaveAttribute("router-link");
expect(anchor).not.toHaveAttribute("aria-label");
expect(anchor).not.toHaveAttribute("data-balloon-pos");
});
it("calls onClick when button is clicked", async () => {
const onClick = vi.fn();
const { container } = render(() => (
));
const button = container.querySelector("button");
button?.click();
expect(onClick).toHaveBeenCalledTimes(1);
});
it("renders icon when icon prop is provided", () => {
const { container } = render(() => (