diff --git a/public/app/features/plugins/admin/pages/PluginDetails.test.tsx b/public/app/features/plugins/admin/pages/PluginDetails.test.tsx
index 951aaa08a12..a283fc4d862 100644
--- a/public/app/features/plugins/admin/pages/PluginDetails.test.tsx
+++ b/public/app/features/plugins/admin/pages/PluginDetails.test.tsx
@@ -1,7 +1,6 @@
-import { getDefaultNormalizer, render, RenderResult, SelectorMatcherOptions, waitFor } from '@testing-library/react';
-import userEvent from '@testing-library/user-event';
-import { Route } from 'react-router-dom';
-import { TestProvider } from 'test/helpers/TestProvider';
+import { getDefaultNormalizer, RenderResult, SelectorMatcherOptions, waitFor } from '@testing-library/react';
+import { Routes, Route } from 'react-router-dom-v5-compat';
+import { render } from 'test/test-utils';
import {
PluginErrorCode,
@@ -11,7 +10,7 @@ import {
WithAccessControlMetadata,
} from '@grafana/data';
import { selectors } from '@grafana/e2e-selectors';
-import { config, locationService } from '@grafana/runtime';
+import { config } from '@grafana/runtime';
import { configureStore } from 'app/store/configureStore';
import { mockPluginApis, getCatalogPluginMock, getPluginsStateMock, mockUserPermissions } from '../__mocks__';
@@ -65,19 +64,19 @@ const renderPluginDetails = (
pageId?: PluginTabIds;
pluginsStateOverride?: ReducerState;
} = {}
-): RenderResult => {
+) => {
const plugin = getCatalogPluginMock(pluginOverride);
const { id } = plugin;
const store = configureStore({
plugins: pluginsStateOverride || getPluginsStateMock([plugin]),
});
- locationService.push({ pathname: `/plugins/${id}`, search: pageId ? `?page=${pageId}` : '' });
-
return render(
-
-
-
+
+ } />
+ ,
+
+ { store, historyOptions: { initialEntries: [`/plugins/${id}${pageId ? `?page=${pageId}` : ''}`] } }
);
};
@@ -445,7 +444,7 @@ describe('Plugin details page', () => {
// @ts-ignore
api.uninstallPlugin = jest.fn();
- const { queryByText, getByRole, findByRole } = renderPluginDetails({
+ const { queryByText, getByRole, findByRole, user } = renderPluginDetails({
id,
name: 'Akumuli',
isInstalled: true,
@@ -468,14 +467,14 @@ describe('Plugin details page', () => {
expect(await findByRole('tab', { name: PluginTabLabels.OVERVIEW })).toBeInTheDocument();
// Open the confirmation modal
- await userEvent.click(getByRole('button', { name: /uninstall/i }));
+ await user.click(getByRole('button', { name: /uninstall/i }));
expect(queryByText('Uninstall Akumuli')).toBeInTheDocument();
expect(queryByText('Are you sure you want to uninstall this plugin?')).toBeInTheDocument();
expect(api.uninstallPlugin).toHaveBeenCalledTimes(0);
// Confirm the uninstall
- await userEvent.click(getByRole('button', { name: /confirm/i }));
+ await user.click(getByRole('button', { name: /confirm/i }));
expect(api.uninstallPlugin).toHaveBeenCalledTimes(1);
expect(api.uninstallPlugin).toHaveBeenCalledWith(id);
@@ -647,7 +646,7 @@ describe('Plugin details page', () => {
},
});
- const { queryByText, getByRole } = renderPluginDetails({
+ const { queryByText, getByRole, user } = renderPluginDetails({
id,
name,
isInstalled: true,
@@ -658,7 +657,7 @@ describe('Plugin details page', () => {
await waitFor(() => queryByText('Uninstall'));
// Click on "Enable"
- await userEvent.click(getByRole('button', { name: /enable/i }));
+ await user.click(getByRole('button', { name: /enable/i }));
// Check if the API request was initiated
expect(api.updatePluginSettings).toHaveBeenCalledTimes(1);
@@ -687,7 +686,7 @@ describe('Plugin details page', () => {
},
});
- const { queryByText, getByRole } = renderPluginDetails({
+ const { queryByText, getByRole, user } = renderPluginDetails({
id,
name,
isInstalled: true,
@@ -698,7 +697,7 @@ describe('Plugin details page', () => {
await waitFor(() => queryByText('Uninstall'));
// Click on "Disable"
- await userEvent.click(getByRole('button', { name: /disable/i }));
+ await user.click(getByRole('button', { name: /disable/i }));
// Check if the API request was initiated
expect(api.updatePluginSettings).toHaveBeenCalledTimes(1);
diff --git a/public/app/features/plugins/admin/pages/PluginDetails.tsx b/public/app/features/plugins/admin/pages/PluginDetails.tsx
index 7040c1cad5b..004fc0a87be 100644
--- a/public/app/features/plugins/admin/pages/PluginDetails.tsx
+++ b/public/app/features/plugins/admin/pages/PluginDetails.tsx
@@ -1,9 +1,9 @@
-import { useParams } from 'react-router-dom';
+import { useParams } from 'react-router-dom-v5-compat';
import { PluginDetailsPage } from '../components/PluginDetailsPage';
export default function PluginDetails(): JSX.Element {
- const { pluginId } = useParams<{ pluginId: string }>();
+ const { pluginId = '' } = useParams<{ pluginId: string }>();
return ;
}