projectSelector.spec.jsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import React from 'react';
  2. import {mount} from 'enzyme';
  3. import ProjectHeaderProjectSelector from 'app/components/projectHeader/projectSelector';
  4. describe('ProjectHeaderProjectSelector', function() {
  5. const testTeam = TestStubs.Team({
  6. id: 'test-team',
  7. slug: 'test-team',
  8. isMember: true,
  9. });
  10. const testProject = TestStubs.Project({
  11. id: 'test-project',
  12. slug: 'test-project',
  13. isMember: true,
  14. teams: [testTeam],
  15. });
  16. const anotherProject = TestStubs.Project({
  17. id: 'another-project',
  18. slug: 'another-project',
  19. isMember: true,
  20. teams: [testTeam],
  21. });
  22. const mockOrg = TestStubs.Organization({
  23. id: 'org',
  24. slug: 'org',
  25. teams: [testTeam],
  26. projects: [testProject, anotherProject],
  27. features: ['new-teams'],
  28. access: [],
  29. });
  30. const routerContext = TestStubs.routerContext([{organization: mockOrg}]);
  31. const openMenu = wrapper => wrapper.find('DropdownLabel').simulate('click');
  32. it('renders with "Select a project" when no project is selected', function() {
  33. let wrapper = mount(
  34. <ProjectHeaderProjectSelector organization={mockOrg} projectId="" />,
  35. routerContext
  36. );
  37. expect(wrapper.find('SelectProject')).toHaveLength(1);
  38. });
  39. it('has project label when project is selected', function() {
  40. let wrapper = mount(
  41. <ProjectHeaderProjectSelector organization={mockOrg} projectId="" />,
  42. routerContext
  43. );
  44. openMenu(wrapper);
  45. // Select first project
  46. wrapper
  47. .find('AutoCompleteItem')
  48. .first()
  49. .simulate('click');
  50. expect(wrapper.find('IdBadge').prop('project')).toEqual(
  51. expect.objectContaining({
  52. slug: 'test-project',
  53. })
  54. );
  55. });
  56. it('calls `router.push` when a project is selected', function() {
  57. let routerMock = TestStubs.router();
  58. let wrapper = mount(
  59. <ProjectHeaderProjectSelector
  60. organization={mockOrg}
  61. projectId=""
  62. router={routerMock}
  63. />,
  64. routerContext
  65. );
  66. openMenu(wrapper);
  67. // Select first project
  68. wrapper
  69. .find('AutoCompleteItem')
  70. .first()
  71. .simulate('click');
  72. expect(routerMock.push).toHaveBeenCalledWith('/org/test-project/');
  73. });
  74. });