Navigation: share logic between buildBreadcrumbs and usePageTitle (#58819)

* simplify usePageTitle logic a bit

* use buildBreadcrumbs logic in usePageTitle

* always add home item to navTree, fix some tests

* fix remaining unit tests
This commit is contained in:
Ashley Harrison
2022-11-22 16:48:07 +00:00
committed by GitHub
parent 26a7423151
commit 824a562b03
30 changed files with 216 additions and 83 deletions
@@ -1,10 +1,12 @@
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import React from 'react';
import { Provider } from 'react-redux';
import config from 'app/core/config';
import { backendSrv } from '../../core/services/backend_srv';
import { configureStore } from '../../store/configureStore';
import { Props, ChangePasswordPage } from './ChangePasswordPage';
import { initialUserState } from './state/reducers';
@@ -26,6 +28,7 @@ const defaultProps: Props = {
};
async function getTestContext(overrides: Partial<Props> = {}) {
const store = configureStore();
jest.clearAllMocks();
jest.spyOn(backendSrv, 'get').mockResolvedValue({
id: 1,
@@ -38,7 +41,11 @@ async function getTestContext(overrides: Partial<Props> = {}) {
});
const props = { ...defaultProps, ...overrides };
const { rerender } = render(<ChangePasswordPage {...props} />);
const { rerender } = render(
<Provider store={store}>
<ChangePasswordPage {...props} />
</Provider>
);
await waitFor(() => expect(props.loadUser).toHaveBeenCalledTimes(1));
@@ -2,12 +2,14 @@ import { within } from '@testing-library/dom';
import { render, screen, waitFor } from '@testing-library/react';
import userEvent, { PointerEventsCheckLevel } from '@testing-library/user-event';
import React from 'react';
import { Provider } from 'react-redux';
import { OrgRole } from '@grafana/data';
import { selectors } from '@grafana/e2e-selectors';
import TestProvider from '../../../test/helpers/TestProvider';
import { backendSrv } from '../../core/services/backend_srv';
import { configureStore } from '../../store/configureStore';
import { TeamPermissionLevel } from '../../types';
import { Props, UserProfileEditPage } from './UserProfileEditPage';
@@ -96,6 +98,7 @@ function getSelectors() {
}
async function getTestContext(overrides: Partial<Props> = {}) {
const store = configureStore();
jest.clearAllMocks();
const putSpy = jest.spyOn(backendSrv, 'put');
const getSpy = jest
@@ -105,9 +108,11 @@ async function getTestContext(overrides: Partial<Props> = {}) {
const props = { ...defaultProps, ...overrides };
const { rerender } = render(
<TestProvider>
<UserProfileEditPage {...props} />
</TestProvider>
<Provider store={store}>
<TestProvider>
<UserProfileEditPage {...props} />
</TestProvider>
</Provider>
);
await waitFor(() => expect(props.initUserProfilePage).toHaveBeenCalledTimes(1));