Files
MattrixwvReactComponents/test/component/message/SuccessMessageBlock.test.tsx
2025-11-18 22:48:52 -05:00

154 lines
6.3 KiB
TypeScript

import SuccessMessageBlock from "$/component/message/SuccessMessageBlock";
import { render, screen } from "@testing-library/react";
import { describe, expect, it } from "vitest";
const messageText = "This is a success message block component used for displaying important messages to users.";
describe("Renders with defaults", () => {
it("Renders with default properties", () => {
render(<SuccessMessageBlock>{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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-green-100", "text-green-600");
});
it("Renders with custom className", () => {
const customClassName = "custom-success-message-block-class";
render(<SuccessMessageBlock className={customClassName}>{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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 = "Success Message Block Aria Label";
render(<SuccessMessageBlock aria-label={ariaLabel}>{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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(<SuccessMessageBlock outline="none">{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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(<SuccessMessageBlock outline="sm">{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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(<SuccessMessageBlock outline="md">{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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(<SuccessMessageBlock outline="lg">{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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(<SuccessMessageBlock rounded="none">{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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(<SuccessMessageBlock rounded="xs">{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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(<SuccessMessageBlock rounded="sm">{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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(<SuccessMessageBlock rounded="md">{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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(<SuccessMessageBlock rounded="lg">{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-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(<SuccessMessageBlock rounded="xl">{messageText}</SuccessMessageBlock>);
//Make sure the message div is present
const messageBlock = screen.getByTestId("mattrixwv-success-message-block");
expect(messageBlock).toBeInTheDocument();
expect(messageBlock).toHaveTextContent(messageText);
//Check for the extra large rounding class
expect(messageBlock).toHaveClass("rounded-xl");
});
});