expo-popcore-app/components/ErrorState.test.tsx

45 lines
1.5 KiB
TypeScript

import React from 'react'
import { render, fireEvent } from '@testing-library/react-native'
import ErrorState from './ErrorState'
describe('ErrorState Component', () => {
describe('Basic Rendering', () => {
it('should render error message', () => {
const { getByText } = render(<ErrorState message="Something went wrong" />)
expect(getByText('Something went wrong')).toBeTruthy()
})
it('should render with default message when not provided', () => {
const { getByText } = render(<ErrorState />)
expect(getByText('An error occurred')).toBeTruthy()
})
})
describe('Retry Functionality', () => {
it('should render retry button when onRetry is provided', () => {
const onRetry = jest.fn()
const { getByText } = render(<ErrorState message="Error" onRetry={onRetry} />)
expect(getByText('Retry')).toBeTruthy()
})
it('should not render retry button when onRetry is not provided', () => {
const { queryByText } = render(<ErrorState message="Error" />)
expect(queryByText('Retry')).toBeNull()
})
it('should call onRetry when retry button is pressed', () => {
const onRetry = jest.fn()
const { getByText } = render(<ErrorState message="Error" onRetry={onRetry} />)
fireEvent.press(getByText('Retry'))
expect(onRetry).toHaveBeenCalledTimes(1)
})
})
describe('Props', () => {
it('should accept testID prop', () => {
const { getByTestId } = render(<ErrorState testID="error-test" />)
expect(getByTestId('error-test')).toBeTruthy()
})
})
})