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,5 +1,8 @@
import { screen, render } from '@testing-library/react';
import React from 'react';
import { Provider } from 'react-redux';
import { configureStore } from '../../../store/configureStore';
import { NestedScene } from './NestedScene';
import { Scene } from './Scene';
@@ -7,6 +10,7 @@ import { SceneCanvasText } from './SceneCanvasText';
import { SceneFlexLayout } from './layout/SceneFlexLayout';
function setup() {
const store = configureStore();
const scene = new Scene({
title: 'Hello',
layout: new SceneFlexLayout({
@@ -23,7 +27,11 @@ function setup() {
}),
});
render(<scene.Component model={scene} />);
render(
<Provider store={store}>
<scene.Component model={scene} />
</Provider>
);
}
describe('NestedScene', () => {
@@ -1,6 +1,8 @@
import { render, screen } from '@testing-library/react';
import React from 'react';
import { Provider } from 'react-redux';
import { configureStore } from '../../../../store/configureStore';
import { SceneObjectBase } from '../../core/SceneObjectBase';
import { SceneComponentProps, SceneLayoutChildState } from '../../core/types';
import { Scene } from '../Scene';
@@ -21,6 +23,11 @@ class TestObject extends SceneObjectBase<SceneLayoutChildState> {
};
}
function renderWithProvider(element: JSX.Element) {
const store = configureStore();
return render(<Provider store={store}>{element}</Provider>);
}
describe('SceneGridLayout', () => {
describe('rendering', () => {
it('should render all grid children', async () => {
@@ -34,7 +41,7 @@ describe('SceneGridLayout', () => {
}),
});
render(<scene.Component model={scene} />);
renderWithProvider(<scene.Component model={scene} />);
expect(screen.queryAllByTestId('test-object')).toHaveLength(2);
});
@@ -57,7 +64,7 @@ describe('SceneGridLayout', () => {
}),
});
render(<scene.Component model={scene} />);
renderWithProvider(<scene.Component model={scene} />);
expect(screen.queryAllByTestId('test-object')).toHaveLength(2);
});
@@ -80,7 +87,7 @@ describe('SceneGridLayout', () => {
}),
});
render(<scene.Component model={scene} />);
renderWithProvider(<scene.Component model={scene} />);
expect(screen.queryAllByTestId('test-object')).toHaveLength(3);
});