Merge branch 'renovate/all-minor-patch' into 'main'
[ProtonMail-WebClient.git] / packages / metrics / tests / Histogram.test.ts
blobbe6a27dc272b41e0f0de4c4a6f823a91a8414781
1 import Histogram from '../lib/Histogram';
2 import MetricsApi from '../lib/MetricsApi';
3 import MetricsRequestService from '../lib/MetricsRequestService';
4 import type MetricSchema from '../lib/types/MetricSchema';
6 jest.mock('../lib/MetricsApi');
7 const metricsApi = new MetricsApi();
9 jest.mock('../lib/MetricsRequestService');
10 const metricsRequestService = new MetricsRequestService(metricsApi, { reportMetrics: true });
12 interface DefaultMetricSchema extends MetricSchema {
13     Labels: {
14         foo: 'bar';
15     };
18 const time = new Date('2020-01-01');
20 describe('Histogram', () => {
21     beforeAll(() => {
22         jest.useFakeTimers();
23     });
25     beforeEach(() => {
26         jest.clearAllTimers();
27         jest.setSystemTime(time);
28     });
30     afterAll(() => {
31         jest.useRealTimers();
32     });
34     it('construct correct metric report', () => {
35         const name = 'name';
36         const version = 1;
37         const counter = new Histogram<DefaultMetricSchema>({ name, version }, metricsRequestService);
39         const value = 123.456;
40         counter.observe({ Value: value, Labels: { foo: 'bar' } });
42         expect(metricsRequestService.report).toHaveBeenCalledWith({
43             Name: name,
44             Version: version,
45             Timestamp: time.getTime() / 1000,
46             Data: {
47                 Value: value,
48                 Labels: { foo: 'bar' },
49             },
50         });
51     });
52 });