UsersListPage.test.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import React from 'react';
  2. import { shallow } from 'enzyme';
  3. import { UsersListPage, Props } from './UsersListPage';
  4. import { NavModel, User } from 'app/types';
  5. import { getMockUser } from './__mocks__/userMocks';
  6. import appEvents from '../../core/app_events';
  7. jest.mock('../../core/app_events', () => ({
  8. emit: jest.fn(),
  9. }));
  10. const setup = (propOverrides?: object) => {
  11. const props: Props = {
  12. navModel: {} as NavModel,
  13. users: [] as User[],
  14. searchQuery: '',
  15. loadUsers: jest.fn(),
  16. updateUser: jest.fn(),
  17. removeUser: jest.fn(),
  18. setUsersSearchQuery: jest.fn(),
  19. };
  20. Object.assign(props, propOverrides);
  21. const wrapper = shallow(<UsersListPage {...props} />);
  22. const instance = wrapper.instance() as UsersListPage;
  23. return {
  24. wrapper,
  25. instance,
  26. };
  27. };
  28. describe('Render', () => {
  29. it('should render component', () => {
  30. const { wrapper } = setup();
  31. expect(wrapper).toMatchSnapshot();
  32. });
  33. });
  34. describe('Functions', () => {
  35. it('should emit show remove user modal', () => {
  36. const { instance } = setup();
  37. const mockUser = getMockUser();
  38. instance.onRemoveUser(mockUser);
  39. expect(appEvents.emit).toHaveBeenCalled();
  40. });
  41. });