You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1.2 KiB
31 lines
1.2 KiB
import { render, screen } from "@testing-library/react";
|
|
import { describe, expect, it, vi } from "vitest";
|
|
import RequiredStepsCard from "./required-steps-card";
|
|
|
|
vi.mock("@/translations/provider", () => ({
|
|
useI18n: () => ({
|
|
dictionary: new Proxy({}, { get: (_target, key) => String(key) }),
|
|
}),
|
|
}));
|
|
|
|
describe("RequiredStepsCard", () => {
|
|
it("renders a real empty 0/9 state without a shimmer", () => {
|
|
const { container } = render(<RequiredStepsCard completed={0} total={9} />);
|
|
|
|
expect(screen.getByText("0/9")).toBeDefined();
|
|
expect(container.querySelector(".shimmer-white-bg")).toBeNull();
|
|
const circles = container.querySelectorAll("svg")[1].querySelectorAll("circle");
|
|
expect(circles[1].getAttribute("stroke-dashoffset")).toBe(
|
|
String(2 * Math.PI * 25),
|
|
);
|
|
});
|
|
|
|
it("renders required section completion independently from optional assessments", () => {
|
|
const { container } = render(<RequiredStepsCard completed={4} total={9} />);
|
|
|
|
expect(screen.getByText("4/9")).toBeDefined();
|
|
const circles = container.querySelectorAll("svg")[1].querySelectorAll("circle");
|
|
const offset = Number(circles[1].getAttribute("stroke-dashoffset"));
|
|
expect(offset).toBeCloseTo(2 * Math.PI * 25 * (5 / 9));
|
|
});
|
|
});
|