import { renderHook } from "@testing-library/react" import { describe, it, expect } from "vitest" import { useCheckboxChecked } from "./useCheckboxChecked" type Item = { id: string name: string } describe("useCheckboxChecked with Map", () => { it("returns false when no items are selected", () => { const allItems: Item[] = [ { id: "1", name: "Item 1" }, { id: "2", name: "Item 2" }, ] const selectedItems = new Map() const { result } = renderHook(() => useCheckboxChecked(allItems, selectedItems), ) expect(result.current).toBe(false) }) it("returns true when all items are selected", () => { const allItems: Item[] = [ { id: "1", name: "Item 1" }, { id: "2", name: "Item 2" }, ] const selectedItems = new Map([ ["1", { id: "1", name: "Item 1" }], ["2", { id: "2", name: "Item 2" }], ]) const { result } = renderHook(() => useCheckboxChecked(allItems, selectedItems), ) expect(result.current).toBe(true) }) it('returns "indeterminate" when some but not all items are selected', () => { const allItems: Item[] = [ { id: "1", name: "Item 1" }, { id: "2", name: "Item 2" }, ] const selectedItems = new Map([["1", { id: "1", name: "Item 1" }]]) const { result } = renderHook(() => useCheckboxChecked(allItems, selectedItems), ) expect(result.current).toBe("indeterminate") }) it("works with an empty list of allItems and returns false", () => { const allItems: Item[] = [] const selectedItems = new Map() const { result } = renderHook(() => useCheckboxChecked(allItems, selectedItems), ) expect(result.current).toBe(false) }) it("handles items with different ids properly", () => { const allItems: Item[] = [ { id: "abc", name: "Item A" }, { id: "def", name: "Item B" }, ] const selectedItems = new Map([["abc", { id: "abc", name: "Item A" }]]) const { result } = renderHook(() => useCheckboxChecked(allItems, selectedItems), ) expect(result.current).toBe("indeterminate") }) })