-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathAssetSummaryEditor.test.tsx
More file actions
59 lines (48 loc) · 2.3 KB
/
AssetSummaryEditor.test.tsx
File metadata and controls
59 lines (48 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import { DataSourceInstanceSettings } from '@grafana/data';
import { BackendSrv, TemplateSrv } from '@grafana/runtime';
import { mock } from 'jest-mock-extended';
import { AssetSummaryResponse } from 'datasources/asset/types/AssetSummaryQuery.types';
import { AssetDataSourceOptions, AssetQuery, AssetQueryType } from 'datasources/asset/types/types';
import { AssetSummaryDataSource } from '../../../data-sources/asset-summary/AssetSummaryDataSource';
import { assetSummaryFields } from '../../../constants/AssetSummaryQuery.constants';
import { QueryBuilderType } from 'datasources/asset/constants/constants';
describe('AssetSummaryDataSource', () => {
let dataSource: AssetSummaryDataSource;
const instanceSettings = mock<DataSourceInstanceSettings<AssetDataSourceOptions>>();
const backendSrv = mock<BackendSrv>();
const templateSrv = mock<TemplateSrv>();
const assetSummary: AssetSummaryResponse = {
total: 10,
active: 5,
notActive: 3,
approachingRecommendedDueDate: 1,
pastRecommendedDueDate: 1
};
beforeEach(() => {
dataSource = new AssetSummaryDataSource(instanceSettings, backendSrv, templateSrv);
});
it('should process metadata query correctly', async () => {
const query: AssetQuery = { refId: 'A', type: AssetQueryType.AssetSummary, queryBuilderType: QueryBuilderType.Simple, };
jest.spyOn(dataSource, 'getAssetSummary').mockResolvedValue(assetSummary);
const result = await dataSource.processSummaryQuery(query);
expect(result).toEqual({
refId: 'A',
fields: [
{ name: assetSummaryFields.TOTAL, values: [10] },
{ name: assetSummaryFields.ACTIVE, values: [5] },
{ name: assetSummaryFields.NOT_ACTIVE, values: [3] },
{ name: assetSummaryFields.APPROACHING_DUE_DATE, values: [1] },
{ name: assetSummaryFields.PAST_DUE_DATE, values: [1] },
],
});
});
it('should get asset summary correctly', async () => {
jest.spyOn(dataSource, 'get').mockResolvedValue(assetSummary);
const result = await dataSource.getAssetSummary();
expect(result).toEqual(assetSummary);
});
it('should handle error in getAssetSummary', async () => {
jest.spyOn(dataSource, 'get').mockRejectedValue(new Error('Network error'));
await expect(dataSource.getAssetSummary()).rejects.toThrow('Network error');
});
});