diff --git a/.betterer.results b/.betterer.results
index 9d094e27732..cccbb6fad1b 100644
--- a/.betterer.results
+++ b/.betterer.results
@@ -146,9 +146,6 @@ exports[`no enzyme tests`] = {
"public/app/features/org/OrgDetailsPage.test.tsx:3835042085": [
[0, 19, 13, "RegExp match", "2409514259"]
],
- "public/app/features/teams/TeamSettings.test.tsx:2043271249": [
- [0, 19, 13, "RegExp match", "2409514259"]
- ],
"public/app/features/users/UsersListPage.test.tsx:2518052139": [
[0, 19, 13, "RegExp match", "2409514259"]
],
diff --git a/public/app/features/teams/TeamSettings.test.tsx b/public/app/features/teams/TeamSettings.test.tsx
index 2b6bb754ca3..1092aefede7 100644
--- a/public/app/features/teams/TeamSettings.test.tsx
+++ b/public/app/features/teams/TeamSettings.test.tsx
@@ -1,15 +1,20 @@
-import { shallow } from 'enzyme';
+import { fireEvent, render, screen, waitFor } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import React from 'react';
import { Props, TeamSettings } from './TeamSettings';
import { getMockTeam } from './__mocks__/teamMocks';
-jest.mock('app/core/core', () => ({
+jest.mock('app/core/services/context_srv', () => ({
contextSrv: {
hasPermissionInMetadata: () => true,
},
}));
+jest.mock('app/core/components/SharedPreferences/SharedPreferences', () => {
+ return { SharedPreferences: () =>
};
+});
+
const setup = (propOverrides?: object) => {
const props: Props = {
team: getMockTeam(),
@@ -18,19 +23,36 @@ const setup = (propOverrides?: object) => {
Object.assign(props, propOverrides);
- const wrapper = shallow();
- const instance = wrapper.instance() as any;
-
- return {
- wrapper,
- instance,
- };
+ render();
};
-describe('Render', () => {
+describe('Team settings', () => {
it('should render component', () => {
- const { wrapper } = setup();
+ setup();
+
+ expect(screen.getByText('Team settings')).toBeInTheDocument();
+ });
+
+ it('should validate required fields', async () => {
+ const mockUpdate = jest.fn();
+ setup({ updateTeam: mockUpdate });
+ await userEvent.clear(screen.getByRole('textbox', { name: /Name/ }));
+ await userEvent.type(screen.getByLabelText(/Email/i), 'team@test.com');
+ // Submitting with userEvent doesn't work here
+ fireEvent.submit(screen.getByRole('button', { name: 'Update' }));
+ expect(await screen.findByText('Name is required')).toBeInTheDocument();
+ await waitFor(() => expect(mockUpdate).not.toHaveBeenCalled());
+ });
- expect(wrapper).toMatchSnapshot();
+ it('should submit form with correct values', async () => {
+ const mockUpdate = jest.fn();
+ setup({ updateTeam: mockUpdate });
+ await userEvent.clear(screen.getByRole('textbox', { name: /Name/ }));
+ await userEvent.clear(screen.getByLabelText(/Email/i));
+ await userEvent.type(screen.getByRole('textbox', { name: /Name/ }), 'New team');
+ await userEvent.type(screen.getByLabelText(/Email/i), 'team@test.com');
+ // Submitting with userEvent doesn't work here
+ fireEvent.submit(screen.getByRole('button', { name: 'Update' }));
+ await waitFor(() => expect(mockUpdate).toHaveBeenCalledWith('New team', 'team@test.com'));
});
});
diff --git a/public/app/features/teams/TeamSettings.tsx b/public/app/features/teams/TeamSettings.tsx
index d4fb9016887..7a828f13064 100644
--- a/public/app/features/teams/TeamSettings.tsx
+++ b/public/app/features/teams/TeamSettings.tsx
@@ -32,9 +32,15 @@ export const TeamSettings: FC = ({ team, updateTeam }) => {
}}
disabled={!canWriteTeamSettings}
>
- {({ register }) => (
+ {({ register, errors }) => (
<>
-
+
diff --git a/public/app/features/teams/__snapshots__/TeamSettings.test.tsx.snap b/public/app/features/teams/__snapshots__/TeamSettings.test.tsx.snap
deleted file mode 100644
index 1fe40abc971..00000000000
--- a/public/app/features/teams/__snapshots__/TeamSettings.test.tsx.snap
+++ /dev/null
@@ -1,30 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`Render should render component 1`] = `
-
-
-
-
-`;