import { fireEvent, screen } from "@testing-library/react-native"; import SuggestionsResult from "components/Match/AdditionalSuggestions/SuggestionsResult"; import React from "react"; import factory from "tests/factory"; import { renderComponent } from "tests/helpers/render"; describe( "SuggestionsResult", () => { it( "renders and displays taxon name, image, and confidence", () => { const apiTaxon = factory( "RemoteTaxon", { id: 745, name: "Silphium perfoliatum", preferred_common_name: "Cup Plant", rank: "species", rank_level: 10, representative_photo: { url: "https://example.com/cupplant.jpg", }, } ); renderComponent( , ); expect( screen.getByText( "Cup Plant" ) ).toBeVisible(); expect( screen.getByText( "Silphium perfoliatum" ) ).toBeVisible(); expect( screen.getByText( "87% confidence" ) ).toBeVisible(); expect( screen.getByTestId( "SuggestionsResult.745.photo" ) ).toBeVisible(); } ); it( "handles non valid Realm taxon and returns null", () => { const invalidTaxon = factory( "LocalTaxon", { id: 746, name: "Silphium laciniatum", } ); invalidTaxon.isValid = () => false; renderComponent( , ); expect( screen.queryByText( "Silphium laciniatum" ) ).toBeFalsy(); } ); it( "calls handlePress when pressed", () => { const mockHandlePress = jest.fn(); const taxon = factory( "RemoteTaxon", { id: 747 } ); renderComponent( , ); const button = screen.getByTestId( "SuggestionsResult.747" ); fireEvent.press( button ); expect( mockHandlePress ).toHaveBeenCalled(); } ); it( "calls updateMaxHeight with measured height on layout", () => { const mockUpdateMaxHeight = jest.fn(); const taxon = factory( "RemoteTaxon", { id: 748 } ); renderComponent( , ); const layoutView = screen.getByTestId( "SuggestionsResult.748" ).parent; fireEvent( layoutView, "layout", { nativeEvent: { layout: { height: 120, }, }, } ); expect( mockUpdateMaxHeight ).toHaveBeenCalledWith( 120 ); } ); } );