+
diff --git a/tests/components/IconCard.test.tsx b/tests/components/IconCard.test.tsx
new file mode 100644
index 0000000..5b050a8
--- /dev/null
+++ b/tests/components/IconCard.test.tsx
@@ -0,0 +1,111 @@
+import React from "react";
+import { describe, it, expect, vi } from "vitest";
+import { render, screen, fireEvent } from "@testing-library/react";
+import "@testing-library/jest-dom/vitest";
+import IconCard from "../../app/components/IconCard";
+import {
+ componentTestSuite,
+ type ComponentTestSuiteConfig,
+} from "../utils/componentTestSuite";
+
+type IconCardProps = React.ComponentProps
;
+
+const baseProps: IconCardProps = {
+ icon: Icon
,
+ title: "Worker's cooperatives",
+ description:
+ "Employee-owned businesses often need to clarify how power is shared",
+};
+
+const config: ComponentTestSuiteConfig = {
+ component: IconCard,
+ name: "IconCard",
+ props: baseProps,
+ requiredProps: ["icon", "title", "description"],
+ optionalProps: {
+ className: "custom-class",
+ onClick: vi.fn(),
+ },
+ primaryRole: "button",
+ testCases: {
+ renders: true,
+ accessibility: true,
+ keyboardNavigation: true,
+ disabledState: false,
+ errorState: false,
+ },
+};
+
+componentTestSuite(config);
+
+describe("IconCard (behavioral tests)", () => {
+ it("calls onClick when clicked", () => {
+ const handleClick = vi.fn();
+ render(
+ Icon}
+ title="Test Title"
+ description="Test Description"
+ onClick={handleClick}
+ />,
+ );
+ const card = screen.getByRole("button");
+ fireEvent.click(card);
+ expect(handleClick).toHaveBeenCalledTimes(1);
+ });
+
+ it("calls onClick when Enter key is pressed", () => {
+ const handleClick = vi.fn();
+ render(
+