convertWidgetToBuilderStateParams.spec.tsx 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import {DisplayType, WidgetType} from 'sentry/views/dashboards/types';
  2. import {convertWidgetToBuilderStateParams} from 'sentry/views/dashboards/widgetBuilder/utils/convertWidgetToBuilderStateParams';
  3. import {getDefaultWidget} from 'sentry/views/dashboards/widgetBuilder/utils/getDefaultWidget';
  4. describe('convertWidgetToBuilderStateParams', () => {
  5. it('should not pass along yAxis when converting a table to builder params', () => {
  6. const widget = {
  7. ...getDefaultWidget(WidgetType.ERRORS),
  8. displayType: DisplayType.TABLE,
  9. aggregates: ['count()'],
  10. };
  11. const params = convertWidgetToBuilderStateParams(widget);
  12. expect(params.yAxis).toEqual([]);
  13. });
  14. it('stringifies the fields when converting a table to builder params', () => {
  15. const widget = {
  16. ...getDefaultWidget(WidgetType.ERRORS),
  17. displayType: DisplayType.TABLE,
  18. queries: [
  19. {
  20. aggregates: [],
  21. columns: [],
  22. conditions: '',
  23. name: '',
  24. orderby: '',
  25. fields: ['geo.country'],
  26. fieldAliases: ['test'],
  27. },
  28. ],
  29. };
  30. const params = convertWidgetToBuilderStateParams(widget);
  31. expect(params.field).toEqual(['{"field":"geo.country","alias":"test"}']);
  32. });
  33. it('adds legend aliases to the builder params on charts', () => {
  34. const widget = {
  35. ...getDefaultWidget(WidgetType.ERRORS),
  36. displayType: DisplayType.AREA,
  37. queries: [
  38. {
  39. aggregates: [],
  40. columns: [],
  41. conditions: 'transaction.duration:>100',
  42. orderby: '',
  43. name: 'test',
  44. },
  45. {
  46. aggregates: [],
  47. columns: [],
  48. conditions: 'transaction.duration:>50',
  49. orderby: '',
  50. name: 'test2',
  51. },
  52. ],
  53. };
  54. const params = convertWidgetToBuilderStateParams(widget);
  55. expect(params.legendAlias).toEqual(['test', 'test2']);
  56. });
  57. it('does not duplicate filters because of multiple widget queries', () => {
  58. const widget = {
  59. ...getDefaultWidget(WidgetType.ERRORS),
  60. displayType: DisplayType.LINE,
  61. queries: [
  62. {
  63. aggregates: ['count()'],
  64. columns: [],
  65. conditions: 'one condition',
  66. orderby: '',
  67. name: '',
  68. },
  69. {
  70. aggregates: ['count()'],
  71. columns: [],
  72. conditions: 'second condition',
  73. orderby: '',
  74. name: '',
  75. },
  76. ],
  77. };
  78. const params = convertWidgetToBuilderStateParams(widget);
  79. expect(params.query).toEqual(['one condition', 'second condition']);
  80. expect(params.yAxis).toEqual(['count()']);
  81. });
  82. it('exposes the selected aggregate in a widget query', () => {
  83. const widget = {
  84. ...getDefaultWidget(WidgetType.ERRORS),
  85. queries: [
  86. {
  87. aggregates: ['count()'],
  88. selectedAggregate: 0,
  89. columns: [],
  90. conditions: '',
  91. name: '',
  92. orderby: '',
  93. },
  94. ],
  95. };
  96. const params = convertWidgetToBuilderStateParams(widget);
  97. expect(params.selectedAggregate).toBe(0);
  98. });
  99. it('includes the thresholds in the builder params', () => {
  100. const widget = {
  101. ...getDefaultWidget(WidgetType.TRANSACTIONS),
  102. thresholds: {
  103. max_values: {
  104. max1: 200,
  105. max2: 300,
  106. },
  107. unit: 'milliseconds',
  108. },
  109. };
  110. const params = convertWidgetToBuilderStateParams(widget);
  111. expect(params.thresholds).toBe(
  112. '{"max_values":{"max1":200,"max2":300},"unit":"milliseconds"}'
  113. );
  114. });
  115. });