mriSelect.spec.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import {getMetricsWithDuplicateNames} from 'sentry/components/metrics/mriSelect';
  2. import type {MetricMeta} from 'sentry/types/metrics';
  3. function createMetricMeta(name: string, unit: string): MetricMeta {
  4. return {
  5. mri: `d:custom/${name}@${unit}`,
  6. blockingStatus: [],
  7. operations: [],
  8. projectIds: [],
  9. type: 'd',
  10. unit: unit,
  11. };
  12. }
  13. describe('getMetricsWithDuplicateNames', () => {
  14. it('should return a duplicate metric', () => {
  15. const metrics: MetricMeta[] = [
  16. createMetricMeta('metric1', 'none'),
  17. createMetricMeta('metric1', 'seconds'),
  18. createMetricMeta('metric2', 'milliseconds'),
  19. ];
  20. const result = getMetricsWithDuplicateNames(metrics);
  21. expect(result).toEqual(
  22. new Set(['d:custom/metric1@none', 'd:custom/metric1@seconds'])
  23. );
  24. });
  25. it('should multiple duplicate metrics', () => {
  26. const metrics: MetricMeta[] = [
  27. createMetricMeta('metric1', 'none'),
  28. createMetricMeta('metric1', 'seconds'),
  29. createMetricMeta('metric2', 'none'),
  30. createMetricMeta('metric2', 'milliseconds'),
  31. createMetricMeta('metric3', 'none'),
  32. ];
  33. const result = getMetricsWithDuplicateNames(metrics);
  34. expect(result).toEqual(
  35. new Set([
  36. 'd:custom/metric1@none',
  37. 'd:custom/metric1@seconds',
  38. 'd:custom/metric2@none',
  39. 'd:custom/metric2@milliseconds',
  40. ])
  41. );
  42. });
  43. it('should return an empty set if there are no duplicates', () => {
  44. const metrics: MetricMeta[] = [
  45. createMetricMeta('metric1', 'none'),
  46. createMetricMeta('metric2', 'seconds'),
  47. createMetricMeta('metric3', 'milliseconds'),
  48. ];
  49. const result = getMetricsWithDuplicateNames(metrics);
  50. expect(result).toEqual(new Set());
  51. });
  52. });