convertWidgetToBuilderStateParams.spec.tsx 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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 = {...getDefaultWidget(WidgetType.ERRORS), aggregates: ['count()']};
  7. const params = convertWidgetToBuilderStateParams(widget);
  8. expect(params.yAxis).toEqual([]);
  9. });
  10. it('stringifies the fields when converting a table to builder params', () => {
  11. const widget = {
  12. ...getDefaultWidget(WidgetType.ERRORS),
  13. queries: [
  14. {
  15. aggregates: [],
  16. columns: [],
  17. conditions: '',
  18. name: '',
  19. orderby: '',
  20. fields: ['geo.country'],
  21. fieldAliases: ['test'],
  22. },
  23. ],
  24. };
  25. const params = convertWidgetToBuilderStateParams(widget);
  26. expect(params.field).toEqual(['{"field":"geo.country","alias":"test"}']);
  27. });
  28. it('adds legend aliases to the builder params on charts', () => {
  29. const widget = {
  30. ...getDefaultWidget(WidgetType.ERRORS),
  31. displayType: DisplayType.AREA,
  32. queries: [
  33. {
  34. aggregates: [],
  35. columns: [],
  36. conditions: 'transaction.duration:>100',
  37. orderby: '',
  38. name: 'test',
  39. },
  40. {
  41. aggregates: [],
  42. columns: [],
  43. conditions: 'transaction.duration:>50',
  44. orderby: '',
  45. name: 'test2',
  46. },
  47. ],
  48. };
  49. const params = convertWidgetToBuilderStateParams(widget);
  50. expect(params.legendAlias).toEqual(['test', 'test2']);
  51. });
  52. it('does not duplicate filters because of multiple widget queries', () => {
  53. const widget = {
  54. ...getDefaultWidget(WidgetType.ERRORS),
  55. displayType: DisplayType.LINE,
  56. queries: [
  57. {
  58. aggregates: ['count()'],
  59. columns: [],
  60. conditions: 'one condition',
  61. orderby: '',
  62. name: '',
  63. },
  64. {
  65. aggregates: ['count()'],
  66. columns: [],
  67. conditions: 'second condition',
  68. orderby: '',
  69. name: '',
  70. },
  71. ],
  72. };
  73. const params = convertWidgetToBuilderStateParams(widget);
  74. expect(params.query).toEqual(['one condition', 'second condition']);
  75. expect(params.yAxis).toEqual(['count()']);
  76. });
  77. });