Spaces:
Running
Running
| import { describe, it, expect } from 'vitest'; | |
| import { formatTimestamp, truncateText, classNames, formatDuration } from '../utils/helpers'; | |
| describe('helpers', () => { | |
| describe('formatTimestamp', () => { | |
| it('formats ISO timestamps', () => { | |
| const result = formatTimestamp('2024-01-15T10:30:00Z'); | |
| expect(result).toBeDefined(); | |
| expect(typeof result).toBe('string'); | |
| }); | |
| it('handles invalid dates', () => { | |
| const result = formatTimestamp('invalid'); | |
| expect(result).toBe('Invalid Date'); | |
| }); | |
| }); | |
| describe('truncateText', () => { | |
| it('truncates long strings', () => { | |
| const result = truncateText('This is a long string', 13); | |
| expect(result).toBe('This is a ...'); | |
| }); | |
| it('leaves short strings unchanged', () => { | |
| const result = truncateText('Short', 10); | |
| expect(result).toBe('Short'); | |
| }); | |
| }); | |
| describe('classNames', () => { | |
| it('joins class names', () => { | |
| const result = classNames('a', 'b', 'c'); | |
| expect(result).toBe('a b c'); | |
| }); | |
| it('filters falsy values', () => { | |
| const result = classNames('a', false, undefined, 'b', null, 'c'); | |
| expect(result).toBe('a b c'); | |
| }); | |
| }); | |
| describe('formatDuration', () => { | |
| it('formats milliseconds to seconds', () => { | |
| expect(formatDuration(45000)).toBe('45s'); | |
| }); | |
| it('formats minutes and seconds', () => { | |
| expect(formatDuration(125000)).toBe('2m 5s'); | |
| }); | |
| it('formats hours', () => { | |
| expect(formatDuration(3665000)).toBe('1h 1m'); | |
| }); | |
| }); | |
| }); | |