UNPKG

indo-format

Version:

Utility functions for Indonesian-specific formatting: Rupiah, NIK, tanggal, dan terbilang.

72 lines (71 loc) 4.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const date_1 = require("./date"); (0, vitest_1.describe)('formatTanggal', () => { (0, vitest_1.it)('formats date without day name', () => { const date = new Date('2024-08-17'); (0, vitest_1.expect)((0, date_1.formatTanggal)(date)).toBe('17 Agustus 2024'); }); (0, vitest_1.it)('formats date with day name', () => { const date = new Date('2024-08-17'); // Sabtu (0, vitest_1.expect)((0, date_1.formatTanggal)(date, { includeDay: true })).toBe('Sabtu, 17 Agustus 2024'); }); }); (0, vitest_1.describe)('waktuRelative', () => { const now = new Date(); (0, vitest_1.it)('shows "baru saja" for < 60 sec diff', () => { (0, vitest_1.expect)((0, date_1.waktuRelative)(new Date(now.getTime() - 30 * 1000), now)).toBe('baru saja'); }); (0, vitest_1.it)('handles minutes ago / future', () => { (0, vitest_1.expect)((0, date_1.waktuRelative)(new Date(now.getTime() - 5 * 60 * 1000), now)).toBe('5 menit yang lalu'); (0, vitest_1.expect)((0, date_1.waktuRelative)(new Date(now.getTime() + 5 * 60 * 1000), now)).toBe('dalam 5 menit'); }); (0, vitest_1.it)('handles hours ago / future', () => { (0, vitest_1.expect)((0, date_1.waktuRelative)(new Date(now.getTime() - 2 * 60 * 60 * 1000), now)).toBe('2 jam yang lalu'); (0, vitest_1.expect)((0, date_1.waktuRelative)(new Date(now.getTime() + 2 * 60 * 60 * 1000), now)).toBe('dalam 2 jam'); }); (0, vitest_1.it)('handles "kemarin" and "besok"', () => { (0, vitest_1.expect)((0, date_1.waktuRelative)(new Date(now.getTime() - 24 * 60 * 60 * 1000), now)).toBe('kemarin'); (0, vitest_1.expect)((0, date_1.waktuRelative)(new Date(now.getTime() + 24 * 60 * 60 * 1000), now)).toBe('besok'); }); (0, vitest_1.it)('handles months and years', () => { (0, vitest_1.expect)((0, date_1.waktuRelative)(new Date(now.getTime() - 90 * 24 * 60 * 60 * 1000), now)).toBe('3 bulan yang lalu'); (0, vitest_1.expect)((0, date_1.waktuRelative)(new Date(now.getTime() + 730 * 24 * 60 * 60 * 1000), now)).toBe('dalam 2 tahun'); }); }); const date_2 = require("./date"); (0, vitest_1.describe)('parseTanggal', () => { (0, vitest_1.it)('parses basic Indo date string', () => { const result = (0, date_2.parseTanggal)('17 Agustus 2024'); (0, vitest_1.expect)(result?.getFullYear()).toBe(2024); (0, vitest_1.expect)(result?.getMonth()).toBe(7); // Agustus = 7 (0, vitest_1.expect)(result?.getDate()).toBe(17); }); (0, vitest_1.it)('parses Indo date with day name', () => { const result = (0, date_2.parseTanggal)('Sabtu, 17 Agustus 2024'); (0, vitest_1.expect)(result?.getDate()).toBe(17); }); (0, vitest_1.it)('returns null for invalid input', () => { (0, vitest_1.expect)((0, date_2.parseTanggal)('17 BulanAneh 2024')).toBeNull(); (0, vitest_1.expect)((0, date_2.parseTanggal)('Bla bla bla')).toBeNull(); }); }); const date_3 = require("./date"); (0, vitest_1.describe)('diffTanggal', () => { (0, vitest_1.it)('calculates difference in days', () => { (0, vitest_1.expect)((0, date_3.diffTanggal)(new Date('2024-08-17'), new Date('2024-08-20'))).toBe(3); (0, vitest_1.expect)((0, date_3.diffTanggal)(new Date('2024-08-20'), new Date('2024-08-17'))).toBe(-3); }); (0, vitest_1.it)('calculates difference in months', () => { (0, vitest_1.expect)((0, date_3.diffTanggal)(new Date('2024-01-01'), new Date('2024-04-01'), 'bulan')).toBe(3); }); (0, vitest_1.it)('calculates difference in years', () => { (0, vitest_1.expect)((0, date_3.diffTanggal)(new Date('2020-01-01'), new Date('2024-01-01'), 'tahun')).toBe(4); }); (0, vitest_1.it)('uses auto unit', () => { (0, vitest_1.expect)((0, date_3.diffTanggal)(new Date('2020-01-01'), new Date('2023-01-01'), 'auto')).toBe('3 tahun'); (0, vitest_1.expect)((0, date_3.diffTanggal)(new Date('2023-01-01'), new Date('2023-10-01'), 'auto')).toBe('9 bulan'); (0, vitest_1.expect)((0, date_3.diffTanggal)(new Date('2023-01-01'), new Date('2023-01-10'), 'auto')).toBe('9 hari'); }); });