mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-09 17:33:55 +00:00
1849b4d39f
* chore: migrate eslint to oxlint * chore: migrate prettier to oxfmt * chore: migrate typescript * chore: toThrow should have a expected value * chore: cast test value as Day * chore: small title fix * chore: mocks should be hoisted * chore: incorrect async useage * chore: test should be inside description * chore: test sohuld include an expeced * chore: oxfmt --------- Co-authored-by: alex-Arc <omnivox@LAPTOP-RC5SNBVV.localdomain>
62 lines
2.2 KiB
TypeScript
62 lines
2.2 KiB
TypeScript
import { MILLIS_PER_HOUR, MILLIS_PER_MINUTE, MILLIS_PER_SECOND } from 'ontime-utils';
|
|
|
|
import { formatDuration, formatTime, nowInMillis } from '../time';
|
|
|
|
describe('nowInMillis()', () => {
|
|
afterEach(() => {
|
|
vi.useRealTimers();
|
|
});
|
|
|
|
it('should return the current time in milliseconds', () => {
|
|
const mockDate = new Date(2022, 1, 1, 13, 0, 0); // This date corresponds to 13:00:00
|
|
const expectedMillis = 13 * 60 * 60 * 1000;
|
|
vi.useFakeTimers();
|
|
vi.setSystemTime(mockDate);
|
|
|
|
const result = nowInMillis();
|
|
|
|
expect(result).toBe(expectedMillis);
|
|
});
|
|
});
|
|
|
|
describe('formatTime()', () => {
|
|
it('parses 24h strings', () => {
|
|
const ms = 13 * 60 * 60 * 1000;
|
|
const time = formatTime(ms, { format12: 'hh:mm:ss', format24: 'HH:mm:ss' }, (_format12, format24) => format24);
|
|
expect(time).toStrictEqual('13:00:00');
|
|
});
|
|
|
|
it('parses same string in 12h strings', () => {
|
|
const ms = 13 * 60 * 60 * 1000;
|
|
const time = formatTime(ms, { format12: 'hh:mm:ss a', format24: 'HH:mm:ss' }, (format12, _format24) => format12);
|
|
expect(time).toStrictEqual('01:00:00 PM');
|
|
});
|
|
|
|
it('handles null times', () => {
|
|
const ms = null;
|
|
const time = formatTime(ms);
|
|
expect(time).toStrictEqual('...');
|
|
});
|
|
|
|
it('handles negative times', () => {
|
|
const ms = 1 * 60 * 60 * 1000;
|
|
const time = formatTime(-ms, { format12: 'hh:mm a', format24: 'HH:mm' }, (_format12, format24) => format24);
|
|
expect(time).toStrictEqual('-01:00');
|
|
});
|
|
});
|
|
|
|
describe('formatDuration()', () => {
|
|
it('formats durations correctly', () => {
|
|
expect(formatDuration(0)).toBe('0m');
|
|
expect(formatDuration(-5000)).toBe('0m');
|
|
expect(formatDuration(MILLIS_PER_MINUTE)).toBe('1m');
|
|
expect(formatDuration(6 * MILLIS_PER_MINUTE + 11 * MILLIS_PER_SECOND)).toBe('6m');
|
|
expect(formatDuration(MILLIS_PER_MINUTE * 10)).toBe('10m');
|
|
expect(formatDuration(MILLIS_PER_MINUTE * 10 + 100)).toBe('10m');
|
|
expect(formatDuration(MILLIS_PER_MINUTE * 10 - 100)).toBe('9m');
|
|
expect(formatDuration(2 * MILLIS_PER_HOUR + 6 * MILLIS_PER_MINUTE)).toBe('2h6m');
|
|
expect(formatDuration(2 * MILLIS_PER_HOUR + 6 * MILLIS_PER_MINUTE + 45 * MILLIS_PER_SECOND, false)).toBe('2h6m45s');
|
|
expect(formatDuration(599702, false)).toBe('9m59s');
|
|
});
|
|
});
|