Files
gridpilot.gg/apps/website/lib/formatters/HealthMetricFormatter.test.ts
Marc Mintel 3db2209d2a
Some checks failed
CI / lint-typecheck (push) Failing after 4m52s
CI / tests (push) Has been skipped
CI / contract-tests (push) Has been skipped
CI / e2e-tests (push) Has been skipped
CI / comment-pr (push) Has been skipped
CI / commit-types (push) Has been skipped
formatter tests
2026-01-25 11:17:47 +01:00

126 lines
4.5 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { HealthMetricFormatter } from './HealthMetricFormatter';
describe('HealthMetricFormatter', () => {
describe('formatUptime', () => {
it('should format uptime as percentage with 2 decimal places', () => {
expect(HealthMetricFormatter.formatUptime(99.99)).toBe('99.99%');
expect(HealthMetricFormatter.formatUptime(95.5)).toBe('95.50%');
});
it('should handle undefined uptime', () => {
expect(HealthMetricFormatter.formatUptime(undefined)).toBe('N/A');
});
it('should handle null uptime', () => {
expect(HealthMetricFormatter.formatUptime(null)).toBe('N/A');
});
it('should handle negative uptime', () => {
expect(HealthMetricFormatter.formatUptime(-1)).toBe('N/A');
});
it('should handle zero uptime', () => {
expect(HealthMetricFormatter.formatUptime(0)).toBe('0.00%');
});
});
describe('formatResponseTime', () => {
it('should format response time in milliseconds for values under 1000', () => {
expect(HealthMetricFormatter.formatResponseTime(123)).toBe('123ms');
expect(HealthMetricFormatter.formatResponseTime(999)).toBe('999ms');
});
it('should format response time in seconds for values between 1000 and 60000', () => {
expect(HealthMetricFormatter.formatResponseTime(1000)).toBe('1.00s');
expect(HealthMetricFormatter.formatResponseTime(12345)).toBe('12.35s');
expect(HealthMetricFormatter.formatResponseTime(59999)).toBe('60.00s');
});
it('should format response time in minutes for values 60000 or above', () => {
expect(HealthMetricFormatter.formatResponseTime(60000)).toBe('1.00m');
expect(HealthMetricFormatter.formatResponseTime(123456)).toBe('2.06m');
});
it('should handle undefined response time', () => {
expect(HealthMetricFormatter.formatResponseTime(undefined)).toBe('N/A');
});
it('should handle null response time', () => {
expect(HealthMetricFormatter.formatResponseTime(null)).toBe('N/A');
});
it('should handle negative response time', () => {
expect(HealthMetricFormatter.formatResponseTime(-1)).toBe('N/A');
});
it('should handle zero response time', () => {
expect(HealthMetricFormatter.formatResponseTime(0)).toBe('0ms');
});
});
describe('formatErrorRate', () => {
it('should format error rate as percentage with 2 decimal places', () => {
expect(HealthMetricFormatter.formatErrorRate(0.5)).toBe('0.50%');
expect(HealthMetricFormatter.formatErrorRate(12.34)).toBe('12.34%');
});
it('should handle undefined error rate', () => {
expect(HealthMetricFormatter.formatErrorRate(undefined)).toBe('N/A');
});
it('should handle null error rate', () => {
expect(HealthMetricFormatter.formatErrorRate(null)).toBe('N/A');
});
it('should handle negative error rate', () => {
expect(HealthMetricFormatter.formatErrorRate(-1)).toBe('N/A');
});
it('should handle zero error rate', () => {
expect(HealthMetricFormatter.formatErrorRate(0)).toBe('0.00%');
});
});
describe('formatTimestamp', () => {
it('should format timestamp correctly', () => {
const timestamp = '2026-01-15T14:30:45Z';
const result = HealthMetricFormatter.formatTimestamp(timestamp);
expect(result).toBe('Jan 15, 2026, 14:30:45');
});
it('should handle different timestamps', () => {
const timestamp = '2026-12-25T09:15:30Z';
const result = HealthMetricFormatter.formatTimestamp(timestamp);
expect(result).toBe('Dec 25, 2026, 09:15:30');
});
});
describe('formatSuccessRate', () => {
it('should format success rate correctly', () => {
expect(HealthMetricFormatter.formatSuccessRate(95, 5)).toBe('95.0%');
expect(HealthMetricFormatter.formatSuccessRate(99, 1)).toBe('99.0%');
});
it('should handle zero total checks', () => {
expect(HealthMetricFormatter.formatSuccessRate(0, 0)).toBe('N/A');
});
it('should handle only passed checks', () => {
expect(HealthMetricFormatter.formatSuccessRate(100, 0)).toBe('100.0%');
});
it('should handle only failed checks', () => {
expect(HealthMetricFormatter.formatSuccessRate(0, 100)).toBe('0.0%');
});
it('should handle undefined checks', () => {
expect(HealthMetricFormatter.formatSuccessRate(undefined, undefined)).toBe('N/A');
});
it('should handle null checks', () => {
expect(HealthMetricFormatter.formatSuccessRate(null, null)).toBe('N/A');
});
});
});