UNPKG

@visual-framework/vf-button

Version:

vf-button component

56 lines (48 loc) 2.2 kB
import React from "react"; import { render, screen } from "@testing-library/react"; import '@testing-library/jest-dom'; import VfButton from "./vf-button"; describe("VfButton component", () => { test("renders with default props", () => { render(<VfButton text="Click me" />); const buttonElement = screen.getByText("Click me"); expect(buttonElement).toBeInTheDocument(); expect(buttonElement).toHaveClass("vf-button"); }); test("applies theme class", () => { render(<VfButton text="Click me" theme="primary" />); const buttonElement = screen.getByText("Click me"); expect(buttonElement).toHaveClass("vf-button--primary"); }); test("applies outline class", () => { render(<VfButton text="Click me" outline />); const buttonElement = screen.getByText("Click me"); expect(buttonElement).toHaveClass("vf-button--outline"); }); test("applies size class", () => { render(<VfButton text="Click me" size="lg" />); const buttonElement = screen.getByText("Click me"); expect(buttonElement).toHaveClass("vf-button--lg"); }); test("applies style class", () => { render(<VfButton text="Click me" style="primary" />); const buttonElement = screen.getByText("Click me"); expect(buttonElement).toHaveClass("vf-button--primary"); }); test("applies multiple style classes", () => { render(<VfButton text="Click me" style={["primary", "outline"]} />); const buttonElement = screen.getByText("Click me"); expect(buttonElement).toHaveClass("vf-button--primary"); expect(buttonElement).toHaveClass("vf-button--outline"); }); test("applies override class", () => { render(<VfButton text="Click me" override_class="custom-class" />); const buttonElement = screen.getByText("Click me"); expect(buttonElement).toHaveClass("custom-class"); }); test("applies id attribute", () => { render(<VfButton text="Click me" id="button-id" />); const buttonElement = screen.getByText("Click me"); expect(buttonElement).toHaveAttribute("id", "button-id"); }); });