From 5bde4b88f6056c27d409e98169cc782ca33b87af Mon Sep 17 00:00:00 2001
From: Nick Fitzpatrick <nick@metabase.com>
Date: Tue, 14 Mar 2023 15:49:04 -0300
Subject: [PATCH] adding hasMultipleDimensions check to hasLegend clause
 (#29160)

* adding hasMultipleDimensions check to hasLegend clause

* Adding queryBuilderMain helper

* PR Feedback

* remove only
---
 e2e/support/helpers/e2e-ui-elements-helpers.js            | 4 ++++
 e2e/test/scenarios/visualizations/line_chart.cy.spec.js   | 8 +++++++-
 .../src/metabase/query_builder/components/view/View.jsx   | 5 ++++-
 .../visualizations/components/LineAreaBarChart.jsx        | 3 ++-
 4 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/e2e/support/helpers/e2e-ui-elements-helpers.js b/e2e/support/helpers/e2e-ui-elements-helpers.js
index 1da8687a900..a412bc5f44c 100644
--- a/e2e/support/helpers/e2e-ui-elements-helpers.js
+++ b/e2e/support/helpers/e2e-ui-elements-helpers.js
@@ -95,3 +95,7 @@ export const moveColumnDown = (column, distance) => {
     .trigger("mousemove", 0, distance * 50, { force: true })
     .trigger("mouseup", 0, distance * 50, { force: true });
 };
+
+export const queryBuilderMain = () => {
+  return cy.findByTestId("query-builder-main");
+};
diff --git a/e2e/test/scenarios/visualizations/line_chart.cy.spec.js b/e2e/test/scenarios/visualizations/line_chart.cy.spec.js
index 3aee81f0709..8d0eaf8868d 100644
--- a/e2e/test/scenarios/visualizations/line_chart.cy.spec.js
+++ b/e2e/test/scenarios/visualizations/line_chart.cy.spec.js
@@ -4,6 +4,7 @@ import {
   popover,
   visitDashboard,
   openSeriesSettings,
+  queryBuilderMain,
 } from "e2e/support/helpers";
 
 import { SAMPLE_DB_ID } from "e2e/support/cypress_data";
@@ -415,8 +416,13 @@ describe("scenarios > visualizations > line chart", () => {
       cy.findByText("Category is Doohickey");
     });
 
-    it.skip("should not drop the chart legend (metabase#4995)", () => {
+    it("should not drop the chart legend (metabase#4995)", () => {
       cy.findAllByTestId("legend-item").should("contain", "Doohickey");
+
+      cy.log("Ensure that legend is hidden when not dealing with multi series");
+      cy.findByTestId("viz-settings-button").click();
+      cy.findByTestId("remove-CATEGORY").click();
+      queryBuilderMain().should("not.contain", "Doohickey");
     });
 
     it("should display correct axis labels (metabase#12782)", () => {
diff --git a/frontend/src/metabase/query_builder/components/view/View.jsx b/frontend/src/metabase/query_builder/components/view/View.jsx
index ecc99ee8c91..83d4a3708f3 100644
--- a/frontend/src/metabase/query_builder/components/view/View.jsx
+++ b/frontend/src/metabase/query_builder/components/view/View.jsx
@@ -345,7 +345,10 @@ class View extends React.Component {
     const isSidebarOpen = leftSidebar || rightSidebar;
 
     return (
-      <QueryBuilderMain isSidebarOpen={isSidebarOpen}>
+      <QueryBuilderMain
+        isSidebarOpen={isSidebarOpen}
+        data-testid="query-builder-main"
+      >
         {isNative ? (
           this.renderNativeQueryEditor()
         ) : (
diff --git a/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx b/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx
index ea74b2c9d8f..e77de043943 100644
--- a/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx
+++ b/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx
@@ -275,7 +275,8 @@ export default class LineAreaBarChart extends Component {
     const hasMultipleSeries = series.length > 1;
     const canChangeSeries = onAddSeries || onEditSeries || onRemoveSeries;
     const hasLegendButtons = !hasTitle && actionButtons;
-    const hasLegend = hasMultipleSeries || canChangeSeries || hasLegendButtons;
+    const hasLegend =
+      hasMultipleSeries || canChangeSeries || hasLegendButtons || hasBreakout;
 
     const seriesSettings =
       settings.series && series.map(single => settings.series(single));
-- 
GitLab