keyValueList.spec.jsx 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import {mountWithTheme} from 'sentry-test/enzyme';
  2. import KeyValueList from 'sentry/components/events/interfaces/keyValueList';
  3. describe('KeyValueList', function () {
  4. describe('render', function () {
  5. it('should render a definition list of key/value pairs', function () {
  6. const data = [
  7. {key: 'a', value: 'x', subject: 'a'},
  8. {key: 'b', value: 'y', subject: 'b'},
  9. ];
  10. const wrapper = mountWithTheme(<KeyValueList data={data} />);
  11. expect(wrapper.find('td.key').at(0).text()).toEqual('a');
  12. expect(wrapper.find('td.key').at(1).text()).toEqual('b');
  13. expect(wrapper.find('td.val').at(0).text()).toEqual('x');
  14. expect(wrapper.find('td.val').at(1).text()).toEqual('y');
  15. });
  16. it('should sort sort key/value pairs', function () {
  17. const data = [
  18. {key: 'b', value: 'y', subject: 'b'},
  19. {key: 'a', value: 'x', subject: 'a'},
  20. ];
  21. const wrapper = mountWithTheme(<KeyValueList data={data} />);
  22. expect(wrapper.find('td.key').at(0).text()).toEqual('a');
  23. expect(wrapper.find('td.key').at(1).text()).toEqual('b');
  24. expect(wrapper.find('td.val').at(0).text()).toEqual('x');
  25. expect(wrapper.find('td.val').at(1).text()).toEqual('y');
  26. });
  27. it('should use a single space for values that are an empty string', function () {
  28. const data = [
  29. {key: 'b', value: 'y', subject: 'b'},
  30. {key: 'a', value: '', subject: 'a'}, // empty string
  31. ];
  32. const wrapper = mountWithTheme(<KeyValueList data={data} />);
  33. expect(wrapper.find('td.key').at(0).text()).toEqual('a');
  34. expect(wrapper.find('td.key').at(1).text()).toEqual('b');
  35. expect(wrapper.find('td.val').at(0).text()).toEqual('');
  36. expect(wrapper.find('td.val').at(1).text()).toEqual('y');
  37. });
  38. it('can sort key/value pairs with non-string values', function () {
  39. const data = [
  40. {key: 'b', value: {foo: 'bar'}, subject: 'b'},
  41. {key: 'a', value: [3, 2, 1], subject: 'a'},
  42. ];
  43. const wrapper = mountWithTheme(<KeyValueList isContextData data={data} />);
  44. // Ignore values, more interested in if keys rendered + are sorted
  45. expect(wrapper.find('td.key').at(0).text()).toEqual('a');
  46. expect(wrapper.find('td.key').at(1).text()).toEqual('b');
  47. });
  48. it('should coerce non-strings into strings', function () {
  49. const data = [{key: 'a', value: false, subject: 'a'}];
  50. const wrapper = mountWithTheme(<KeyValueList data={data} />);
  51. expect(wrapper.find('td.key').at(0).text()).toEqual('a');
  52. expect(wrapper.find('td.val').at(0).text()).toEqual('false');
  53. });
  54. it("shouldn't blow up on null", function () {
  55. const data = [{key: 'a', value: null, subject: 'a'}];
  56. const wrapper = mountWithTheme(<KeyValueList data={data} />);
  57. expect(wrapper.find('td.key').at(0).text()).toEqual('a');
  58. expect(wrapper.find('td.val').at(0).text()).toEqual('null');
  59. });
  60. });
  61. });