import { expect, describe, it } from "vitest";
import { render } from "vitest-browser-react";
import { Styles } from "./Styles";
import React from "react";
describe("Styles Component", () => {
it("测试传递styles的className StylesDescriptor", () => {
const { getByRole } = render(
);
const renderClassName = getByRole("button").elements()[0].className;
expect(renderClassName).toBe("p-2 hover:bg-blue text-blue");
});
it("测试传递styles的className string", () => {
const { getByRole } = render(
);
const renderClassName = getByRole("button").elements()[0].className;
expect(renderClassName).toBe("button_class");
});
it("测试嵌套的Styles组件,仅string", () => {
const { getByRole } = render(
);
const renderClassName = getByRole("button").elements()[0].className;
expect(renderClassName).toBe("outer inner");
});
it("测试嵌套的Styles组件,含string和StylesDescriptor", () => {
const { getByRole } = render(
);
const renderClassName = getByRole("button").elements()[0].className;
expect(renderClassName).toBe("p-2 hover:bg-blue text-blue button_class");
});
it("测试children本身含有样式的混入", () => {
const { getByRole } = render(
);
const renderClassName = getByRole("button").elements()[0].className;
expect(renderClassName).toBe("wrapper outer inner");
});
it("测试传递属性空值", () => {
const { getByRole } = render(
);
const renderClassName = getByRole("button").elements()[0].className;
expect(renderClassName).toBe("");
});
it("测试空值与有值嵌套", () => {
const { getByRole } = render(
);
const renderClassName = getByRole("button").elements()[0].className;
expect(renderClassName).toBe("inner");
});
it("测试asWrapper为true", () => {
const { container } = render(
);
expect(container.querySelector("div")?.className).toBe("wrapper");
expect(container.querySelector("button")?.className).toBe("");
});
it("测试asWrapper为指定标签", () => {
const { container } = render(
);
expect(container.querySelector("section")?.className).toBe("wrapper");
expect(container.querySelector("button")?.className).toBe("");
});
it("测试asWrapper与嵌套组合", () => {
const { container } = render(
);
expect(container.querySelector("div")?.className).toBe("outer");
expect(container.querySelector("button")?.className).toBe("inner btn");
});
});