Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
26 lines
1005 B
TypeScript
26 lines
1005 B
TypeScript
import { describe, expect, it } from 'vitest';
|
||
import { formatMoscowDate, isIsoDate } from './dates';
|
||
|
||
describe('formatMoscowDate', () => {
|
||
it('момент времени из API (UTC) — дата по Москве', () => {
|
||
expect(formatMoscowDate('2026-10-07T23:11:42.981145Z')).toBe('08.10.2026');
|
||
expect(formatMoscowDate('2024-03-12T10:00:00Z')).toBe('12.03.2024');
|
||
});
|
||
it('пусто и мусор', () => {
|
||
expect(formatMoscowDate(null)).toBeNull();
|
||
expect(formatMoscowDate('не дата')).toBeNull();
|
||
});
|
||
});
|
||
|
||
describe('isIsoDate', () => {
|
||
it('строго ГГГГ-ММ-ДД и существующая дата', () => {
|
||
expect(isIsoDate('2024-12-31')).toBe(true);
|
||
expect(isIsoDate('2024-02-29')).toBe(true);
|
||
});
|
||
it('иной формат и несуществующая дата — нет', () => {
|
||
for (const text of ['2024-2-1', '2024-02-30', '2023-02-29', '31.12.2024', '', ' 2024-12-31', '2024-13-01']) {
|
||
expect(isIsoDate(text), text).toBe(false);
|
||
}
|
||
});
|
||
});
|