From a380c0af73dc42cedd9f3926d950b623502b39fa Mon Sep 17 00:00:00 2001
From: Paul Rosenzweig <paulrosenzweig@users.noreply.github.com>
Date: Mon, 20 Jul 2020 09:36:52 -0400
Subject: [PATCH] fixes boolean check on including custom expression
 aggregation (#12949)

---
 frontend/src/metabase/lib/expressions/process.js    |  8 +++-----
 .../query_builder/components/AggregationPopover.jsx |  2 +-
 .../test/metabase/scenarios/question/new.cy.spec.js | 13 +++++++++++--
 3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/frontend/src/metabase/lib/expressions/process.js b/frontend/src/metabase/lib/expressions/process.js
index 45032cf68b9..508b4b432b3 100644
--- a/frontend/src/metabase/lib/expressions/process.js
+++ b/frontend/src/metabase/lib/expressions/process.js
@@ -21,13 +21,12 @@ export function processSource(options) {
 
   // COMPILE
   if (parserErrors.length > 0) {
-    console.log("parse errors", parserErrors);
     compileError = parserErrors;
   } else {
     try {
       expression = compile({ cst, tokenVector, ...options });
     } catch (e) {
-      console.log("compile error", e);
+      console.warn("compile error", e);
       compileError = e;
     }
   }
@@ -40,9 +39,8 @@ export function processSource(options) {
         tokenVector,
         ...options,
       }));
-      console.log("suggestions", suggestions);
     } catch (e) {
-      console.log("suggest error", e);
+      console.warn("suggest error", e);
     }
   }
 
@@ -50,7 +48,7 @@ export function processSource(options) {
   try {
     syntaxTree = syntax({ cst, tokenVector, ...options });
   } catch (e) {
-    console.log("syntax error", e);
+    console.warn("syntax error", e);
   }
 
   return {
diff --git a/frontend/src/metabase/query_builder/components/AggregationPopover.jsx b/frontend/src/metabase/query_builder/components/AggregationPopover.jsx
index 02f36932861..f906f35cd1b 100644
--- a/frontend/src/metabase/query_builder/components/AggregationPopover.jsx
+++ b/frontend/src/metabase/query_builder/components/AggregationPopover.jsx
@@ -195,7 +195,7 @@ export default class AggregationPopover extends Component {
       showCustom = false;
       showMetrics = false;
     }
-    if (table.database.hasFeature("expression-aggregations")) {
+    if (!table.database.hasFeature("expression-aggregations")) {
       showCustom = false;
     }
 
diff --git a/frontend/test/metabase/scenarios/question/new.cy.spec.js b/frontend/test/metabase/scenarios/question/new.cy.spec.js
index 49ab02a18bb..23a8bbaf06c 100644
--- a/frontend/test/metabase/scenarios/question/new.cy.spec.js
+++ b/frontend/test/metabase/scenarios/question/new.cy.spec.js
@@ -38,11 +38,20 @@ describe("scenarios > question > new", () => {
       cy.contains("37.65");
     });
 
-    it.skip("should show `Custom Expression` in orders metrics (Issue #12899)", () => {
+    it("should allow using `Custom Expression` in orders metrics", () => {
       // go straight to "orders" in custom questions
       cy.visit("/question/new?database=1&table=2&mode=notebook");
       cy.findByText("Summarize").click();
-      popover().contains("Custom Expression");
+      popover()
+        .contains("Custom Expression")
+        .click();
+      popover().within(() => {
+        cy.get("[contentEditable=true]").type("2 * Max([Total])");
+        cy.findByPlaceholderText("Name (required)").type("twice max total");
+        cy.findByText("Done").click();
+      });
+      cy.findByText("Visualize").click();
+      cy.findByText("604.96");
     });
   });
 });
-- 
GitLab