grafana_bak/public/app/features/trails/helpers/MetricDataSourceHelper.test.ts
2025-04-01 10:38:02 +09:00

62 lines
2.0 KiB
TypeScript

import { DataTrail } from '../DataTrail';
import { MetricDatasourceHelper } from './MetricDatasourceHelper';
jest.mock('@grafana/runtime', () => ({
...jest.requireActual('@grafana/runtime'),
config: {
...jest.requireActual('@grafana/runtime').config,
publicDashboardAccessToken: '123',
},
}));
const NATIVE_HISTOGRAM = 'test_metric';
describe('MetricDatasourceHelper', () => {
let metricDatasourceHelper: MetricDatasourceHelper;
beforeEach(() => {
const trail = new DataTrail({});
metricDatasourceHelper = new MetricDatasourceHelper(trail);
metricDatasourceHelper['_classicHistograms'] = {
test_metric_bucket: 1,
};
});
afterEach(() => {
jest.clearAllMocks();
});
describe('isNativeHistogram', () => {
it('should return false if metric is not provided', async () => {
const result = await metricDatasourceHelper.isNativeHistogram('');
expect(result).toBe(false);
});
it('should return true if metric is a native histogram', async () => {
const result = await metricDatasourceHelper.isNativeHistogram(NATIVE_HISTOGRAM);
expect(result).toBe(true);
});
it('should return false if metric is not a native histogram', async () => {
const result = await metricDatasourceHelper.isNativeHistogram('non_histogram_metric');
expect(result).toBe(false);
});
it('should return false if metric is a classic histogram', async () => {
const result = await metricDatasourceHelper.isNativeHistogram('test_metric_bucket');
expect(result).toBe(false);
});
it('should return true if metric is a native histogram and has metadata but does not have a classic histogram to compare to', async () => {
metricDatasourceHelper._metricsMetadata = {
solo_native_histogram: {
type: 'histogram',
help: 'test',
},
};
const result = await metricDatasourceHelper.isNativeHistogram('solo_native_histogram');
expect(result).toBe(true);
});
});
});