mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
chore: relocate backend into apps/api ahead of monorepo merge
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
'use strict';
|
||||
|
||||
const { fmtDate, fmtDateTime, fmtTime } = require('../../utils/datetime.util');
|
||||
|
||||
const ISO = '2026-06-20T14:30:00.000Z'; // Saturday, June 20, 2026, 2:30 PM UTC
|
||||
|
||||
// ── fmtDate ───────────────────────────────────────────────────────────────────
|
||||
|
||||
describe('fmtDate()', () => {
|
||||
test('null → returns —', () => {
|
||||
expect(fmtDate(null)).toBe('—');
|
||||
});
|
||||
|
||||
test('empty string → returns —', () => {
|
||||
expect(fmtDate('')).toBe('—');
|
||||
});
|
||||
|
||||
test('formats year correctly', () => {
|
||||
expect(fmtDate(ISO)).toContain('2026');
|
||||
});
|
||||
|
||||
test('formats month correctly (June)', () => {
|
||||
expect(fmtDate(ISO)).toContain('June');
|
||||
});
|
||||
|
||||
test('formats day correctly (20)', () => {
|
||||
expect(fmtDate(ISO)).toContain('20');
|
||||
});
|
||||
|
||||
test('accepts Date object as well as ISO string', () => {
|
||||
const d = new Date(ISO);
|
||||
expect(fmtDate(d)).toContain('2026');
|
||||
});
|
||||
});
|
||||
|
||||
// ── fmtDateTime ───────────────────────────────────────────────────────────────
|
||||
|
||||
describe('fmtDateTime()', () => {
|
||||
test('null → returns —', () => {
|
||||
expect(fmtDateTime(null)).toBe('—');
|
||||
});
|
||||
|
||||
test('contains date portion', () => {
|
||||
expect(fmtDateTime(ISO)).toContain('2026');
|
||||
expect(fmtDateTime(ISO)).toContain('June');
|
||||
});
|
||||
|
||||
test('contains time portion (2:30 PM UTC)', () => {
|
||||
const out = fmtDateTime(ISO);
|
||||
expect(out).toMatch(/2:30/);
|
||||
expect(out).toContain('UTC');
|
||||
});
|
||||
});
|
||||
|
||||
// ── fmtTime ───────────────────────────────────────────────────────────────────
|
||||
|
||||
describe('fmtTime()', () => {
|
||||
test('null → returns —', () => {
|
||||
expect(fmtTime(null)).toBe('—');
|
||||
});
|
||||
|
||||
test('outputs time with AM/PM', () => {
|
||||
expect(fmtTime(ISO)).toMatch(/\d+:\d{2}\s*(AM|PM)/);
|
||||
});
|
||||
|
||||
test('contains timezone label (UTC)', () => {
|
||||
expect(fmtTime(ISO)).toContain('UTC');
|
||||
});
|
||||
|
||||
test('locale option changes output', () => {
|
||||
const en = fmtTime(ISO, { locale: 'en-US' });
|
||||
expect(en).toBeTruthy();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user