From 81f2bd1fc2322807fc084103b6ff6a92bd28b6de Mon Sep 17 00:00:00 2001 From: Dalton <daltojohnso@users.noreply.github.com> Date: Mon, 31 Jan 2022 11:44:51 -0700 Subject: [PATCH] Hide explore results button for no-data users (#20065) --- .../components/view/ViewHeader.jsx | 6 ++++- .../components/view/ViewHeader.unit.spec.js | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/frontend/src/metabase/query_builder/components/view/ViewHeader.jsx b/frontend/src/metabase/query_builder/components/view/ViewHeader.jsx index 34cfed53521..8e95b605ea1 100644 --- a/frontend/src/metabase/query_builder/components/view/ViewHeader.jsx +++ b/frontend/src/metabase/query_builder/components/view/ViewHeader.jsx @@ -398,8 +398,12 @@ function ViewTitleHeaderRightSide(props) { onCollapseFilters, } = props; const isShowingNotebook = queryBuilderMode === "notebook"; + const canRunAdhocQueries = !question.query().readOnly(); const hasExploreResultsLink = - isNative && isSaved && MetabaseSettings.get("enable-nested-queries"); + isNative && + isSaved && + canRunAdhocQueries && + MetabaseSettings.get("enable-nested-queries"); return ( <div diff --git a/frontend/src/metabase/query_builder/components/view/ViewHeader.unit.spec.js b/frontend/src/metabase/query_builder/components/view/ViewHeader.unit.spec.js index 484c7d85255..5dc6b109c7a 100644 --- a/frontend/src/metabase/query_builder/components/view/ViewHeader.unit.spec.js +++ b/frontend/src/metabase/query_builder/components/view/ViewHeader.unit.spec.js @@ -455,6 +455,29 @@ describe("View Header | Saved GUI question", () => { }); }); +describe("View Header | native question without write permissions on database (eg user without self serve data permissions)", () => { + let originalNativePermissions; + beforeEach(() => { + setupNative(); + originalNativePermissions = SAMPLE_DATABASE.native_permissions; + SAMPLE_DATABASE.native_permissions = "none"; + }); + + afterEach(() => { + SAMPLE_DATABASE.native_permissions = originalNativePermissions; + }); + + it("does not display question database", () => { + const { question } = setupNative(); + const databaseName = question.database().displayName(); + expect(screen.queryByText(databaseName)).not.toBeInTheDocument(); + }); + + it("does not offer to explore query results", () => { + expect(screen.queryByText("Explore results")).not.toBeInTheDocument(); + }); +}); + describe("View Header | Not saved native question", () => { it("does not display question database", () => { const { question } = setupNative(); -- GitLab