mirror of
https://bitbucket.org/Mattrixwv/mattrixwvreactcomponents.git
synced 2025-12-06 21:53:57 -05:00
154 lines
6.1 KiB
TypeScript
154 lines
6.1 KiB
TypeScript
import InfoMessageBlock from "$/component/message/InfoMessageBlock";
|
|
import { render, screen } from "@testing-library/react";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
|
|
const messageText = "This is an info message block component used for displaying important messages to users.";
|
|
|
|
|
|
describe("Renders with defaults", () => {
|
|
it("Renders with default properties", () => {
|
|
render(<InfoMessageBlock>{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the default classes
|
|
expect(messageBlock).toHaveClass("px-4", "py-2");
|
|
expect(messageBlock).toHaveClass("border");
|
|
expect(messageBlock).toHaveClass("rounded-lg");
|
|
expect(messageBlock).toHaveClass("bg-cyan-100", "text-blue-600");
|
|
});
|
|
it("Renders with custom className", () => {
|
|
const customClassName = "custom-info-message-block-class";
|
|
|
|
render(<InfoMessageBlock className={customClassName}>{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the custom class
|
|
expect(messageBlock).toHaveClass(customClassName);
|
|
});
|
|
it("Renders with aria-label", () => {
|
|
const ariaLabel = "Info Message Block Aria Label";
|
|
|
|
render(<InfoMessageBlock aria-label={ariaLabel}>{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the aria-label attribute
|
|
expect(messageBlock).toHaveAttribute("aria-label", ariaLabel);
|
|
});
|
|
});
|
|
|
|
describe("Outline Variants", () => {
|
|
it("Renders with no outline", () => {
|
|
render(<InfoMessageBlock outline="none">{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the no outline class
|
|
expect(messageBlock).toHaveClass("border-0");
|
|
});
|
|
it("Renders with small outline", () => {
|
|
render(<InfoMessageBlock outline="sm">{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the small outline class
|
|
expect(messageBlock).toHaveClass("border");
|
|
});
|
|
it("Renders with medium outline", () => {
|
|
render(<InfoMessageBlock outline="md">{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the medium outline class
|
|
expect(messageBlock).toHaveClass("border-2");
|
|
});
|
|
it("Renders with large outline", () => {
|
|
render(<InfoMessageBlock outline="lg">{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the large outline class
|
|
expect(messageBlock).toHaveClass("border-3");
|
|
});
|
|
});
|
|
|
|
describe("Rounded Variants", () => {
|
|
it("Renders with no rounding", () => {
|
|
render(<InfoMessageBlock rounded="none">{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the no rounding class
|
|
expect(messageBlock).toHaveClass("rounded-none");
|
|
});
|
|
it("Renders with extra small rounding", () => {
|
|
render(<InfoMessageBlock rounded="xs">{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the extra small rounding class
|
|
expect(messageBlock).toHaveClass("rounded-xs");
|
|
});
|
|
it("Renders with small rounding", () => {
|
|
render(<InfoMessageBlock rounded="sm">{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the small rounding class
|
|
expect(messageBlock).toHaveClass("rounded-sm");
|
|
});
|
|
it("Renders with medium rounding", () => {
|
|
render(<InfoMessageBlock rounded="md">{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the medium rounding class
|
|
expect(messageBlock).toHaveClass("rounded-md");
|
|
});
|
|
it("Renders with large rounding", () => {
|
|
render(<InfoMessageBlock rounded="lg">{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the large rounding class
|
|
expect(messageBlock).toHaveClass("rounded-lg");
|
|
});
|
|
it("Renders with extra large rounding", () => {
|
|
render(<InfoMessageBlock rounded="xl">{messageText}</InfoMessageBlock>);
|
|
|
|
//Make sure the message div is present
|
|
const messageBlock = screen.getByTestId("mattrixwv-info-message-block");
|
|
expect(messageBlock).toBeInTheDocument();
|
|
expect(messageBlock).toHaveTextContent(messageText);
|
|
//Check for the extra large rounding class
|
|
expect(messageBlock).toHaveClass("rounded-xl");
|
|
});
|
|
});
|