2022-05-20 05:28:59 -05:00
|
|
|
import { render, screen, waitFor } from '@testing-library/react';
|
|
|
|
import userEvent from '@testing-library/user-event';
|
2022-04-22 08:33:13 -05:00
|
|
|
import React from 'react';
|
|
|
|
|
2022-07-06 10:00:56 -05:00
|
|
|
import { BackendSrv, setBackendSrv } from '@grafana/runtime';
|
2022-05-20 05:28:59 -05:00
|
|
|
|
2022-07-06 10:00:56 -05:00
|
|
|
import { CreateTeam } from './CreateTeam';
|
2019-12-13 02:51:10 -06:00
|
|
|
|
2022-05-20 05:28:59 -05:00
|
|
|
beforeEach(() => {
|
|
|
|
jest.clearAllMocks();
|
|
|
|
});
|
|
|
|
|
2022-08-18 06:21:06 -05:00
|
|
|
jest.mock('app/core/core', () => ({
|
|
|
|
contextSrv: {
|
|
|
|
licensedAccessControlEnabled: () => false,
|
|
|
|
hasPermission: () => true,
|
|
|
|
hasPermissionInMetadata: () => true,
|
|
|
|
user: { orgId: 1 },
|
|
|
|
},
|
|
|
|
}));
|
|
|
|
|
|
|
|
jest.mock('app/core/components/RolePicker/hooks', () => ({
|
|
|
|
useRoleOptions: jest.fn().mockReturnValue([{ roleOptions: [] }, jest.fn()]),
|
|
|
|
}));
|
|
|
|
|
2022-05-20 05:28:59 -05:00
|
|
|
const mockPost = jest.fn(() => {
|
|
|
|
return Promise.resolve({});
|
|
|
|
});
|
|
|
|
|
2022-07-06 10:00:56 -05:00
|
|
|
setBackendSrv({
|
|
|
|
post: mockPost,
|
|
|
|
} as any as BackendSrv);
|
2022-05-20 05:28:59 -05:00
|
|
|
|
|
|
|
const setup = () => {
|
2022-07-06 10:00:56 -05:00
|
|
|
return render(<CreateTeam />);
|
2022-05-20 05:28:59 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
describe('Create team', () => {
|
|
|
|
it('should render component', () => {
|
|
|
|
setup();
|
2022-09-16 02:32:08 -05:00
|
|
|
expect(screen.getByRole('textbox', { name: /name/i })).toBeInTheDocument();
|
|
|
|
expect(screen.getByLabelText(/email/i)).toBeInTheDocument();
|
|
|
|
expect(screen.getByRole('button')).toBeInTheDocument();
|
2022-05-20 05:28:59 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
it('should send correct data to the server', async () => {
|
|
|
|
setup();
|
|
|
|
await userEvent.type(screen.getByRole('textbox', { name: /name/i }), 'Test team');
|
|
|
|
await userEvent.type(screen.getByLabelText(/email/i), 'team@test.com');
|
|
|
|
await userEvent.click(screen.getByRole('button', { name: /create/i }));
|
|
|
|
await waitFor(() => {
|
|
|
|
expect(mockPost).toHaveBeenCalledWith(expect.anything(), { name: 'Test team', email: 'team@test.com' });
|
|
|
|
});
|
|
|
|
});
|
2019-12-13 02:51:10 -06:00
|
|
|
|
2022-05-20 05:28:59 -05:00
|
|
|
it('should validate required fields', async () => {
|
|
|
|
setup();
|
|
|
|
await userEvent.type(screen.getByLabelText(/email/i), 'team@test.com');
|
|
|
|
await userEvent.click(screen.getByRole('button', { name: /create/i }));
|
|
|
|
await waitFor(() => {
|
|
|
|
expect(mockPost).not.toBeCalled();
|
|
|
|
});
|
|
|
|
expect(screen.getAllByRole('alert')).toHaveLength(1);
|
|
|
|
expect(screen.getByText(/team name is required/i)).toBeInTheDocument();
|
2019-12-13 02:51:10 -06:00
|
|
|
});
|
|
|
|
});
|