TeamMembers.test.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. const mockEvent = { target: { value: 'member' } };
  48. instance.onSearchQueryChange(mockEvent);
  49. expect(instance.props.setSearchMemberQuery).toHaveBeenCalledWith('member');
  50. });
  51. });
  52. describe('on remove member', () => {
  53. const { instance } = setup();
  54. const mockTeamMember = getMockTeamMember();
  55. instance.onRemoveMember(mockTeamMember);
  56. expect(instance.props.removeTeamMember).toHaveBeenCalledWith(1);
  57. });
  58. describe('on add user to team', () => {
  59. const { wrapper, instance } = setup();
  60. const state = wrapper.state() as State;
  61. state.newTeamMember = {
  62. id: 1,
  63. label: '',
  64. avatarUrl: '',
  65. login: '',
  66. };
  67. instance.onAddUserToTeam();
  68. expect(instance.props.addTeamMember).toHaveBeenCalledWith(1);
  69. });
  70. });