From 428ef71732f9f08968f2b2870df54dcb130e186b Mon Sep 17 00:00:00 2001 From: ump45nose <1729065730@qq.com> Date: Mon, 5 Oct 2026 11:55:10 +0800 Subject: [PATCH] test(eta-calculator): cover formatMsDuration The ETA calculator service exported formatMsDuration without any unit coverage; these tests pin its current behaviour (hour/minute/second breakdown, appended truncated milliseconds, and the empty string for zero or negative durations) so future refactors cannot silently change the displayed duration. --- .../eta-calculator.service.test.ts | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/tools/eta-calculator/eta-calculator.service.test.ts diff --git a/src/tools/eta-calculator/eta-calculator.service.test.ts b/src/tools/eta-calculator/eta-calculator.service.test.ts new file mode 100644 index 00000000..b4526df6 --- /dev/null +++ b/src/tools/eta-calculator/eta-calculator.service.test.ts @@ -0,0 +1,31 @@ +import { describe, expect, it } from 'vitest'; +import { formatMsDuration } from './eta-calculator.service'; + +describe('eta-calculator', () => { + describe('formatMsDuration', () => { + it('should return an empty string for zero or negative durations', () => { + expect(formatMsDuration(0)).toEqual(''); + expect(formatMsDuration(-1)).toEqual(''); + }); + + it('should format durations shorter than an hour', () => { + expect(formatMsDuration(1000)).toEqual('1 second'); + expect(formatMsDuration(42000)).toEqual('42 seconds'); + expect(formatMsDuration(3599000)).toEqual('59 minutes 59 seconds'); + }); + + it('should format durations with hours', () => { + expect(formatMsDuration(3600000)).toEqual('1 hour'); + expect(formatMsDuration(3660000)).toEqual('1 hour 1 minute'); + expect(formatMsDuration(3661000)).toEqual('1 hour 1 minute 1 second'); + expect(formatMsDuration(5400000)).toEqual('1 hour 30 minutes'); + expect(formatMsDuration(86399000)).toEqual('23 hours 59 minutes 59 seconds'); + }); + + it('should append the truncated milliseconds when some are left', () => { + expect(formatMsDuration(1500)).toEqual('1 second 500 ms'); + expect(formatMsDuration(3661500)).toEqual('1 hour 1 minute 1 second 500 ms'); + expect(formatMsDuration(1500.9)).toEqual('1 second 500 ms'); + }); + }); +});