indo-format
Version:
Utility functions for Indonesian-specific formatting: Rupiah, NIK, tanggal, dan terbilang.
72 lines (71 loc) • 4.28 kB
JavaScript
;
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');
});
});