| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- import { describe, expect, test } from 'vitest'
- import {
- calculatePercentageChange,
- getApiSuccessRates,
- getAuthSuccessRates,
- getMetricValues,
- type AuthMetricsResponse,
- } from './OverviewUsage.constants'
- import { RawAuthMetricsResponseSchema } from './OverviewUsage.schema'
- const validSample = {
- result: [
- {
- period: 'current',
- active_users: 5,
- api_error_requests: 0,
- api_total_requests: 38,
- auth_total_errors: 0,
- auth_total_requests: 0,
- password_reset_requests: 0,
- sign_up_count: 4,
- },
- {
- period: 'previous',
- active_users: 0,
- api_error_requests: 0,
- api_total_requests: 0,
- auth_total_errors: 0,
- auth_total_requests: 0,
- password_reset_requests: 0,
- sign_up_count: 0,
- },
- ],
- error: null,
- }
- describe('RawAuthMetricsResponseSchema', () => {
- test('parses valid payload', () => {
- const parsed = RawAuthMetricsResponseSchema.safeParse(validSample)
- expect(parsed.success).toBe(true)
- })
- test('rejects negative numbers', () => {
- const invalid = {
- ...validSample,
- result: [{ ...validSample.result[0], active_users: -1 }, validSample.result[1]],
- }
- const parsed = RawAuthMetricsResponseSchema.safeParse(invalid)
- expect(parsed.success).toBe(false)
- })
- test('rejects missing fields', () => {
- const invalid = {
- result: [
- {
- period: 'current',
- active_users: 1,
- api_error_requests: 0,
- auth_total_errors: 0,
- auth_total_requests: 0,
- password_reset_requests: 0,
- sign_up_count: 0,
- },
- ],
- error: null,
- }
- const parsed = RawAuthMetricsResponseSchema.safeParse(invalid)
- expect(parsed.success).toBe(false)
- })
- })
- const sampleMetrics: AuthMetricsResponse = {
- result: [
- {
- period: 'current',
- active_users: 10,
- api_error_requests: 2,
- api_total_requests: 50,
- auth_total_errors: 1,
- auth_total_requests: 20,
- password_reset_requests: 3,
- sign_up_count: 7,
- },
- {
- period: 'previous',
- active_users: 5,
- api_error_requests: 5,
- api_total_requests: 25,
- auth_total_errors: 2,
- auth_total_requests: 10,
- password_reset_requests: 1,
- sign_up_count: 4,
- },
- ],
- error: null,
- }
- describe('OverviewUsage helpers', () => {
- test('getMetricValues maps snake_case to camel metric names', () => {
- const { current, previous } = getMetricValues(sampleMetrics, 'signUpCount')
- expect(current).toBe(7)
- expect(previous).toBe(4)
- })
- test('getMetricValues returns 0 defaults when metrics undefined', () => {
- const { current, previous } = getMetricValues(undefined, 'activeUsers')
- expect(current).toBe(0)
- expect(previous).toBe(0)
- })
- test('calculatePercentageChange handles zero previous', () => {
- expect(calculatePercentageChange(10, 0)).toBe(100)
- expect(calculatePercentageChange(0, 0)).toBe(0)
- })
- test('getApiSuccessRates computes success rates correctly', () => {
- const { current, previous } = getApiSuccessRates(sampleMetrics)
- expect(current).toBeCloseTo(96)
- expect(previous).toBeCloseTo(80)
- })
- test('getAuthSuccessRates computes success rates correctly', () => {
- const { current, previous } = getAuthSuccessRates(sampleMetrics)
- expect(current).toBeCloseTo(95)
- expect(previous).toBeCloseTo(80)
- })
- })
|