import React from "react"; import "@testing-library/jest-dom/extend-expect"; import { render } from "@testing-library/react"; import Button from "../button"; const variants = [ "primary", "secondary", "success", "danger", "warning", "info", "light", "dark", "link", "white", "outline-primary", "outline-secondary", "outline-success", "outline-danger", "outline-warning", "outline-info", "outline-light", "outline-dark", "outline-white" ] as const; test("shows default button", () => { const { queryByTestId } = render(); expect(queryByTestId("btn")).toBeTruthy(); expect(queryByTestId("btn")).toHaveClass("btn-primary"); }); test("shows custom color disabled button", () => { const { queryByTestId } = render( ); expect(queryByTestId("btn")).toBeTruthy(); expect(queryByTestId("btn")).toHaveClass("btn-info"); expect(queryByTestId("btn")).toHaveClass("disabled"); }); test("shows different variant buttons", () => { variants.forEach((variant: typeof variants[number]) => { const { queryByTestId, unmount } = render( ); expect(queryByTestId("btn")).toHaveClass(`btn-${variant}`); unmount(); }); }); test("shows different sizes", () => { const sm = render( ); expect(sm.queryByTestId("btn")).toHaveClass(`btn-sm`); sm.unmount(); const lg = render( ); expect(lg.queryByTestId("btn")).toHaveClass(`btn-lg`); lg.unmount(); }); test("shows different types", () => { const button = render( ); expect(button.queryByTestId("btn").getAttribute("type")).toEqual("button"); button.unmount(); const submit = render( ); expect(submit.queryByTestId("btn").getAttribute("type")).toEqual("submit"); submit.unmount(); const reset = render( ); expect(reset.queryByTestId("btn").getAttribute("type")).toEqual("reset"); reset.unmount(); }); test("shows active state", () => { const active = render( ); expect(active.queryByTestId("btn")).toHaveClass("active"); active.unmount(); const notActive = render(); expect(notActive.queryByTestId("btn")).not.toHaveClass("btn-lg"); notActive.unmount(); }); test("shows as block", () => { const block = render( ); expect(block.queryByTestId("btn")).toHaveClass("btn-block"); block.unmount(); const notBlock = render(); expect(notBlock.queryByTestId("btn")).not.toHaveClass("btn-block"); notBlock.unmount(); });