packages: rtl 13 fixes for tests

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2023-10-13 13:29:26 +02:00
parent 80a79cc1e7
commit fb7a94f4aa
10 changed files with 65 additions and 39 deletions
@@ -118,6 +118,10 @@ describe('ApiProvider', () => {
}).toThrow(/^API context is not available/);
}).error,
).toEqual([
expect.objectContaining({
detail: new Error('API context is not available'),
type: 'unhandled exception',
}),
expect.objectContaining({
detail: new Error('API context is not available'),
type: 'unhandled exception',
@@ -134,6 +138,10 @@ describe('ApiProvider', () => {
}).toThrow(/^API context is not available/);
}).error,
).toEqual([
expect.objectContaining({
detail: new Error('API context is not available'),
type: 'unhandled exception',
}),
expect.objectContaining({
detail: new Error('API context is not available'),
type: 'unhandled exception',
@@ -156,6 +164,10 @@ describe('ApiProvider', () => {
}).toThrow('No implementation available for apiRef{x}');
}).error,
).toEqual([
expect.objectContaining({
detail: new Error('No implementation available for apiRef{x}'),
type: 'unhandled exception',
}),
expect.objectContaining({
detail: new Error('No implementation available for apiRef{x}'),
type: 'unhandled exception',
@@ -176,6 +188,10 @@ describe('ApiProvider', () => {
}).toThrow('No implementation available for apiRef{x}');
}).error,
).toEqual([
expect.objectContaining({
detail: new Error('No implementation available for apiRef{x}'),
type: 'unhandled exception',
}),
expect.objectContaining({
detail: new Error('No implementation available for apiRef{x}'),
type: 'unhandled exception',
@@ -639,26 +639,24 @@ describe('Integration Test', () => {
const Provider = app.getProvider();
const Router = app.getRouter();
const { error: errorLogs } = withLogCollector(() => {
expect(() =>
render(
<Provider>
<Router>
<Routes>
<Route path="/test/:thing" element={<ExposedComponent />}>
<Route path="/some/:thing" element={<HiddenComponent />} />
</Route>
</Routes>
</Router>
</Provider>,
),
).toThrow(
'Parameter :thing is duplicated in path test/:thing/some/:thing',
render(
<Provider>
<Router>
<Routes>
<Route path="/test/:thing" element={<ExposedComponent />}>
<Route path="/some/:thing" element={<HiddenComponent />} />
</Route>
</Routes>
</Router>
</Provider>,
);
});
expect(errorLogs).toEqual([
expect.stringContaining(
'The above error occurred in the <Provider> component',
),
expect.objectContaining({
message: expect.stringContaining(
'Parameter :thing is duplicated in path test/:thing/some/:thing',
),
}),
]);
});
@@ -676,24 +674,22 @@ describe('Integration Test', () => {
const Provider = app.getProvider();
const Router = app.getRouter();
const { error: errorLogs } = withLogCollector(() => {
expect(() =>
render(
<Provider>
<Router>
<Routes>
<Route path="/test/:thing" element={<ExposedComponent />} />
</Routes>
</Router>
</Provider>,
),
).toThrow(
/^External route 'extRouteRef1' of the 'blob' plugin must be bound to a target route/,
render(
<Provider>
<Router>
<Routes>
<Route path="/test/:thing" element={<ExposedComponent />} />
</Routes>
</Router>
</Provider>,
);
});
expect(errorLogs).toEqual([
expect.stringContaining(
'The above error occurred in the <Provider> component',
),
expect.objectContaining({
message: expect.stringMatching(
/^External route 'extRouteRef1' of the 'blob' plugin must be bound to a target route/,
),
}),
]);
});
@@ -56,7 +56,7 @@ function makeRouteRenderer(node: ReactNode) {
);
if (rendered) {
rendered.unmount();
rendered.rerender(content);
rendered = render(content);
} else {
rendered = render(content);
}
@@ -83,7 +83,7 @@ describe.each(['beta', 'stable'])('FlatRoutes %s', rrVersion => {
);
if (rendered) {
rendered.unmount();
rendered.rerender(content);
rendered = render(content);
} else {
rendered = render(content);
}
@@ -56,7 +56,7 @@ function makeRouteRenderer(node: ReactNode) {
);
if (rendered) {
rendered.unmount();
rendered.rerender(content);
rendered = render(content);
} else {
rendered = render(content);
}
@@ -48,6 +48,11 @@ describe('TabbedLayout', () => {
});
expect(error).toEqual([
expect.objectContaining({
detail: new Error(
'Child of TabbedLayout must be an TabbedLayout.Route',
),
}),
expect.objectContaining({
detail: new Error(
'Child of TabbedLayout must be an TabbedLayout.Route',
@@ -67,6 +67,9 @@ describe('<ErrorBoundary/>', () => {
});
expect(error).toEqual([
expect.objectContaining({
detail: new Error('Bomb'),
}),
expect.objectContaining({
detail: new Error('Bomb'),
}),
@@ -75,6 +78,6 @@ describe('<ErrorBoundary/>', () => {
),
expect.stringMatching(/^ErrorBoundary/),
]);
expect(error.length).toEqual(3);
expect(error.length).toEqual(4);
});
});
@@ -19,6 +19,8 @@ import Badge from '@material-ui/core/Badge';
import { makeStyles } from '@material-ui/core/styles';
import React from 'react';
import { HeaderTabs } from './HeaderTabs';
import { act } from 'react-dom/test-utils';
import userEvent from '@testing-library/user-event';
const mockTabs = [
{ id: 'overview', label: 'Overview' },
@@ -41,7 +43,7 @@ describe('<HeaderTabs />', () => {
'false',
);
rendered.getByText('Docs').click();
await act(() => userEvent.click(rendered.getByText('Docs')));
expect(rendered.getByText('Docs').parentElement).toHaveAttribute(
'aria-selected',
@@ -26,9 +26,8 @@ import { BackstagePlugin } from '@backstage/core-plugin-api';
import { RouteResolver } from './RouteResolver';
import { MATCH_ALL_ROUTE } from './extractRouteInfoFromInstanceTree';
const element = () => null;
const rest = {
element,
element: null,
caseSensitive: false,
children: [MATCH_ALL_ROUTE],
plugins: new Set<BackstagePlugin>(),
@@ -92,6 +92,11 @@ describe('wrapInTestApp', () => {
});
expect(error).toEqual([
expect.objectContaining({
detail: new Error(
'MockErrorApi received unexpected error, Error: NOPE',
),
}),
expect.objectContaining({
detail: new Error(
'MockErrorApi received unexpected error, Error: NOPE',