diff --git a/.betterer.results b/.betterer.results index f4f32c06177..1c202963eb9 100644 --- a/.betterer.results +++ b/.betterer.results @@ -167,9 +167,6 @@ exports[`no enzyme tests`] = { "public/app/features/org/OrgProfile.test.tsx:623809345": [ [0, 19, 13, "RegExp match", "2409514259"] ], - "public/app/features/teams/TeamMembers.test.tsx:4089428239": [ - [0, 19, 13, "RegExp match", "2409514259"] - ], "public/app/features/teams/TeamPages.test.tsx:3990420214": [ [0, 19, 13, "RegExp match", "2409514259"] ], diff --git a/public/app/features/teams/TeamMembers.test.tsx b/public/app/features/teams/TeamMembers.test.tsx index 2253a4671cf..4900e8e3a57 100644 --- a/public/app/features/teams/TeamMembers.test.tsx +++ b/public/app/features/teams/TeamMembers.test.tsx @@ -1,18 +1,33 @@ -import { shallow } from 'enzyme'; +import { render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import React from 'react'; +import { Provider } from 'react-redux'; import { mockToolkitActionCreator } from 'test/core/redux/mocks'; import { User } from 'app/core/services/context_srv'; +import { configureStore } from 'app/store/configureStore'; import { OrgRole, TeamMember } from '../../types'; -import { Props, State, TeamMembers } from './TeamMembers'; +import { Props, TeamMembers } from './TeamMembers'; import { getMockTeamMembers } from './__mocks__/teamMocks'; import { setSearchMemberQuery } from './state/reducers'; const signedInUserId = 1; +jest.mock('@grafana/runtime', () => ({ + ...jest.requireActual('@grafana/runtime'), + getBackendSrv: () => ({ + get: jest.fn().mockResolvedValue([{ userId: 1, login: 'Test' }]), + }), + config: { + bootData: { navTree: [], user: {} }, + }, +})); + const setup = (propOverrides?: object) => { + const store = configureStore(); + const props: Props = { members: [] as TeamMember[], searchMemberQuery: '', @@ -29,55 +44,24 @@ const setup = (propOverrides?: object) => { Object.assign(props, propOverrides); - const wrapper = shallow(); - const instance = wrapper.instance() as TeamMembers; - - return { - wrapper, - instance, - }; + render( + + + + ); }; -describe('Render', () => { - it('should render component', () => { - const { wrapper } = setup({}); - - expect(wrapper).toMatchSnapshot(); +describe('TeamMembers', () => { + it('should render team members', async () => { + setup({ members: getMockTeamMembers(1, 1) }); + expect(await screen.findAllByRole('row')).toHaveLength(2); }); - it('should render team members', () => { - const { wrapper } = setup({ members: getMockTeamMembers(5, 5) }); - - expect(wrapper).toMatchSnapshot(); - }); -}); - -describe('Functions', () => { - describe('on search member query change', () => { - it('it should call setSearchMemberQuery', () => { - const { instance } = setup({}); - - instance.onSearchQueryChange('member'); - - expect(instance.props.setSearchMemberQuery).toHaveBeenCalledWith('member'); - }); - }); - - describe('on add user to team', () => { - const { wrapper, instance } = setup({}); - const state = wrapper.state() as State; - - state.newTeamMember = { - id: 1, - label: '', - avatarUrl: '', - login: '', - name: '', - email: '', - }; - - instance.onAddUserToTeam(); - - expect(instance.props.addTeamMember).toHaveBeenCalledWith(1); + it('should add user to a team', async () => { + const mockAdd = jest.fn(); + setup({ addTeamMember: mockAdd }); + await userEvent.type(screen.getByLabelText('User picker'), 'Test{enter}'); + await userEvent.click(screen.getByRole('button', { name: 'Add to team' })); + await waitFor(() => expect(mockAdd).toHaveBeenCalledWith(1)); }); }); diff --git a/public/app/features/teams/__snapshots__/TeamMembers.test.tsx.snap b/public/app/features/teams/__snapshots__/TeamMembers.test.tsx.snap deleted file mode 100644 index b23858fcc8b..00000000000 --- a/public/app/features/teams/__snapshots__/TeamMembers.test.tsx.snap +++ /dev/null @@ -1,283 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Render should render component 1`] = ` -
-
-
- -
- -
- -
- - -
- -
-
-
-
- - - - - - - - - - - - -
- - Login - - Email - - Name - - Permission - -
-
-
-`; - -exports[`Render should render team members 1`] = ` -
-
-
- -
- -
- -
- - -
- -
-
-
-
- - - - - - - - - - - - - - - - - - -
- - Login - - Email - - Name - - Permission - -
-
-
-`;