/* eslint-disable formatjs/no-literal-string-in-jsx */
import { describe, expect, it, afterEach } from "vitest"
import { render, screen, cleanup } from "@testing-library/react"
import { ChipStatic } from "./ChipStatic"
afterEach(() => {
cleanup()
})
describe("ChipStatic", () => {
describe("rendering", () => {
it("renders as a span element", () => {
render(Static Chip)
const chip = screen.getByText("Static Chip")
expect(chip).toBeTruthy()
expect(chip.tagName).toBe("SPAN")
})
it("renders children content", () => {
render(Chip Content)
expect(screen.getByText("Chip Content")).toBeTruthy()
})
it("renders with multiple children", () => {
render(
Icon
Label
)
expect(screen.getByText("Icon")).toBeTruthy()
expect(screen.getByText("Label")).toBeTruthy()
})
})
describe("color variants", () => {
it("renders Neutral color (default)", () => {
render(Neutral)
expect(screen.getByText("Neutral")).toBeTruthy()
})
it("renders Subtle color", () => {
render(Subtle)
expect(screen.getByText("Subtle")).toBeTruthy()
})
it("renders Disabled color", () => {
render(Disabled)
expect(screen.getByText("Disabled")).toBeTruthy()
})
})
describe("sizes", () => {
it("renders xs size", () => {
render(Extra Small)
expect(screen.getByText("Extra Small")).toBeTruthy()
})
it("renders sm size (default)", () => {
render(Small)
expect(screen.getByText("Small")).toBeTruthy()
})
it("renders lg size", () => {
render(Large)
expect(screen.getByText("Large")).toBeTruthy()
})
})
describe("typography", () => {
it("uses uppercase typography by default", () => {
render(Default Case)
expect(screen.getByText("Default Case")).toBeTruthy()
})
it("uses lowercase typography when lowerCase is true", () => {
render(Lower Case)
expect(screen.getByText("Lower Case")).toBeTruthy()
})
})
describe("props", () => {
it("applies custom className", () => {
render(Styled)
const chip = screen.getByText("Styled")
expect(chip.className).toContain("custom-class")
})
})
describe("edge cases", () => {
it("handles empty string children", () => {
const emptyString = ""
const { container } = render({emptyString})
const span = container.querySelector("span")
expect(span).toBeTruthy()
})
it("handles numeric children", () => {
render({42})
expect(screen.getByText("42")).toBeTruthy()
})
})
})