TeamMembers.test.tsx 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. };
  15. Object.assign(props, propOverrides);
  16. const wrapper = shallow(<TeamMembers {...props} />);
  17. const instance = wrapper.instance() as TeamMembers;
  18. return {
  19. wrapper,
  20. instance,
  21. };
  22. };
  23. describe('Render', () => {
  24. it('should render component', () => {
  25. const { wrapper } = setup();
  26. expect(wrapper).toMatchSnapshot();
  27. });
  28. it('should render team members', () => {
  29. const { wrapper } = setup({
  30. members: getMockTeamMembers(5),
  31. });
  32. expect(wrapper).toMatchSnapshot();
  33. });
  34. });
  35. describe('Functions', () => {
  36. describe('on search member query change', () => {
  37. it('it should call setSearchMemberQuery', () => {
  38. const { instance } = setup();
  39. const mockEvent = { target: { value: 'member' } };
  40. instance.onSearchQueryChange(mockEvent);
  41. expect(instance.props.setSearchMemberQuery).toHaveBeenCalledWith('member');
  42. });
  43. });
  44. describe('on remove member', () => {
  45. const { instance } = setup();
  46. const mockTeamMember = getMockTeamMember();
  47. instance.onRemoveMember(mockTeamMember);
  48. expect(instance.props.removeTeamMember).toHaveBeenCalledWith(1);
  49. });
  50. describe('on add user to team', () => {
  51. const { wrapper, instance } = setup();
  52. const state = wrapper.state() as State;
  53. state.newTeamMember = {
  54. id: 1,
  55. label: '',
  56. avatarUrl: '',
  57. login: '',
  58. };
  59. instance.onAddUserToTeam();
  60. expect(instance.props.addTeamMember).toHaveBeenCalledWith(1);
  61. });
  62. });