diff --git a/frontend/src/metabase/query_builder/containers/test-utils.tsx b/frontend/src/metabase/query_builder/containers/test-utils.tsx index d620e34219444d1b7bc4647775a9bc15a597a914..04e45e34c5f4f6d539bb848907f5b96030980488 100644 --- a/frontend/src/metabase/query_builder/containers/test-utils.tsx +++ b/frontend/src/metabase/query_builder/containers/test-utils.tsx @@ -285,6 +285,8 @@ export const setup = async ({ }, ); + await waitForLoadingRequests(getState); + await waitForLoaderToBeRemoved(); await waitForLoadingRequests(getState); return { diff --git a/frontend/src/metabase/questions/actions.ts b/frontend/src/metabase/questions/actions.ts index 359bc84d2d09f0fecc388ab5465c28cd484c83f3..4931a356a405afecbc02bd2a9d57ae91675bb67d 100644 --- a/frontend/src/metabase/questions/actions.ts +++ b/frontend/src/metabase/questions/actions.ts @@ -2,6 +2,7 @@ import { loadMetadataForDependentItems } from "metabase/redux/metadata"; import { getMetadata } from "metabase/selectors/metadata"; import * as Lib from "metabase-lib"; import Question from "metabase-lib/v1/Question"; +import { getQuestionVirtualTableId } from "metabase-lib/v1/metadata/utils/saved-questions"; import type { Card } from "metabase-types/api"; import type { Dispatch, GetState } from "metabase-types/store"; @@ -13,11 +14,16 @@ export const loadMetadataForCard = (card: Card, options?: LoadMetadataOptions) => async (dispatch: Dispatch, getState: GetState) => { const question = new Question(card, getMetadata(getState())); - const dependencies = Lib.dependentMetadata(question.query()); + const loadAdhocMetadata = + question.isSaved() && question.type() !== "question"; + const dependencies = [...Lib.dependentMetadata(question.query())]; + if (loadAdhocMetadata) { + const tableId = getQuestionVirtualTableId(question.id()); + dependencies.push({ id: tableId, type: "table" }); + } await dispatch(loadMetadataForDependentItems(dependencies, options)); - // metadata for an ad-hoc question based on this question - if (question.isSaved() && question.type() !== "question") { + if (loadAdhocMetadata) { const questionWithMetadata = new Question(card, getMetadata(getState())); const adhocQuestion = questionWithMetadata.composeQuestionAdhoc(); const adhocDependencies = Lib.dependentMetadata(adhocQuestion.query());