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()
})
})
})