TeamMembers.test.tsx 1.8 KB

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