TeamMembers.test.tsx 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import React from 'react';
  2. import { shallow } from 'enzyme';
  3. import { TeamMembers, Props, State } from './TeamMembers';
  4. import { TeamMember } from '../../types';
  5. import { getMockTeamMember, getMockTeamMembers } from './__mocks__/teamMocks';
  6. const setup = (propOverrides?: object) => {
  7. const props: Props = {
  8. members: [] as TeamMember[],
  9. searchMemberQuery: '',
  10. setSearchMemberQuery: jest.fn(),
  11. loadTeamMembers: jest.fn(),
  12. addTeamMember: jest.fn(),
  13. removeTeamMember: jest.fn(),
  14. syncEnabled: false,
  15. };
  16. Object.assign(props, propOverrides);
  17. const wrapper = shallow(<TeamMembers {...props} />);
  18. const instance = wrapper.instance() as TeamMembers;
  19. return {
  20. wrapper,
  21. instance,
  22. };
  23. };
  24. describe('Render', () => {
  25. it('should render component', () => {
  26. const { wrapper } = setup();
  27. expect(wrapper).toMatchSnapshot();
  28. });
  29. it('should render team members', () => {
  30. const { wrapper } = setup({
  31. members: getMockTeamMembers(5),
  32. });
  33. expect(wrapper).toMatchSnapshot();
  34. });
  35. it('should render team members when sync enabled', () => {
  36. const { wrapper } = setup({
  37. members: getMockTeamMembers(5),
  38. syncEnabled: true,
  39. });
  40. expect(wrapper).toMatchSnapshot();
  41. });
  42. });
  43. describe('Functions', () => {
  44. describe('on search member query change', () => {
  45. it('it should call setSearchMemberQuery', () => {
  46. const { instance } = setup();
  47. instance.onSearchQueryChange('member');
  48. expect(instance.props.setSearchMemberQuery).toHaveBeenCalledWith('member');
  49. });
  50. });
  51. describe('on remove member', () => {
  52. const { instance } = setup();
  53. const mockTeamMember = getMockTeamMember();
  54. instance.onRemoveMember(mockTeamMember);
  55. expect(instance.props.removeTeamMember).toHaveBeenCalledWith(1);
  56. });
  57. describe('on add user to team', () => {
  58. const { wrapper, instance } = setup();
  59. const state = wrapper.state() as State;
  60. state.newTeamMember = {
  61. id: 1,
  62. label: '',
  63. avatarUrl: '',
  64. login: '',
  65. };
  66. instance.onAddUserToTeam();
  67. expect(instance.props.addTeamMember).toHaveBeenCalledWith(1);
  68. });
  69. });