/** * Tests for ResponsiveGrid component */ const React = require("react"); describe("ResponsiveGrid Component", () => { test("should have proper component structure", () => { const ResponsiveGrid = require("../../../src/tui/components/common/ResponsiveGrid.jsx"); expect(typeof ResponsiveGrid).toBe("function"); }); test("should handle items array prop", () => { const testItems = [ { id: 1, name: "Item 1" }, { id: 2, name: "Item 2" }, { id: 3, name: "Item 3" }, { id: 4, name: "Item 4" }, { id: 5, name: "Item 5" }, ]; expect(Array.isArray(testItems)).toBe(true); expect(testItems.length).toBe(5); }); test("should handle renderItem function prop", () => { const renderItem = (item, index) => `Grid item ${index}: ${item.name}`; expect(typeof renderItem).toBe("function"); const testItem = { name: "Test Item" }; const result = renderItem(testItem, 0); expect(result).toBe("Grid item 0: Test Item"); }); test("should handle minItemWidth prop", () => { const minItemWidths = [10, 20, 30, 40]; minItemWidths.forEach((width) => { expect(typeof width).toBe("number"); expect(width).toBeGreaterThan(0); }); }); test("should handle gap prop", () => { const gapOptions = [true, false]; gapOptions.forEach((option) => { expect(typeof option).toBe("boolean"); }); }); test("should calculate grid layout correctly", () => { const items = [1, 2, 3, 4, 5, 6, 7]; const columns = 3; // Group items into rows const rows = []; for (let i = 0; i < items.length; i += columns) { rows.push(items.slice(i, i + columns)); } expect(rows.length).toBe(3); // 3 rows expect(rows[0]).toEqual([1, 2, 3]); expect(rows[1]).toEqual([4, 5, 6]); expect(rows[2]).toEqual([7]); }); test("should ensure minimum item width", () => { const calculatedWidth = 15; const minItemWidth = 20; const itemWidth = Math.max(calculatedWidth, minItemWidth); expect(itemWidth).toBe(20); }); test("should handle empty items array", () => { const emptyItems = []; expect(Array.isArray(emptyItems)).toBe(true); expect(emptyItems.length).toBe(0); }); });