import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { useFormatTimeAgo } from '../use-format-time-ago'; describe('useFormatTimeAgo', () => { beforeEach(() => { vi.useFakeTimers(); vi.setSystemTime(new Date('2025-06-15T12:00:00Z')); }); afterEach(() => { vi.useRealTimers(); }); const now = () => Math.floor(Date.now() / 1000); it('сегодня', () => { expect(useFormatTimeAgo(now(), 'en')).toBe('today'); }); it('вчера', () => { expect(useFormatTimeAgo(now() - 86400, 'en')).toBe('yesterday'); }); it('5 дней назад', () => { expect(useFormatTimeAgo(now() - 5 * 86400, 'en')).toBe('5 days ago'); }); it('3 месяца назад', () => { expect(useFormatTimeAgo(now() - 90 * 86400, 'en')).toBe('3 months ago'); }); it('2 года назад', () => { expect(useFormatTimeAgo(now() - 730 * 86400, 'en')).toBe('2 years ago'); }); it('локализация (ru)', () => { expect(useFormatTimeAgo(now() - 5 * 86400, 'ru')).toBe('5 дней назад'); }); describe('precise', () => { it('часы вместо «сегодня»', () => { expect(useFormatTimeAgo(now() - 2 * 3600, 'en', true)).toBe('2 hours ago'); }); it('минуты для совсем свежего времени', () => { expect(useFormatTimeAgo(now() - 5 * 60, 'en', true)).toBe('5 minutes ago'); }); it('только что', () => { expect(useFormatTimeAgo(now(), 'en', true)).toBe('this minute'); }); it('от суток и старше считает как обычно', () => { expect(useFormatTimeAgo(now() - 86400, 'en', true)).toBe('yesterday'); expect(useFormatTimeAgo(now() - 5 * 86400, 'en', true)).toBe('5 days ago'); }); }); });