import React from 'react'; import {render} from '@testing-library/react-native'; import {Timestamp} from './Timestamp'; describe('Timestamp', () => { it('should render formatted date and time', () => { // March 15, 2024 at 14:30:00 const timestamp = new Date(2024, 2, 15, 14, 30, 0).getTime(); const {getByText} = render(); const formatted = getByText(/15 March 2024/); expect(formatted).toBeTruthy(); expect(formatted.props.children).toContain('PM'); }); it('should format AM time correctly', () => { // March 15, 2024 at 09:15:00 const timestamp = new Date(2024, 2, 15, 9, 15, 0).getTime(); const {getByText} = render(); const formatted = getByText(/09:15 AM/); expect(formatted).toBeTruthy(); }); it('should format PM time correctly', () => { // June 20, 2024 at 18:45:00 const timestamp = new Date(2024, 5, 20, 18, 45, 0).getTime(); const {getByText} = render(); const formatted = getByText(/06:45 PM/); expect(formatted).toBeTruthy(); }); it('should handle midnight correctly', () => { // January 1, 2024 at 00:00:00 const timestamp = new Date(2024, 0, 1, 0, 0, 0).getTime(); const {getByText} = render( , ); const formatted = getByText(/12:00 AM/); expect(formatted).toBeTruthy(); }); it('should handle noon correctly', () => { // December 25, 2023 at 12:00:00 const timestamp = new Date(2023, 11, 25, 12, 0, 0).getTime(); const {getByText} = render(); const formatted = getByText(/12:00 PM/); expect(formatted).toBeTruthy(); }); it('should pad single digit minutes with zero', () => { // April 10, 2024 at 15:05:00 const timestamp = new Date(2024, 3, 10, 15, 5, 0).getTime(); const {getByText} = render(); const formatted = getByText(/03:05 PM/); expect(formatted).toBeTruthy(); }); it('should render with testID prop', () => { const timestamp = new Date(2024, 0, 1, 0, 0, 0).getTime(); const {toJSON} = render(); expect(toJSON()).toBeTruthy(); }); it('should display different months correctly', () => { const months = [ {month: 0, name: 'January'}, {month: 1, name: 'February'}, {month: 2, name: 'March'}, {month: 6, name: 'July'}, {month: 11, name: 'December'}, ]; months.forEach(({month, name}) => { const timestamp = new Date(2024, month, 15, 12, 0, 0).getTime(); const {getByText} = render( , ); expect(getByText(new RegExp(name))).toBeTruthy(); }); }); });