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
- |
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-`;