import React from 'react'; import { render, screen } from '@testing-library/react-native'; import { SignalBar } from '@/components/SignalBar'; import { ThemeProvider } from '@/theme/ThemeContext'; const renderWithTheme = (ui: React.ReactElement) => render({ui}); describe('SignalBar', () => { it('renders the label text', () => { renderWithTheme(); expect(screen.getByText('Signal Strength')).toBeTruthy(); }); it('renders the percentage text', () => { renderWithTheme(); expect(screen.getByText('75%')).toBeTruthy(); }); it('clamps value at 0 for negative input', () => { renderWithTheme(); expect(screen.getByText('0%')).toBeTruthy(); }); it('clamps value at 100 for input above 1', () => { renderWithTheme(); expect(screen.getByText('100%')).toBeTruthy(); }); it('renders without crashing with custom color', () => { const { toJSON } = renderWithTheme( , ); expect(toJSON()).not.toBeNull(); }); it('renders 0% for zero value', () => { renderWithTheme(); expect(screen.getByText('0%')).toBeTruthy(); }); it('renders 100% for value of 1', () => { renderWithTheme(); expect(screen.getByText('100%')).toBeTruthy(); }); });