orderBy.spec.jsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import React from 'react';
  2. import {mount} from 'enzyme';
  3. import Orderby from 'app/views/discover/sidebar/orderby';
  4. describe('orderBy', function() {
  5. let organization, project, wrapper, onChangeMock, columns;
  6. beforeEach(function() {
  7. project = TestStubs.Project();
  8. organization = TestStubs.Organization({projects: [project]});
  9. onChangeMock = jest.fn();
  10. columns = [{value: 'timestamp', label: 'timestamp'}, {value: 'id', label: 'id'}];
  11. wrapper = mount(
  12. <Orderby value="-timestamp" columns={columns} onChange={onChangeMock} />,
  13. TestStubs.routerContext([{organization}])
  14. );
  15. });
  16. it('Renders correct initial value options', function() {
  17. expect(
  18. wrapper
  19. .find('StyledSelect')
  20. .at(0)
  21. .prop('options')
  22. ).toEqual([{value: 'timestamp', label: 'timestamp'}, {value: 'id', label: 'id'}]);
  23. expect(
  24. wrapper
  25. .find('StyledSelect')
  26. .at(1)
  27. .prop('options')
  28. ).toEqual([{value: 'asc', label: 'asc'}, {value: 'desc', label: 'desc'}]);
  29. expect(
  30. wrapper
  31. .find('StyledSelect')
  32. .at(0)
  33. .props().value
  34. ).toEqual('timestamp');
  35. expect(
  36. wrapper
  37. .find('StyledSelect')
  38. .at(1)
  39. .props().value
  40. ).toEqual('desc');
  41. });
  42. it('Changes field, preserves direction', function() {
  43. wrapper
  44. .find('input')
  45. .at(1)
  46. .simulate('change', {target: {value: 'id'}})
  47. .simulate('keyDown', {key: 'Enter', keyCode: 13});
  48. expect(onChangeMock).toHaveBeenCalledWith('-id');
  49. });
  50. it('Changes direction, preserves field', function() {
  51. wrapper
  52. .find('input')
  53. .at(3)
  54. .simulate('change', {target: {value: 'asc'}})
  55. .simulate('keyDown', {key: 'Enter', keyCode: 13});
  56. expect(onChangeMock).toHaveBeenCalledWith('timestamp');
  57. });
  58. });