mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	test: connection count chart functions (#9383)
This commit is contained in:
		
							parent
							
								
									f46ec293df
								
							
						
					
					
						commit
						426f53cd8d
					
				| @ -1,8 +1,11 @@ | |||||||
| import type { TrafficUsageDataSegmentedCombinedSchema } from 'openapi'; | import type { TrafficUsageDataSegmentedCombinedSchema } from 'openapi'; | ||||||
| import { toTrafficUsageChartData } from './chart-functions'; | import { | ||||||
|  |     toConnectionChartData, | ||||||
|  |     toTrafficUsageChartData, | ||||||
|  | } from './chart-functions'; | ||||||
| import { endpointsInfo } from './endpoint-info'; | import { endpointsInfo } from './endpoint-info'; | ||||||
| 
 | 
 | ||||||
| describe('toChartData', () => { | describe('toTrafficUsageChartData', () => { | ||||||
|     const dataPoint = (period: string, count: number) => ({ |     const dataPoint = (period: string, count: number) => ({ | ||||||
|         period, |         period, | ||||||
|         trafficTypes: [{ count, group: 'successful-requests' }], |         trafficTypes: [{ count, group: 'successful-requests' }], | ||||||
| @ -149,3 +152,105 @@ describe('toChartData', () => { | |||||||
|         expect(toTrafficUsageChartData(input)).toMatchObject(expectedOutput); |         expect(toTrafficUsageChartData(input)).toMatchObject(expectedOutput); | ||||||
|     }); |     }); | ||||||
| }); | }); | ||||||
|  | 
 | ||||||
|  | describe('toConnectionChartData', () => { | ||||||
|  |     const dataPoint = (period: string, count: number) => ({ | ||||||
|  |         period, | ||||||
|  |         trafficTypes: [{ count, group: 'successful-requests' }], | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     const fromEndpointInfo = (endpoint: keyof typeof endpointsInfo) => { | ||||||
|  |         const info = endpointsInfo[endpoint]; | ||||||
|  |         return { | ||||||
|  |             backgroundColor: info.color, | ||||||
|  |             hoverBackgroundColor: info.color, | ||||||
|  |             label: info.label, | ||||||
|  |         }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     test('monthly data conversion', () => { | ||||||
|  |         const input: TrafficUsageDataSegmentedCombinedSchema = { | ||||||
|  |             grouping: 'monthly', | ||||||
|  |             dateRange: { | ||||||
|  |                 from: '2025-01-01', | ||||||
|  |                 to: '2025-06-30', | ||||||
|  |             }, | ||||||
|  |             apiData: [ | ||||||
|  |                 { | ||||||
|  |                     apiPath: '/api/admin', // filter out
 | ||||||
|  |                     dataPoints: [dataPoint('2025-06', 5)], | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     apiPath: '/api/client', | ||||||
|  |                     dataPoints: [ | ||||||
|  |                         dataPoint('2025-06', 10 * 5 * 60 * 24 * 30), | ||||||
|  |                         dataPoint('2025-01', 7 * 5 * 60 * 24 * 31), | ||||||
|  |                         dataPoint('2025-03', 11 * 5 * 60 * 24 * 31), | ||||||
|  |                         dataPoint('2025-04', 13 * 5 * 60 * 24 * 30), | ||||||
|  |                     ], | ||||||
|  |                 }, | ||||||
|  |             ], | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         const expectedOutput = { | ||||||
|  |             datasets: [ | ||||||
|  |                 { | ||||||
|  |                     data: [7, 0, 11, 13, 0, 10], | ||||||
|  |                     ...fromEndpointInfo('/api/client'), | ||||||
|  |                 }, | ||||||
|  |             ], | ||||||
|  |             labels: [ | ||||||
|  |                 '2025-01', | ||||||
|  |                 '2025-02', | ||||||
|  |                 '2025-03', | ||||||
|  |                 '2025-04', | ||||||
|  |                 '2025-05', | ||||||
|  |                 'Current month', | ||||||
|  |             ], | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         expect(toConnectionChartData(input)).toMatchObject(expectedOutput); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('daily data conversion', () => { | ||||||
|  |         const input: TrafficUsageDataSegmentedCombinedSchema = { | ||||||
|  |             grouping: 'daily', | ||||||
|  |             dateRange: { | ||||||
|  |                 from: '2025-01-01', | ||||||
|  |                 to: '2025-01-31', | ||||||
|  |             }, | ||||||
|  |             apiData: [ | ||||||
|  |                 { | ||||||
|  |                     apiPath: '/api/admin', // filter out
 | ||||||
|  |                     dataPoints: [dataPoint('2025-01-01', 5)], | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     apiPath: '/api/client', | ||||||
|  |                     dataPoints: [ | ||||||
|  |                         dataPoint('2025-01-02', 2 * 5 * 60 * 24), | ||||||
|  |                         dataPoint('2025-01-17', 6 * 5 * 60 * 24), | ||||||
|  |                         dataPoint('2025-01-19', 4 * 5 * 60 * 24), | ||||||
|  |                         dataPoint('2025-01-06', 8 * 5 * 60 * 24), | ||||||
|  |                     ], | ||||||
|  |                 }, | ||||||
|  |             ], | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         const expectedOutput = { | ||||||
|  |             datasets: [ | ||||||
|  |                 { | ||||||
|  |                     data: [ | ||||||
|  |                         0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 4, | ||||||
|  |                         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||||||
|  |                     ], | ||||||
|  |                     ...fromEndpointInfo('/api/client'), | ||||||
|  |                 }, | ||||||
|  |             ], | ||||||
|  |             labels: Array.from({ length: 31 }).map((_, index) => | ||||||
|  |                 (index + 1).toString(), | ||||||
|  |             ), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         expect(toConnectionChartData(input)).toMatchObject(expectedOutput); | ||||||
|  |     }); | ||||||
|  | }); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user