transactions.spec.tsx 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. import {OrganizationFixture} from 'sentry-fixture/organization';
  2. import {PageFiltersFixture} from 'sentry-fixture/pageFilters';
  3. import {WidgetFixture} from 'sentry-fixture/widget';
  4. import type {Client} from 'sentry/api';
  5. import {DiscoverDatasets} from 'sentry/utils/discover/types';
  6. import {MEPState} from 'sentry/utils/performance/contexts/metricsEnhancedSetting';
  7. import {TransactionsConfig} from 'sentry/views/dashboards/datasetConfig/transactions';
  8. describe('TransactionsConfig', function () {
  9. describe('getEventsRequest', function () {
  10. let api!: Client;
  11. let organization!: ReturnType<typeof OrganizationFixture>;
  12. let mockEventsRequest!: jest.Mock;
  13. let mockEventsStatsRequest!: jest.Mock;
  14. beforeEach(function () {
  15. MockApiClient.clearMockResponses();
  16. api = new MockApiClient();
  17. organization = OrganizationFixture({
  18. features: ['on-demand-metrics-extraction', 'on-demand-metrics-ui-widgets'],
  19. });
  20. mockEventsRequest = MockApiClient.addMockResponse({
  21. url: '/organizations/org-slug/events/',
  22. body: {
  23. data: [],
  24. },
  25. });
  26. mockEventsStatsRequest = MockApiClient.addMockResponse({
  27. url: '/organizations/org-slug/events-stats/',
  28. body: {
  29. data: [],
  30. },
  31. });
  32. });
  33. it('makes table request to the transactions dataset', function () {
  34. const pageFilters = PageFiltersFixture();
  35. const widget = WidgetFixture();
  36. TransactionsConfig.getTableRequest!(
  37. api,
  38. widget,
  39. {
  40. fields: ['count()'],
  41. aggregates: ['count()'],
  42. columns: [],
  43. conditions: '',
  44. name: '',
  45. orderby: '',
  46. },
  47. organization,
  48. pageFilters
  49. );
  50. expect(mockEventsRequest).toHaveBeenCalledWith(
  51. '/organizations/org-slug/events/',
  52. expect.objectContaining({
  53. query: expect.objectContaining({
  54. dataset: DiscoverDatasets.TRANSACTIONS,
  55. useOnDemandMetrics: false,
  56. }),
  57. })
  58. );
  59. });
  60. it('makes table request to the metrics enhanced dataset with the correct mep state', function () {
  61. const pageFilters = PageFiltersFixture();
  62. const widget = WidgetFixture();
  63. TransactionsConfig.getTableRequest!(
  64. api,
  65. widget,
  66. {
  67. fields: ['count()'],
  68. aggregates: ['count()'],
  69. columns: [],
  70. conditions: '',
  71. name: '',
  72. orderby: '',
  73. },
  74. organization,
  75. pageFilters,
  76. undefined,
  77. undefined,
  78. undefined,
  79. undefined,
  80. MEPState.AUTO
  81. );
  82. expect(mockEventsRequest).toHaveBeenCalledWith(
  83. '/organizations/org-slug/events/',
  84. expect.objectContaining({
  85. query: expect.objectContaining({
  86. dataset: DiscoverDatasets.METRICS_ENHANCED,
  87. useOnDemandMetrics: false,
  88. }),
  89. })
  90. );
  91. });
  92. it('makes table request with on demand', function () {
  93. const pageFilters = PageFiltersFixture();
  94. const widget = WidgetFixture();
  95. TransactionsConfig.getTableRequest!(
  96. api,
  97. widget,
  98. {
  99. fields: ['count()'],
  100. aggregates: ['count()'],
  101. columns: [],
  102. conditions: '',
  103. name: '',
  104. orderby: '',
  105. },
  106. organization,
  107. pageFilters,
  108. {
  109. setForceOnDemand: () => {},
  110. forceOnDemand: true,
  111. isControlEnabled: true,
  112. },
  113. undefined,
  114. undefined,
  115. undefined,
  116. MEPState.AUTO
  117. );
  118. expect(mockEventsRequest).toHaveBeenCalledWith(
  119. '/organizations/org-slug/events/',
  120. expect.objectContaining({
  121. query: expect.objectContaining({
  122. dataset: DiscoverDatasets.METRICS_ENHANCED,
  123. useOnDemandMetrics: true,
  124. onDemandType: 'dynamic_query',
  125. }),
  126. })
  127. );
  128. });
  129. it('makes series request to the transactions dataset', function () {
  130. const pageFilters = PageFiltersFixture();
  131. const widget = WidgetFixture();
  132. TransactionsConfig.getSeriesRequest!(api, widget, 0, organization, pageFilters);
  133. expect(mockEventsStatsRequest).toHaveBeenCalledWith(
  134. '/organizations/org-slug/events-stats/',
  135. expect.objectContaining({
  136. query: expect.objectContaining({
  137. dataset: DiscoverDatasets.TRANSACTIONS,
  138. }),
  139. })
  140. );
  141. });
  142. it('makes series request to the metrics enhanced dataset', function () {
  143. const pageFilters = PageFiltersFixture();
  144. const widget = WidgetFixture();
  145. TransactionsConfig.getSeriesRequest!(
  146. api,
  147. widget,
  148. 0,
  149. organization,
  150. pageFilters,
  151. undefined,
  152. undefined,
  153. MEPState.AUTO
  154. );
  155. expect(mockEventsStatsRequest).toHaveBeenCalledWith(
  156. '/organizations/org-slug/events-stats/',
  157. expect.objectContaining({
  158. query: expect.objectContaining({
  159. dataset: DiscoverDatasets.METRICS_ENHANCED,
  160. }),
  161. })
  162. );
  163. });
  164. it('makes series request with on demand', function () {
  165. const pageFilters = PageFiltersFixture();
  166. const widget = WidgetFixture();
  167. TransactionsConfig.getSeriesRequest!(
  168. api,
  169. widget,
  170. 0,
  171. organization,
  172. pageFilters,
  173. {
  174. setForceOnDemand: () => {},
  175. forceOnDemand: true,
  176. isControlEnabled: true,
  177. },
  178. undefined,
  179. MEPState.AUTO
  180. );
  181. expect(mockEventsStatsRequest).toHaveBeenCalledWith(
  182. '/organizations/org-slug/events-stats/',
  183. expect.objectContaining({
  184. query: expect.objectContaining({
  185. dataset: DiscoverDatasets.METRICS_ENHANCED,
  186. onDemandType: 'dynamic_query',
  187. useOnDemandMetrics: true,
  188. }),
  189. })
  190. );
  191. });
  192. });
  193. });