import { fireEvent, render } from '@testing-library/react-native' import React from 'react' import { ConversationsBlankState } from '../conversations_blank_state' const mockSetParams = jest.fn() const mockUseFilterDropdownEnabled = jest.fn() jest.mock('@react-navigation/native', () => ({ ...jest.requireActual('@react-navigation/native'), useNavigation: () => ({ setParams: mockSetParams }), })) jest.mock('../../../hooks/use_filter_dropdown_enabled', () => ({ useFilterDropdownEnabled: () => mockUseFilterDropdownEnabled(), })) describe('ConversationsBlankState', () => { beforeEach(() => { mockSetParams.mockClear() }) describe('with the filter dropdown on', () => { beforeEach(() => { mockUseFilterDropdownEnabled.mockReturnValue(true) }) it('offers to view all conversations when a filter is applied', () => { const view = render( ) expect(view.getByText('No matches')).toBeTruthy() expect(view.queryByText('No conversations yet.')).toBeNull() fireEvent.press(view.getByText('View all conversations')) expect(mockSetParams).toHaveBeenCalledTimes(1) expect(mockSetParams.mock.calls[0][0]).toStrictEqual({ title: undefined, chat_group_graph_id: undefined, group_source_app_name: undefined, show_direct_messages: undefined, show_archived: undefined, }) }) it('keeps the compose prompt when no filter is applied', () => { const view = render( ) expect(view.getByText('No conversations yet.')).toBeTruthy() expect(view.getByText('Tap the compose button to get started.')).toBeTruthy() expect(view.queryByText('View all conversations')).toBeNull() }) }) describe('with the filter dropdown off', () => { beforeEach(() => { mockUseFilterDropdownEnabled.mockReturnValue(false) }) it('keeps the adjust-your-filters copy when a filter is applied', () => { const view = render( ) expect(view.getByText('No conversations yet.')).toBeTruthy() expect(view.getByText('Adjust your filters to find conversations.')).toBeTruthy() expect(view.queryByText('View all conversations')).toBeNull() }) }) })