DashboardScenePage: Reset state manager to default when unmounting. (#106017)
* DashboardScenePage: Reset state manager to default when unmounting. * Update test
This commit is contained in:
@@ -21,7 +21,11 @@ import { dashboardSceneGraph } from '../utils/dashboardSceneGraph';
|
||||
import { setupLoadDashboardMockReject, setupLoadDashboardRuntimeErrorMock } from '../utils/test-utils';
|
||||
|
||||
import { DashboardScenePage, Props } from './DashboardScenePage';
|
||||
import { getDashboardScenePageStateManager } from './DashboardScenePageStateManager';
|
||||
import {
|
||||
DashboardScenePageStateManager,
|
||||
DashboardScenePageStateManagerV2,
|
||||
getDashboardScenePageStateManager,
|
||||
} from './DashboardScenePageStateManager';
|
||||
|
||||
jest.mock('@grafana/runtime', () => ({
|
||||
...jest.requireActual('@grafana/runtime'),
|
||||
@@ -80,7 +84,7 @@ function setup({ routeProps }: { routeProps?: Partial<GrafanaRouteComponentProps
|
||||
);
|
||||
};
|
||||
|
||||
return { rerender, context, props };
|
||||
return { rerender, context, props, unmount: renderResult.unmount };
|
||||
}
|
||||
|
||||
const simpleDashboard: Dashboard = {
|
||||
@@ -391,6 +395,18 @@ describe('DashboardScenePage', () => {
|
||||
expect(await screen.findByTestId('dashboard-page-error')).toHaveTextContent('Runtime error');
|
||||
});
|
||||
});
|
||||
|
||||
describe('UnifiedDashboardScenePageStateManager', () => {
|
||||
it('should reset active manager when unmounting', async () => {
|
||||
const manager = getDashboardScenePageStateManager();
|
||||
manager.setActiveManager('v2');
|
||||
const { unmount } = setup();
|
||||
|
||||
expect(manager['activeManager']).toBeInstanceOf(DashboardScenePageStateManagerV2);
|
||||
unmount();
|
||||
expect(manager['activeManager']).toBeInstanceOf(DashboardScenePageStateManager);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
interface VizOptions {
|
||||
|
||||
@@ -50,6 +50,7 @@ export function DashboardScenePage({ route, queryParams, location }: Props) {
|
||||
return () => {
|
||||
preserveDashboardSceneStateInLocalStorage(locationService.getSearch(), uid);
|
||||
stateManager.clearState();
|
||||
stateManager.resetActiveManager();
|
||||
};
|
||||
|
||||
// removing slug and path (which has slug in it) from dependencies to prevent unmount when data links reference
|
||||
|
||||
@@ -878,6 +878,9 @@ export class UnifiedDashboardScenePageStateManager extends DashboardScenePageSta
|
||||
this.activeManager = this.v2Manager;
|
||||
}
|
||||
}
|
||||
public resetActiveManager() {
|
||||
this.setActiveManager('v1');
|
||||
}
|
||||
}
|
||||
|
||||
const managers: {
|
||||
|
||||
Reference in New Issue
Block a user