diff --git a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx
index 5855aa1a6a5b5f1..adaad246118db0c 100644
--- a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx
+++ b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx
@@ -5,27 +5,28 @@
* 2.0.
*/
+import { fireEvent, waitFor } from '@testing-library/dom';
+import { cleanup } from '@testing-library/react';
+import { createBrowserHistory } from 'history';
import React from 'react';
import Router from 'react-router-dom';
-import { createBrowserHistory } from 'history';
-import { waitFor, fireEvent, screen } from '@testing-library/dom';
-import { cleanup } from '@testing-library/react';
-import userEvent from '@testing-library/user-event';
-import { render } from '../../utils/test_helper';
-import { useKibana } from '../../utils/kibana_react';
-import { useLicense } from '../../hooks/use_license';
-import { useFetchIndices } from '../../hooks/use_fetch_indices';
-import { useFetchDataViews } from '../../hooks/use_fetch_data_views';
-import { useFetchSloDetails } from '../../hooks/slo/use_fetch_slo_details';
+import { paths } from '../../../common/locators/paths';
+import { buildSlo } from '../../data/slo/slo';
+import { useCapabilities } from '../../hooks/slo/use_capabilities';
import { useCreateSlo } from '../../hooks/slo/use_create_slo';
-import { useUpdateSlo } from '../../hooks/slo/use_update_slo';
import { useFetchApmSuggestions } from '../../hooks/slo/use_fetch_apm_suggestions';
+import { useFetchIndexPatternFields } from '../../hooks/slo/use_fetch_index_pattern_fields';
+import { useFetchSloDetails } from '../../hooks/slo/use_fetch_slo_details';
+import { useUpdateSlo } from '../../hooks/slo/use_update_slo';
+import { useFetchDataViews } from '../../hooks/use_fetch_data_views';
+import { useFetchIndices } from '../../hooks/use_fetch_indices';
+import { useLicense } from '../../hooks/use_license';
+import { useKibana } from '../../utils/kibana_react';
import { kibanaStartMock } from '../../utils/kibana_react.mock';
-import { buildSlo } from '../../data/slo/slo';
-import { paths } from '../../../common/locators/paths';
+import { render } from '../../utils/test_helper';
+import { SLO_EDIT_FORM_DEFAULT_VALUES } from './constants';
import { SloEditPage } from './slo_edit';
-import { useCapabilities } from '../../hooks/slo/use_capabilities';
jest.mock('react-router-dom', () => ({
...jest.requireActual('react-router-dom'),
@@ -41,6 +42,7 @@ jest.mock('../../hooks/slo/use_create_slo');
jest.mock('../../hooks/slo/use_update_slo');
jest.mock('../../hooks/slo/use_fetch_apm_suggestions');
jest.mock('../../hooks/slo/use_capabilities');
+jest.mock('../../hooks/slo/use_fetch_index_pattern_fields');
const mockUseKibanaReturnValue = kibanaStartMock.startContract();
@@ -56,6 +58,7 @@ const useFetchSloMock = useFetchSloDetails as jest.Mock;
const useCreateSloMock = useCreateSlo as jest.Mock;
const useUpdateSloMock = useUpdateSlo as jest.Mock;
const useFetchApmSuggestionsMock = useFetchApmSuggestions as jest.Mock;
+const useFetchIndexPatternFieldsMock = useFetchIndexPatternFields as jest.Mock;
const useCapabilitiesMock = useCapabilities as jest.Mock;
const mockAddSuccess = jest.fn();
@@ -122,12 +125,48 @@ const mockKibana = () => {
};
describe('SLO Edit Page', () => {
+ const mockCreate = jest.fn();
+ const mockUpdate = jest.fn();
+
beforeEach(() => {
jest.clearAllMocks();
mockKibana();
// Silence all the ref errors in Eui components.
+ jest.spyOn(console, 'warn').mockImplementation(() => {});
jest.spyOn(console, 'error').mockImplementation(() => {});
+
+ jest.spyOn(Router, 'useHistory').mockReturnValue(createBrowserHistory());
+
+ useFetchDataViewsMock.mockReturnValue({
+ isLoading: false,
+ data: [{ getName: () => 'dataview', getIndexPattern: () => '.dataview-index' }],
+ });
+ useFetchIndicesMock.mockReturnValue({
+ isLoading: false,
+ data: ['some-index', 'index-2'],
+ });
+ useFetchIndexPatternFieldsMock.mockReturnValue({
+ isLoading: false,
+ data: [
+ { name: 'field', type: 'date', aggregatable: false, searchable: false },
+ { name: 'field_text', type: 'text', aggregatable: true, searchable: true },
+ ],
+ });
+
+ useCreateSloMock.mockReturnValue({
+ isLoading: false,
+ isSuccess: false,
+ isError: false,
+ mutateAsync: mockCreate,
+ });
+
+ useUpdateSloMock.mockReturnValue({
+ isLoading: false,
+ isSuccess: false,
+ isError: false,
+ mutateAsync: mockUpdate,
+ });
});
afterEach(cleanup);
@@ -149,28 +188,6 @@ describe('SLO Edit Page', () => {
useFetchSloMock.mockReturnValue({ isLoading: false, slo: undefined });
- useFetchIndicesMock.mockReturnValue({
- isLoading: false,
- data: ['some-index'],
- });
- useFetchDataViewsMock.mockReturnValue({ isLoading: false, data: [] });
-
- useCreateSloMock.mockReturnValue({
- isLoading: false,
- isSuccess: false,
- isError: false,
- mutate: jest.fn(),
- mutateAsync: jest.fn(),
- });
-
- useUpdateSloMock.mockReturnValue({
- isLoading: false,
- isSuccess: false,
- isError: false,
- mutate: jest.fn(),
- mutateAsync: jest.fn(),
- });
-
render();
expect(mockNavigate).toBeCalledWith(mockBasePathPrepend(paths.observability.slos));
@@ -184,7 +201,6 @@ describe('SLO Edit Page', () => {
hasReadCapabilities: true,
});
useLicenseMock.mockReturnValue({ hasAtLeast: () => true });
- useFetchDataViewsMock.mockReturnValue({ isLoading: false, data: [] });
});
describe('with no write permission', () => {
@@ -203,27 +219,6 @@ describe('SLO Edit Page', () => {
useFetchSloMock.mockReturnValue({ isLoading: false, slo: undefined });
- useFetchIndicesMock.mockReturnValue({
- isLoading: false,
- data: ['some-index'],
- });
-
- useCreateSloMock.mockReturnValue({
- isLoading: false,
- isSuccess: false,
- isError: false,
- mutate: jest.fn(),
- mutateAsync: jest.fn(),
- });
-
- useUpdateSloMock.mockReturnValue({
- isLoading: false,
- isSuccess: false,
- isError: false,
- mutate: jest.fn(),
- mutateAsync: jest.fn(),
- });
-
render();
expect(mockNavigate).toBeCalledWith(mockBasePathPrepend(paths.observability.slos));
@@ -231,141 +226,32 @@ describe('SLO Edit Page', () => {
});
describe('when no sloId route param is provided', () => {
- it('renders the SLO Edit page in pristine state', async () => {
- jest.spyOn(Router, 'useParams').mockReturnValue({ sloId: undefined });
- jest
- .spyOn(Router, 'useLocation')
- .mockReturnValue({ pathname: 'foo', search: '', state: '', hash: '' });
-
+ beforeEach(() => {
useFetchSloMock.mockReturnValue({ isLoading: false, slo: undefined });
-
- useFetchIndicesMock.mockReturnValue({
- isLoading: false,
- data: ['some-index'],
- });
-
- useCreateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- useUpdateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- render();
-
- expect(screen.queryByTestId('slosEditPage')).toBeTruthy();
- expect(screen.queryByTestId('sloForm')).toBeTruthy();
-
- expect(screen.queryByTestId('sloEditFormIndicatorSection')).toBeTruthy();
- // Show default values from the kql indicator
- expect(screen.queryByTestId('sloFormIndicatorTypeSelect')).toHaveValue('sli.kql.custom');
- expect(screen.queryByTestId('indexSelectionSelectedValue')).toBeNull();
- expect(screen.queryByTestId('customKqlIndicatorFormQueryFilterInput')).toHaveValue('');
- expect(screen.queryByTestId('customKqlIndicatorFormGoodQueryInput')).toHaveValue('');
- expect(screen.queryByTestId('customKqlIndicatorFormTotalQueryInput')).toHaveValue('');
-
- // other sections are hidden
- expect(screen.queryByTestId('sloEditFormObjectiveSection')).toBeNull();
- expect(screen.queryByTestId('sloEditFormDescriptionSection')).toBeNull();
});
- it.skip('calls the createSlo hook if all required values are filled in', async () => {
+ it('renders the SLO Edit page in pristine state', async () => {
jest.spyOn(Router, 'useParams').mockReturnValue({ sloId: undefined });
jest
.spyOn(Router, 'useLocation')
.mockReturnValue({ pathname: 'foo', search: '', state: '', hash: '' });
- useFetchIndicesMock.mockReturnValue({
- isLoading: false,
- data: ['some-index'],
- });
-
- useFetchSloMock.mockReturnValue({ isLoading: false, slo: undefined });
-
- const mockCreate = jest.fn();
- const mockUpdate = jest.fn();
-
- useCreateSloMock.mockReturnValue({
- mutateAsync: mockCreate,
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- useUpdateSloMock.mockReturnValue({
- mutateAsync: mockUpdate,
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
+ const { queryByTestId } = render();
- render();
+ expect(queryByTestId('slosEditPage')).toBeTruthy();
+ expect(queryByTestId('sloForm')).toBeTruthy();
- userEvent.type(screen.getByTestId('indexSelection'), 'some-index');
- userEvent.type(screen.getByTestId('customKqlIndicatorFormQueryFilterInput'), 'irrelevant');
- userEvent.type(screen.getByTestId('customKqlIndicatorFormGoodQueryInput'), 'irrelevant');
- userEvent.type(screen.getByTestId('customKqlIndicatorFormTotalQueryInput'), 'irrelevant');
- userEvent.selectOptions(screen.getByTestId('sloFormBudgetingMethodSelect'), 'occurrences');
- userEvent.selectOptions(screen.getByTestId('sloFormTimeWindowDurationSelect'), '7d');
- userEvent.clear(screen.getByTestId('sloFormObjectiveTargetInput'));
- userEvent.type(screen.getByTestId('sloFormObjectiveTargetInput'), '98.5');
- userEvent.type(screen.getByTestId('sloFormNameInput'), 'irrelevant');
- userEvent.type(screen.getByTestId('sloFormDescriptionTextArea'), 'irrelevant');
+ expect(queryByTestId('sloEditFormIndicatorSection')).toBeTruthy();
+ // Show default values from the kql indicator
+ expect(queryByTestId('sloFormIndicatorTypeSelect')).toHaveValue('sli.kql.custom');
+ expect(queryByTestId('indexSelectionSelectedValue')).toBeNull();
- // all sections are visible
- expect(screen.queryByTestId('sloEditFormIndicatorSection')).toBeTruthy();
- expect(screen.queryByTestId('sloEditFormObjectiveSection')).toBeTruthy();
- expect(screen.queryByTestId('sloEditFormDescriptionSection')).toBeTruthy();
-
- expect(screen.getByTestId('sloFormSubmitButton')).toBeEnabled();
-
- fireEvent.click(screen.getByTestId('sloFormSubmitButton')!);
-
- expect(mockCreate).toMatchInlineSnapshot(`
- [MockFunction] {
- "calls": Array [
- Array [
- Object {
- "budgetingMethod": "occurrences",
- "description": "irrelevant",
- "indicator": Object {
- "params": Object {
- "filter": "irrelevant",
- "good": "irrelevant",
- "index": "some-index",
- "total": "irrelevant",
- },
- "type": "sli.kql.custom",
- },
- "name": "irrelevant",
- "objective": Object {
- "target": 0.985,
- },
- "timeWindow": Object {
- "duration": "7d",
- "type": "rolling",
- },
- },
- ],
- ],
- "results": Array [
- Object {
- "type": "return",
- "value": undefined,
- },
- ],
- }
- `);
+ // other sections are hidden
+ expect(queryByTestId('sloEditFormObjectiveSection')).toBeNull();
+ expect(queryByTestId('sloEditFormDescriptionSection')).toBeNull();
});
- it('prefills the form with values when URL Search parameters are passed', () => {
+ it('prefills the form with values from URL', () => {
jest.spyOn(Router, 'useParams').mockReturnValue({ sloId: undefined });
const history = createBrowserHistory();
@@ -377,160 +263,80 @@ describe('SLO Edit Page', () => {
.spyOn(Router, 'useLocation')
.mockReturnValue({ pathname: 'foo', search: '', state: '', hash: '' });
- useFetchSloMock.mockReturnValue({ isLoading: false, slo: undefined });
-
useFetchApmSuggestionsMock.mockReturnValue({
suggestions: ['cartService'],
isLoading: false,
});
- useFetchIndicesMock.mockReturnValue({
- isLoading: false,
- data: ['some-index'],
- });
+ const { queryByTestId } = render();
- useCreateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- useUpdateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- render();
-
- expect(screen.queryByTestId('slosEditPage')).toBeTruthy();
- expect(screen.queryByTestId('sloForm')).toBeTruthy();
+ expect(queryByTestId('slosEditPage')).toBeTruthy();
+ expect(queryByTestId('sloForm')).toBeTruthy();
- expect(screen.queryByTestId('sloEditFormIndicatorSection')).toBeTruthy();
- expect(screen.queryByTestId('sloFormIndicatorTypeSelect')).toHaveValue(
+ expect(queryByTestId('sloEditFormIndicatorSection')).toBeTruthy();
+ expect(queryByTestId('sloFormIndicatorTypeSelect')).toHaveValue(
'sli.apm.transactionDuration'
);
- expect(screen.queryByTestId('apmLatencyServiceSelector')).toHaveTextContent('cartService');
- expect(screen.queryByTestId('apmLatencyEnvironmentSelector')).toHaveTextContent('prod');
+ expect(queryByTestId('apmLatencyServiceSelector')).toHaveTextContent('cartService');
+ expect(queryByTestId('apmLatencyEnvironmentSelector')).toHaveTextContent('prod');
- expect(screen.queryByTestId('sloEditFormObjectiveSection')).toBeFalsy();
- expect(screen.queryByTestId('sloEditFormDescriptionSection')).toBeFalsy();
+ expect(queryByTestId('sloEditFormObjectiveSection')).toBeFalsy();
+ expect(queryByTestId('sloEditFormDescriptionSection')).toBeFalsy();
});
});
describe('when a sloId route param is provided', () => {
- it.only('prefills the form SLO with the SLO values', async () => {
- const slo = buildSlo({ id: '123' });
+ it('prefills the form with the SLO values', async () => {
+ const slo = buildSlo({ id: '123Foo' });
+ useFetchSloMock.mockReturnValue({ isLoading: false, isInitialLoading: false, slo });
jest.spyOn(Router, 'useParams').mockReturnValue({ sloId: '123' });
+ jest.spyOn(Router, 'useHistory').mockReturnValue(createBrowserHistory());
jest
.spyOn(Router, 'useLocation')
.mockReturnValue({ pathname: 'foo', search: '', state: '', hash: '' });
- useFetchSloMock.mockReturnValue({ isLoading: false, isInitialLoading: false, slo });
+ const { queryByTestId } = render();
- useFetchIndicesMock.mockReturnValue({
- isLoading: false,
- data: ['some-index'],
- });
-
- useCreateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- useUpdateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- render();
-
- expect(screen.queryByTestId('slosEditPage')).toBeTruthy();
- expect(screen.queryByTestId('sloForm')).toBeTruthy();
+ expect(queryByTestId('slosEditPage')).toBeTruthy();
+ expect(queryByTestId('sloForm')).toBeTruthy();
// all sections are visible
- expect(screen.queryByTestId('sloEditFormIndicatorSection')).toBeTruthy();
- expect(screen.queryByTestId('sloEditFormObjectiveSection')).toBeTruthy();
- expect(screen.queryByTestId('sloEditFormDescriptionSection')).toBeTruthy();
+ expect(queryByTestId('sloEditFormIndicatorSection')).toBeTruthy();
+ expect(queryByTestId('sloEditFormObjectiveSection')).toBeTruthy();
+ expect(queryByTestId('sloEditFormDescriptionSection')).toBeTruthy();
- expect(screen.queryByTestId('indexSelectionSelectedValue')).toHaveTextContent(
- slo.indicator.params.index!
- );
- expect(screen.queryByTestId('customKqlIndicatorFormQueryFilterInput')).toHaveValue(
- slo.indicator.params.filter ?? ''
- );
- expect(screen.queryByTestId('customKqlIndicatorFormGoodQueryInput')).toHaveValue(
- slo.indicator.type === 'sli.kql.custom' ? slo.indicator.params.good : ''
- );
- expect(screen.queryByTestId('customKqlIndicatorFormTotalQueryInput')).toHaveValue(
- slo.indicator.type === 'sli.kql.custom' ? slo.indicator.params.total : ''
- );
-
- expect(screen.queryByTestId('sloFormBudgetingMethodSelect')).toHaveValue(
- slo.budgetingMethod
- );
- expect(screen.queryByTestId('sloFormTimeWindowDurationSelect')).toHaveValue(
+ expect(queryByTestId('sloFormBudgetingMethodSelect')).toHaveValue(slo.budgetingMethod);
+ expect(queryByTestId('sloFormTimeWindowDurationSelect')).toHaveValue(
slo.timeWindow.duration
);
- expect(screen.queryByTestId('sloFormObjectiveTargetInput')).toHaveValue(
+ expect(queryByTestId('sloFormObjectiveTargetInput')).toHaveValue(
slo.objective.target * 100
);
- expect(screen.queryByTestId('sloFormNameInput')).toHaveValue(slo.name);
- expect(screen.queryByTestId('sloFormDescriptionTextArea')).toHaveValue(slo.description);
+ expect(queryByTestId('sloFormNameInput')).toHaveValue(slo.name);
+ expect(queryByTestId('sloFormDescriptionTextArea')).toHaveValue(slo.description);
});
it('calls the updateSlo hook if all required values are filled in', async () => {
const slo = buildSlo({ id: '123' });
-
jest.spyOn(Router, 'useParams').mockReturnValue({ sloId: '123' });
-
- useFetchIndicesMock.mockReturnValue({
- isLoading: false,
- data: ['some-index'],
- });
-
useFetchSloMock.mockReturnValue({ isLoading: false, slo });
- const mockCreate = jest.fn();
- const mockUpdate = jest.fn();
-
- useCreateSloMock.mockReturnValue({
- mutateAsync: mockCreate,
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- useUpdateSloMock.mockReturnValue({
- mutateAsync: mockUpdate,
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
+ const { queryByTestId } = render();
- render();
-
- expect(screen.queryByTestId('sloFormSubmitButton')).toBeEnabled();
- fireEvent.click(screen.queryByTestId('sloFormSubmitButton')!);
+ expect(queryByTestId('sloFormSubmitButton')).toBeEnabled();
+ fireEvent.click(queryByTestId('sloFormSubmitButton')!);
expect(mockUpdate).toMatchInlineSnapshot(`[MockFunction]`);
});
- it('prefills the form with the SLO values merged with the URL state', () => {
+ it('prefills the form with the provided URL values and the default values', () => {
const slo = buildSlo({ id: '123' });
-
jest.spyOn(Router, 'useParams').mockReturnValue({ sloId: '123' });
const history = createBrowserHistory();
history.push(
- '/slos/create?_a=(name:%updated-name%27,indicator:(params:(environment:prod,service:cartService),type:sli.apm.transactionDuration))'
+ '/slos/123/edit?_a=(name:%27updated-name%27,indicator:(params:(environment:prod,service:cartService),type:sli.apm.transactionDuration),objective:(target:0.92))'
);
jest.spyOn(Router, 'useHistory').mockReturnValue(history);
jest
@@ -544,57 +350,24 @@ describe('SLO Edit Page', () => {
isLoading: false,
});
- useFetchIndicesMock.mockReturnValue({
- isLoading: false,
- data: ['some-index'],
- });
-
- useCreateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- useUpdateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- render();
+ const { queryByTestId } = render();
// all sections are visible
- expect(screen.queryByTestId('sloEditFormIndicatorSection')).toBeTruthy();
- expect(screen.queryByTestId('sloEditFormObjectiveSection')).toBeTruthy();
- expect(screen.queryByTestId('sloEditFormDescriptionSection')).toBeTruthy();
+ expect(queryByTestId('sloEditFormIndicatorSection')).toBeTruthy();
+ expect(queryByTestId('sloEditFormObjectiveSection')).toBeTruthy();
+ expect(queryByTestId('sloEditFormDescriptionSection')).toBeTruthy();
- expect(screen.queryByTestId('indexSelectionSelectedValue')).toHaveTextContent(
- slo.indicator.params.index!
- );
- expect(screen.queryByTestId('customKqlIndicatorFormQueryFilterInput')).toHaveValue(
- slo.indicator.type === 'sli.kql.custom' ? slo.indicator.params.filter : ''
- );
- expect(screen.queryByTestId('customKqlIndicatorFormGoodQueryInput')).toHaveValue(
- slo.indicator.type === 'sli.kql.custom' ? slo.indicator.params.good : ''
+ expect(queryByTestId('indexSelectionSelectedValue')).toBeNull();
+ expect(queryByTestId('sloFormBudgetingMethodSelect')).toHaveValue(
+ SLO_EDIT_FORM_DEFAULT_VALUES.budgetingMethod
);
- expect(screen.queryByTestId('customKqlIndicatorFormTotalQueryInput')).toHaveValue(
- slo.indicator.type === 'sli.kql.custom' ? slo.indicator.params.total : ''
+ expect(queryByTestId('sloFormTimeWindowDurationSelect')).toHaveValue(
+ SLO_EDIT_FORM_DEFAULT_VALUES.timeWindow.duration
);
+ expect(queryByTestId('sloFormObjectiveTargetInput')).toHaveValue(92);
- expect(screen.queryByTestId('sloFormBudgetingMethodSelect')).toHaveValue(
- slo.budgetingMethod
- );
- expect(screen.queryByTestId('sloFormTimeWindowDurationSelect')).toHaveValue(
- slo.timeWindow.duration
- );
- expect(screen.queryByTestId('sloFormObjectiveTargetInput')).toHaveValue(
- slo.objective.target * 100
- );
-
- expect(screen.queryByTestId('sloFormNameInput')).toHaveValue(slo.name);
- expect(screen.queryByTestId('sloFormDescriptionTextArea')).toHaveValue(slo.description);
+ expect(queryByTestId('sloFormNameInput')).toHaveValue('updated-name');
+ expect(queryByTestId('sloFormDescriptionTextArea')).toHaveValue('');
});
});
@@ -609,31 +382,12 @@ describe('SLO Edit Page', () => {
useFetchSloMock.mockReturnValue({ isLoading: false, slo });
- useFetchIndicesMock.mockReturnValue({
- isLoading: false,
- data: ['some-index'],
- });
+ const { getByTestId } = render();
- useCreateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- useUpdateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- render();
-
- expect(screen.queryByTestId('sloFormSubmitButton')).toBeEnabled();
+ expect(getByTestId('sloFormSubmitButton')).toBeEnabled();
await waitFor(() => {
- fireEvent.click(screen.getByTestId('sloFormSubmitButton'));
+ fireEvent.click(getByTestId('sloFormSubmitButton'));
});
await waitFor(() => {
expect(mockNavigate).toBeCalledWith(mockBasePathPrepend(paths.observability.slos));
@@ -650,32 +404,13 @@ describe('SLO Edit Page', () => {
useFetchSloMock.mockReturnValue({ isLoading: false, slo });
- useFetchIndicesMock.mockReturnValue({
- isLoading: false,
- data: ['some-index'],
- });
-
- useCreateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- useUpdateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- render();
+ const { getByTestId } = render();
- expect(screen.queryByTestId('sloFormSubmitButton')).toBeEnabled();
+ expect(getByTestId('sloFormSubmitButton')).toBeEnabled();
await waitFor(() => {
- fireEvent.click(screen.getByTestId('createNewRuleCheckbox'));
- fireEvent.click(screen.getByTestId('sloFormSubmitButton'));
+ fireEvent.click(getByTestId('createNewRuleCheckbox'));
+ fireEvent.click(getByTestId('sloFormSubmitButton'));
});
await waitFor(() => {
@@ -695,29 +430,10 @@ describe('SLO Edit Page', () => {
useFetchSloMock.mockReturnValue({ isLoading: false, slo });
- useFetchIndicesMock.mockReturnValue({
- isLoading: false,
- data: ['some-index'],
- });
-
- useCreateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- useUpdateSloMock.mockReturnValue({
- mutateAsync: jest.fn(),
- isLoading: false,
- isSuccess: false,
- isError: false,
- });
-
- render();
+ const { getByTestId } = render();
await waitFor(() => {
- expect(screen.getByTestId('add-rule-flyout')).toBeTruthy();
+ expect(getByTestId('add-rule-flyout')).toBeTruthy();
});
});
});