keep every open terminal panel alive and sort sub-minute uptimes correctly

This commit is contained in:
Jarek Krochmalski committed 2026-09-06 17:03:48 +05:30
1 parent e35b825e38
commit 8862054ce4
3 files changed
+106 -58

No files matched your search

+40
View File
@@ -0,0 +1,40 @@
import { describe, test, expect } from 'bun:test';
import { parseTimeStringToSeconds } from '../src/lib/utils/parse-uptime';
describe('parseTimeStringToSeconds (#1395 uptime sorting)', () => {
test('sub-minute values keep their real magnitude (the bug: they all collapsed to 1)', () => {
expect(parseTimeStringToSeconds('5 seconds')).toBe(5);
expect(parseTimeStringToSeconds('45 seconds')).toBe(45);
expect(parseTimeStringToSeconds('1 second')).toBe(1);
// distinct sub-minute values must sort against each other, not tie at 1
expect(parseTimeStringToSeconds('5 seconds')).not.toBe(parseTimeStringToSeconds('45 seconds'));
});
test('only the literal "less than a second" collapses to 1', () => {
expect(parseTimeStringToSeconds('Less than a second')).toBe(1);
});
test('minute phrasings', () => {
expect(parseTimeStringToSeconds('Less than a minute')).toBe(60);
expect(parseTimeStringToSeconds('About a minute')).toBe(60);
expect(parseTimeStringToSeconds('2 minutes')).toBe(120);
});
test('larger units', () => {
expect(parseTimeStringToSeconds('3 hours')).toBe(10800);
expect(parseTimeStringToSeconds('5 days')).toBe(432000);
expect(parseTimeStringToSeconds('2 weeks')).toBe(1209600);
expect(parseTimeStringToSeconds('1 month')).toBe(2592000);
expect(parseTimeStringToSeconds('1 year')).toBe(31536000);
});
test('unparseable strings return 0', () => {
expect(parseTimeStringToSeconds('')).toBe(0);
expect(parseTimeStringToSeconds('just now')).toBe(0);
});
test('case-insensitive', () => {
expect(parseTimeStringToSeconds('45 SECONDS')).toBe(45);
expect(parseTimeStringToSeconds('3 Hours')).toBe(10800);
});
});