diff --git a/frontend/src/metabase/query_builder/containers/QueryBuilder.unit.spec.tsx b/frontend/src/metabase/query_builder/containers/QueryBuilder.unit.spec.tsx index d8c898562b89805c58e649dabcd6f458a29c9ef7..b2f638ab79eb73922b199d8b3e3bc4579f096c55 100644 --- a/frontend/src/metabase/query_builder/containers/QueryBuilder.unit.spec.tsx +++ b/frontend/src/metabase/query_builder/containers/QueryBuilder.unit.spec.tsx @@ -212,6 +212,8 @@ const TestQueryBuilder = ( const TestHome = () => <NewItemMenu trigger={<button>New</button>} />; +const TestRedirect = () => <div />; + function isSavedCard(card: Card | UnsavedCard | null): card is Card { return card !== null && "id" in card; } @@ -270,6 +272,7 @@ const setup = async ({ <Route path=":slug" component={TestQueryBuilder} /> <Route path=":slug/notebook" component={TestQueryBuilder} /> </Route> + <Route path="/redirect" component={TestRedirect} /> </Route>, { withRouter: true, @@ -570,15 +573,12 @@ describe("QueryBuilder", () => { it("shows custom warning modal when leaving via SPA navigation", async () => { const { history } = await setup({ card: null, - initialRoute: "/", + initialRoute: "/model/new", }); - history.push("/model/new"); - await waitForLoaderToBeRemoved(); - await startNewNotebookModel(); - history.goBack(); + history.push("/redirect"); expect(screen.getByTestId("leave-confirmation")).toBeInTheDocument(); }); @@ -629,17 +629,14 @@ describe("QueryBuilder", () => { it("shows custom warning modal when user tries to leave an ad-hoc native query", async () => { const { history } = await setup({ card: TEST_UNSAVED_NATIVE_CARD, - initialRoute: "/", + initialRoute: `/question#${serializeCardForUrl( + TEST_UNSAVED_NATIVE_CARD, + )}`, }); - history.push( - `/question#${serializeCardForUrl(TEST_UNSAVED_NATIVE_CARD)}`, - ); - await waitForLoaderToBeRemoved(); - await triggerNativeQueryChange(); - history.goBack(); + history.push("/redirect"); expect(screen.getByTestId("leave-confirmation")).toBeInTheDocument(); }); @@ -674,7 +671,7 @@ describe("QueryBuilder", () => { screen.queryByTestId("leave-confirmation"), ).not.toBeInTheDocument(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -686,16 +683,13 @@ describe("QueryBuilder", () => { it("shows custom warning modal when leaving edited query via SPA navigation", async () => { const { history } = await setup({ card: TEST_MODEL_CARD, - initialRoute: "/", + initialRoute: `/model/${TEST_MODEL_CARD.id}/query`, }); - history.push(`/model/${TEST_MODEL_CARD.id}/query`); - await waitForLoaderToBeRemoved(); - await triggerNotebookQueryChange(); await waitForSaveModelToBeEnabled(); - history.goBack(); + history.push("/redirect"); expect(screen.getByTestId("leave-confirmation")).toBeInTheDocument(); }); @@ -703,19 +697,16 @@ describe("QueryBuilder", () => { it("does not show custom warning modal when leaving unedited query via SPA navigation", async () => { const { history } = await setup({ card: TEST_MODEL_CARD, - initialRoute: "/", + initialRoute: `/model/${TEST_MODEL_CARD.id}/query`, }); - history.push(`/model/${TEST_MODEL_CARD.id}/query`); - await waitForLoaderToBeRemoved(); - await triggerNotebookQueryChange(); await waitForSaveModelToBeEnabled(); await revertNotebookQueryChange(); await waitForSaveModelToBeDisabled(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -776,7 +767,7 @@ describe("QueryBuilder", () => { screen.queryByTestId("leave-confirmation"), ).not.toBeInTheDocument(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -789,16 +780,13 @@ describe("QueryBuilder", () => { const { history } = await setup({ card: TEST_MODEL_CARD, dataset: TEST_MODEL_DATASET, - initialRoute: "/", + initialRoute: `/model/${TEST_MODEL_CARD.id}/metadata`, }); - history.push(`/model/${TEST_MODEL_CARD.id}/metadata`); - await waitForLoaderToBeRemoved(); - await triggerMetadataChange(); await waitForSaveModelToBeEnabled(); - history.goBack(); + history.push("/redirect"); expect(screen.getByTestId("leave-confirmation")).toBeInTheDocument(); }); @@ -807,13 +795,10 @@ describe("QueryBuilder", () => { const { history } = await setup({ card: TEST_MODEL_CARD, dataset: TEST_MODEL_DATASET, - initialRoute: "/", + initialRoute: `/model/${TEST_MODEL_CARD.id}/metadata`, }); - history.push(`/model/${TEST_MODEL_CARD.id}/metadata`); - await waitForLoaderToBeRemoved(); - - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -880,7 +865,7 @@ describe("QueryBuilder", () => { screen.queryByTestId("leave-confirmation"), ).not.toBeInTheDocument(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -931,7 +916,7 @@ describe("QueryBuilder", () => { await triggerNativeQueryChange(); await waitForSaveNewQuestionToBeEnabled(); - history.goBack(); + history.push("/redirect"); expect(screen.getByTestId("leave-confirmation")).toBeInTheDocument(); }); @@ -948,7 +933,7 @@ describe("QueryBuilder", () => { ); await waitForLoaderToBeRemoved(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -1019,7 +1004,7 @@ describe("QueryBuilder", () => { screen.queryByTestId("leave-confirmation"), ).not.toBeInTheDocument(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -1031,14 +1016,13 @@ describe("QueryBuilder", () => { it("shows custom warning modal when leaving edited question via SPA navigation", async () => { const { history } = await setup({ card: TEST_NATIVE_CARD, - initialRoute: "/", + initialRoute: `/question/${TEST_NATIVE_CARD.id}`, }); - history.push(`/question/${TEST_NATIVE_CARD.id}`); await triggerNativeQueryChange(); await waitForSaveQuestionToBeEnabled(); - history.goBack(); + history.push("/redirect"); expect(screen.getByTestId("leave-confirmation")).toBeInTheDocument(); }); @@ -1046,14 +1030,12 @@ describe("QueryBuilder", () => { it("does not show custom warning modal leaving with no changes via SPA navigation", async () => { const { history } = await setup({ card: TEST_NATIVE_CARD, - initialRoute: "/", + initialRoute: `/question/${TEST_NATIVE_CARD.id}`, }); - history.push(`/question/${TEST_NATIVE_CARD.id}`); - await waitForLoaderToBeRemoved(); await waitForNativeQueryEditoReady(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -1108,7 +1090,7 @@ describe("QueryBuilder", () => { screen.queryByTestId("leave-confirmation"), ).not.toBeInTheDocument(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -1151,7 +1133,7 @@ describe("QueryBuilder", () => { screen.queryByTestId("leave-confirmation"), ).not.toBeInTheDocument(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -1163,16 +1145,13 @@ describe("QueryBuilder", () => { it("shows custom warning modal when leaving notebook-edited question via SPA navigation", async () => { const { history } = await setup({ card: TEST_STRUCTURED_CARD, - initialRoute: "/", + initialRoute: `/question/${TEST_STRUCTURED_CARD.id}/notebook`, }); - history.push(`/question/${TEST_STRUCTURED_CARD.id}/notebook`); - await waitForLoaderToBeRemoved(); - await triggerNotebookQueryChange(); await waitForSaveQuestionToBeEnabled(); - history.goBack(); + history.push("/redirect"); expect(screen.getByTestId("leave-confirmation")).toBeInTheDocument(); }); @@ -1180,16 +1159,13 @@ describe("QueryBuilder", () => { it("does not show custom warning modal when leaving visualization-edited question via SPA navigation", async () => { const { history } = await setup({ card: TEST_STRUCTURED_CARD, - initialRoute: "/", + initialRoute: `/question/${TEST_STRUCTURED_CARD.id}`, }); - history.push(`/question/${TEST_STRUCTURED_CARD.id}`); - await waitForLoaderToBeRemoved(); - await triggerVisualizationQueryChange(); await waitForSaveQuestionToBeEnabled(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -1199,13 +1175,10 @@ describe("QueryBuilder", () => { it("does not show custom warning modal leaving with no changes via SPA navigation", async () => { const { history } = await setup({ card: TEST_STRUCTURED_CARD, - initialRoute: "/", + initialRoute: `/question/${TEST_STRUCTURED_CARD.id}/notebook`, }); - history.push(`/question/${TEST_STRUCTURED_CARD.id}/notebook`); - await waitForLoaderToBeRemoved(); - - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -1240,7 +1213,7 @@ describe("QueryBuilder", () => { screen.queryByTestId("leave-confirmation"), ).not.toBeInTheDocument(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"), @@ -1283,7 +1256,7 @@ describe("QueryBuilder", () => { screen.queryByTestId("leave-confirmation"), ).not.toBeInTheDocument(); - history.goBack(); + history.push("/redirect"); expect( screen.queryByTestId("leave-confirmation"),