Files
lucia-frontend/tests/unit/module/abbreviateNumber.test.js
2026-03-05 19:14:13 +08:00

47 lines
1.2 KiB
JavaScript

import { describe, it, expect } from 'vitest';
import abbreviateNumber from '@/module/abbreviateNumber.js';
describe('abbreviateNumber', () => {
it('returns "0" for 0 seconds', () => {
expect(abbreviateNumber(0)).toBe('0');
});
it('returns seconds only when < 60', () => {
expect(abbreviateNumber(45).trim()).toBe('45s');
});
it('returns minutes and seconds', () => {
// 2m 30s = 150s
expect(abbreviateNumber(150).trim()).toBe('2m 30s');
});
it('returns hours, minutes, and seconds', () => {
// 1h 1m 1s = 3661s
expect(abbreviateNumber(3661).trim()).toBe('1h 1m 1s');
});
it('returns days, hours, minutes, and seconds', () => {
// 1d 2h 3m 4s = 93784s
expect(abbreviateNumber(93784).trim())
.toBe('1d 2h 3m 4s');
});
it('handles exact day boundary', () => {
// 1d = 86400s
expect(abbreviateNumber(86400).trim()).toBe('1d');
});
it('handles exact hour boundary', () => {
// 1h = 3600s
expect(abbreviateNumber(3600).trim()).toBe('1h');
});
it('handles string input by parsing as int', () => {
expect(abbreviateNumber('150').trim()).toBe('2m 30s');
});
it('handles NaN input', () => {
expect(abbreviateNumber('abc').trim()).toBe('');
});
});