import * as React from "react"; import {render} from "@testing-library/react"; import {Autocomplete, AutocompleteItem, AutocompleteSection} from "../src"; type Item = { label: string; value: string; }; const itemsData: Item[] = [ {label: "Cat", value: "cat"}, {label: "Dog", value: "dog"}, {label: "Elephant", value: "elephant"}, {label: "Lion", value: "lion"}, {label: "Tiger", value: "tiger"}, {label: "Giraffe", value: "giraffe"}, {label: "Dolphin", value: "dolphin"}, {label: "Penguin", value: "penguin"}, {label: "Zebra", value: "zebra"}, {label: "Shark", value: "shark"}, {label: "Whale", value: "whale"}, {label: "Otter", value: "otter"}, {label: "Crocodile", value: "crocodile"}, ]; const itemsSectionData = [ { key: "mammals", title: "Mammals", children: [ {key: "lion", label: "Lion", value: "lion"}, {key: "tiger", label: "Tiger", value: "tiger"}, {key: "elephant", label: "Elephant", value: "elephant"}, ], }, { key: "birds", title: "Birds", children: [ {key: "penguin", label: "Penguin", value: "penguin"}, {key: "ostrich", label: "Ostrich", value: "ostrich"}, {key: "peacock", label: "Peacock", value: "peacock"}, ], }, ]; describe("Autocomplete", () => { it("should render correctly", () => { const wrapper = render( Penguin Zebra Shark , ); expect(() => wrapper.unmount()).not.toThrow(); }); it("ref should be forwarded", () => { const ref = React.createRef(); render( Penguin Zebra Shark , ); expect(ref.current).not.toBeNull(); }); it("should render correctly (dynamic)", () => { const wrapper = render( {(item) => {item.label}} , ); expect(() => wrapper.unmount()).not.toThrow(); }); it("should render correctly with section (static)", () => { const wrapper = render( Penguin Zebra Shark , ); expect(() => wrapper.unmount()).not.toThrow(); }); it("should render correctly with section (dynamic)", () => { const wrapper = render( {(section) => ( aria-label={section.title} items={section.children} title={section.title} > {/* @ts-ignore TODO: fix section children types*/} {(item: Item) => {item.label}} )} , ); expect(() => wrapper.unmount()).not.toThrow(); }); });