scaleTimeSeriesData.spec.tsx 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import {DurationUnit, RateUnit, SizeUnit} from 'sentry/utils/discover/fields';
  2. import type {TimeseriesData} from '../common/types';
  3. import {scaleTimeSeriesData} from './scaleTimeSeriesData';
  4. describe('scaleTimeSeriesData', () => {
  5. describe('does not scale unscalable types', () => {
  6. const timeserie: TimeseriesData = {
  7. field: 'user',
  8. data: [
  9. {
  10. timestamp: '2025-01-01T00:00:00',
  11. value: 17,
  12. },
  13. ],
  14. meta: {
  15. fields: {
  16. user: 'string',
  17. },
  18. units: {
  19. user: null,
  20. },
  21. },
  22. };
  23. it.each([RateUnit.PER_MINUTE, DurationUnit.SECOND, SizeUnit.GIBIBYTE, null] as const)(
  24. 'Does not scale strings to %s',
  25. unit => {
  26. expect(scaleTimeSeriesData(timeserie, unit)).toEqual(timeserie);
  27. }
  28. );
  29. });
  30. it('does not scale duration units from second to gigabyte', () => {
  31. const timeserie: TimeseriesData = {
  32. field: 'transaction.duration',
  33. data: [
  34. {
  35. timestamp: '2025-01-01T00:00:00',
  36. value: 17,
  37. },
  38. ],
  39. meta: {
  40. fields: {
  41. 'transaction.duration': 'duration',
  42. },
  43. units: {
  44. 'transaction.duration': 'second',
  45. },
  46. },
  47. };
  48. expect(scaleTimeSeriesData(timeserie, SizeUnit.GIGABYTE)).toEqual(timeserie);
  49. });
  50. it('scales duration units from second to millisecond', () => {
  51. const timeserie: TimeseriesData = {
  52. field: 'transaction.duration',
  53. data: [
  54. {
  55. timestamp: '2025-01-01T00:00:00',
  56. value: 17,
  57. },
  58. ],
  59. meta: {
  60. fields: {
  61. 'transaction.duration': 'duration',
  62. },
  63. units: {
  64. 'transaction.duration': 'second',
  65. },
  66. },
  67. };
  68. expect(scaleTimeSeriesData(timeserie, DurationUnit.MILLISECOND)).toEqual({
  69. field: 'transaction.duration',
  70. data: [
  71. {
  72. timestamp: '2025-01-01T00:00:00',
  73. value: 17000,
  74. },
  75. ],
  76. meta: {
  77. fields: {
  78. 'transaction.duration': 'duration',
  79. },
  80. units: {
  81. 'transaction.duration': 'millisecond',
  82. },
  83. },
  84. });
  85. });
  86. it('scales size units from mebibyte to byte', () => {
  87. const timeserie: TimeseriesData = {
  88. field: 'file.size',
  89. data: [
  90. {
  91. timestamp: '2025-01-01T00:00:00',
  92. value: 17,
  93. },
  94. ],
  95. meta: {
  96. fields: {
  97. 'file.size': 'size',
  98. },
  99. units: {
  100. 'file.size': 'mebibyte',
  101. },
  102. },
  103. };
  104. expect(scaleTimeSeriesData(timeserie, SizeUnit.BYTE)).toEqual({
  105. field: 'file.size',
  106. data: [
  107. {
  108. timestamp: '2025-01-01T00:00:00',
  109. value: 17825792,
  110. },
  111. ],
  112. meta: {
  113. fields: {
  114. 'file.size': 'size',
  115. },
  116. units: {
  117. 'file.size': 'byte',
  118. },
  119. },
  120. });
  121. });
  122. });