table.spec.jsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import React from 'react';
  2. import {mount, render} from 'sentry-test/enzyme';
  3. import {ResultTable} from 'app/views/discover/result/table';
  4. describe('ResultTable', function() {
  5. let wrapper;
  6. beforeEach(function() {
  7. wrapper = mount(
  8. <ResultTable
  9. organization={TestStubs.Organization({
  10. projects: [TestStubs.Project({id: '1'})],
  11. })}
  12. query={{aggregations: [], fields: ['id', 'project.id']}}
  13. data={{
  14. data: [{id: '111', 'project.id': 1}],
  15. meta: [{name: 'id', type: 'string'}, {name: 'project.id', type: 'number'}],
  16. }}
  17. />
  18. );
  19. const mockCanvas = {
  20. getContext: () => ({
  21. measureText: () => ({width: 320}),
  22. }),
  23. };
  24. wrapper.instance().canvas = mockCanvas;
  25. });
  26. it('getColumnWidths()', function() {
  27. wrapper.setProps({
  28. data: {data: [{col1: 'foo'}], meta: [{name: 'col1'}]},
  29. query: {fields: ['col1'], aggregations: []},
  30. });
  31. const widths = wrapper.instance().getColumnWidths(500);
  32. expect(widths).toEqual([347, 151]);
  33. });
  34. it('getRowHeight()', function() {
  35. const mockCanvas = {
  36. getContext: () => ({
  37. measureText: text => {
  38. const lengths = {
  39. '"long-text"': 3000,
  40. '"medium-text"': 600,
  41. '"short-text"': 200,
  42. };
  43. return {width: lengths[text] || 300};
  44. },
  45. }),
  46. };
  47. const columnsToCheck = ['col1'];
  48. wrapper.instance().canvas = mockCanvas;
  49. wrapper.setProps({
  50. data: {
  51. data: [{col1: 'short-text'}, {col1: 'medium-text'}, {col1: 'long-text'}],
  52. meta: [{name: 'col1'}],
  53. },
  54. query: {fields: ['col1'], aggregations: []},
  55. });
  56. expect(wrapper.instance().getRowHeight(0, columnsToCheck)).toBe(31);
  57. expect(wrapper.instance().getRowHeight(1, columnsToCheck)).toBe(31);
  58. expect(wrapper.instance().getRowHeight(2, columnsToCheck)).toBe(61);
  59. expect(wrapper.instance().getRowHeight(3, columnsToCheck)).toBe(91);
  60. });
  61. it('getCellRenderer()', function() {
  62. const cols = wrapper.instance().getColumnList();
  63. const cellRenderer = wrapper.instance().getCellRenderer(cols);
  64. const expectedCellValues = [
  65. {value: 'id', row: 0, col: 0},
  66. {value: 'project.id', row: 0, col: 1},
  67. {value: '111', row: 1, col: 0},
  68. {value: '1', row: 1, col: 1},
  69. ];
  70. expectedCellValues.forEach(function({value, row, col}) {
  71. const cell = cellRenderer({rowIndex: row, columnIndex: col});
  72. const markup = render(cell);
  73. expect(markup.text()).toBe(value);
  74. });
  75. });
  76. });