diff --git a/frontend/src/metabase/query_builder/components/view/QuestionRowCount/QuestionRowCount.tsx b/frontend/src/metabase/query_builder/components/view/QuestionRowCount/QuestionRowCount.tsx index 1557d86f183a422b0621d9fa80e06a1c4035e95f..07dc6681df47464b14eeb3e4a83447d48be4155c 100644 --- a/frontend/src/metabase/query_builder/components/view/QuestionRowCount/QuestionRowCount.tsx +++ b/frontend/src/metabase/query_builder/components/view/QuestionRowCount/QuestionRowCount.tsx @@ -103,6 +103,7 @@ function QuestionRowCount({ triggerElement={ <RowCountLabel className={className} + data-testid="question-row-count" highlighted={limit != null} disabled={!canChangeLimit} > @@ -196,15 +197,13 @@ const ConnectedQuestionRowCount = _.compose( )(QuestionRowCount); function shouldRender({ - question, result, isObjectDetail, }: { - question: Question; result?: Dataset; isObjectDetail: boolean; }) { - return result?.data && !isObjectDetail && question.display() === "table"; + return result?.data && !isObjectDetail; } // eslint-disable-next-line import/no-default-export -- deprecated usage diff --git a/frontend/src/metabase/query_builder/components/view/ViewFooter.jsx b/frontend/src/metabase/query_builder/components/view/ViewFooter.jsx index b9e0f91da40b8efc82bc60cc8f20b2b9ca15b518..84f9e998d050dceb5789b5565b0f4deae314011a 100644 --- a/frontend/src/metabase/query_builder/components/view/ViewFooter.jsx +++ b/frontend/src/metabase/query_builder/components/view/ViewFooter.jsx @@ -107,7 +107,6 @@ const ViewFooter = ({ } right={[ QuestionRowCount.shouldRender({ - question, result, isObjectDetail, }) && <QuestionRowCount key="row_count" className="mx1" />, 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 4767c808074dd81bd43b1da9fb361e566fb2ad25..382e219601f81ed006f021b22dc28f4da51dccff 100644 --- a/frontend/src/metabase/query_builder/containers/QueryBuilder.unit.spec.tsx +++ b/frontend/src/metabase/query_builder/containers/QueryBuilder.unit.spec.tsx @@ -1,6 +1,6 @@ +import userEvent from "@testing-library/user-event"; import React, { ComponentPropsWithoutRef } from "react"; import { IndexRoute, Route } from "react-router"; -import userEvent from "@testing-library/user-event"; import { Card, Dataset } from "metabase-types/api"; import { createMockCard, @@ -18,6 +18,7 @@ import { import { setupAlertsEndpoints, setupBookmarksEndpoints, + setupCardDataset, setupCardEndpoints, setupCardQueryEndpoints, setupDatabasesEndpoints, @@ -38,6 +39,13 @@ import QueryBuilder from "./QueryBuilder"; const TEST_DB = createSampleDatabase(); const TEST_CARD = createMockCard({ + id: 1, + name: "Test card", + dataset: true, +}); + +const TEST_CARD_VISUALIZATION = createMockCard({ + ...TEST_CARD, dataset_query: { database: SAMPLE_DB_ID, type: "query", @@ -74,13 +82,13 @@ const TEST_MODEL_DATASET_COLUMN = createMockColumn({ description: "test", field_ref: ["field", ORDERS.ID, null], }); + const TEST_MODEL_DATASET = createMockDataset({ data: { rows: [["1"]], cols: [TEST_MODEL_DATASET_COLUMN], }, database_id: SAMPLE_DB_ID, - status: "completed", context: "question", row_count: 1, @@ -110,6 +118,7 @@ const setup = async ({ initialRoute = `/question/${card.id}`, }: SetupOpts = {}) => { setupDatabasesEndpoints([TEST_DB]); + setupCardDataset(dataset); setupCardEndpoints(card); setupCardQueryEndpoints(card, dataset); setupSearchEndpoints([]); @@ -283,4 +292,31 @@ describe("QueryBuilder", () => { expect(mockEvent.returnValue).not.toEqual(BEFORE_UNLOAD_UNSAVED_MESSAGE); }); }); + + describe("renders the row count regardless of visualization type", () => { + const dataset = TEST_MODEL_DATASET; + const cards = [ + createMockCard({ ...TEST_CARD_VISUALIZATION, display: "table" }), + createMockCard({ ...TEST_CARD_VISUALIZATION, display: "line" }), + ]; + + it.each(cards)( + `renders the row count in "$display" visualization`, + async card => { + await setup({ + card, + dataset, + initialRoute: `/question/${card.id}`, + }); + + await waitFor(() => { + const element = screen.getByTestId("question-row-count"); + expect(element).toBeInTheDocument(); + }); + + const element = screen.getByTestId("question-row-count"); + expect(element).toBeVisible(); + }, + ); + }); });