From 0d68d1dcf19ca55f18bb2cfdb167db0c5d00bbc7 Mon Sep 17 00:00:00 2001
From: Kyle Doherty <kdoh@users.noreply.github.com>
Date: Mon, 24 Apr 2017 17:21:24 -0600
Subject: [PATCH] use proper viz settings key for goal tooltip (#4842)

* use proper viz settings key for goal tooltip

* add tests
---
 .../visualizations/lib/LineAreaBarRenderer.js |  7 +--
 .../lib/LineAreaBarRenderer.spec.js           | 48 ++++++++++++++++++-
 2 files changed, 50 insertions(+), 5 deletions(-)

diff --git a/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js b/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js
index e2e681c57aa..b5dc4bd92fb 100644
--- a/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js
+++ b/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js
@@ -1071,7 +1071,8 @@ export default function lineAreaBar(element, { series, onHoverChange, onVisualiz
 
     let onGoalHover = () => {};
     if (settings["graph.show_goal"]) {
-        const goalData = [[xDomain[0], settings["graph.goal_value"]], [xDomain[1], settings["graph.goal_value"]]];
+        const goalValue = settings["graph.goal_value"];
+        const goalData = [[xDomain[0], goalValue], [xDomain[1], goalValue]];
         const goalDimension = crossfilter(goalData).dimension(d => d[0]);
         const goalGroup = goalDimension.group().reduceSum(d => d[1]);
         const goalIndex = charts.length;
@@ -1088,8 +1089,8 @@ export default function lineAreaBar(element, { series, onHoverChange, onVisualiz
 
         onGoalHover = (element) => {
             onHoverChange(element && {
-                element: element,
-                data: [{ key: "Goal", value: settings["graph.goal"] }]
+                element,
+                data: [{ key: "Goal", value: goalValue }]
             });
         }
     }
diff --git a/frontend/test/unit/visualizations/lib/LineAreaBarRenderer.spec.js b/frontend/test/unit/visualizations/lib/LineAreaBarRenderer.spec.js
index fe7c0ca2881..1da75bcb676 100644
--- a/frontend/test/unit/visualizations/lib/LineAreaBarRenderer.spec.js
+++ b/frontend/test/unit/visualizations/lib/LineAreaBarRenderer.spec.js
@@ -180,6 +180,49 @@ describe("LineAreaBarRenderer", () => {
         });
     })
 
+    describe('goals', () => {
+        it('should render a goal line', () => {
+            let rows = [
+                ["2016", 1],
+                ["2017", 2],
+            ];
+
+            renderTimeseriesLine({
+                rowsOfSeries: [rows],
+                settings: {
+                    "graph.show_goal": true,
+                    "graph.goal_value": 30
+                }
+            })
+
+            expect(qs('svg .goal .line')).not.toBe(null)
+            expect(qs('svg .goal text')).not.toBe(null)
+            expect(qs('svg .goal text').textContent).toEqual('Goal')
+        })
+
+        it('should render a goal tooltip with the proper value', (done) => {
+            let rows = [
+                ["2016", 1],
+                ["2017", 2],
+            ];
+
+            const goalValue = 30
+            renderTimeseriesLine({
+                rowsOfSeries: [rows],
+                settings: {
+                    "graph.show_goal": true,
+                    "graph.goal_value": goalValue
+                },
+                onHoverChange: (hover) => {
+                    expect(hover.data[0].value).toEqual(goalValue)
+                    done();
+                }
+            })
+            dispatchUIEvent(qs("svg .goal text"), "mouseenter");
+        })
+
+    })
+
     // querySelector shortcut
     const qs = (selector) => element.querySelector(selector);
 
@@ -187,7 +230,7 @@ describe("LineAreaBarRenderer", () => {
     const qsa = (selector) => [...element.querySelectorAll(selector)];
 
     // helper for timeseries line charts
-    const renderTimeseriesLine = ({ rowsOfSeries, onHoverChange, unit }) => {
+    const renderTimeseriesLine = ({ rowsOfSeries, onHoverChange, unit, settings }) => {
         lineAreaBarRenderer(element, {
             chartType: "line",
             series: rowsOfSeries.map((rows) => ({
@@ -199,7 +242,8 @@ describe("LineAreaBarRenderer", () => {
             settings: {
                 "graph.x_axis.scale": "timeseries",
                 "graph.x_axis.axis_enabled": true,
-                "graph.colors": ["#000000"]
+                "graph.colors": ["#000000"],
+                ...settings,
             },
             onHoverChange
         });
-- 
GitLab