Files
lucia-frontend/tests/unit/module/abbreviateNumber.test.js
2026-03-06 18:57:58 +08:00

57 lines
1.5 KiB
JavaScript

// The Lucia project.
// Copyright 2026-2026 DSP, inc. All rights reserved.
// Authors:
// imacat.yang@dsp.im (imacat), 2026/03/05
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('');
});
it('does not have trailing whitespace', () => {
expect(abbreviateNumber(45)).toBe('45s');
expect(abbreviateNumber(3661)).toBe('1h 1m 1s');
});
});