From 207d81469172252a3eb3bb7030dcd801a584a741 Mon Sep 17 00:00:00 2001 From: Nemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com> Date: Fri, 25 Sep 2020 17:00:57 +0200 Subject: [PATCH] Repro for #13022 (#13308) --- .../admin/datamodel/metrics.cy.spec.js | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/frontend/test/metabase/scenarios/admin/datamodel/metrics.cy.spec.js b/frontend/test/metabase/scenarios/admin/datamodel/metrics.cy.spec.js index 69ef7020c0d..a6cc9408501 100644 --- a/frontend/test/metabase/scenarios/admin/datamodel/metrics.cy.spec.js +++ b/frontend/test/metabase/scenarios/admin/datamodel/metrics.cy.spec.js @@ -168,4 +168,57 @@ describe("scenarios > admin > datamodel > metrics", () => { .click(); }); }); + + describe("custom metrics", () => { + it("should save the metric using custom expressions (metabase#13022)", () => { + cy.visit("/admin/datamodel/metrics"); + cy.findByText("New metric").click(); + + cy.log("**Create new metric based on Custom Expression**"); + cy.findByText("Select a table").click(); + popover().within(() => { + cy.findByText("Sample Dataset"); + cy.findByText("Orders").click(); + }); + // "Count" is selected by defauult + cy.get(".QueryOption") + .contains("Count") + .click(); + // Override it with "Custom Expression" + popover().within(() => { + cy.findByText("Custom Expression").click(); + cy.get("[contenteditable='true']") + .click() + .clear() + .type("Sum([Discount] * [Quantity])", { delay: 100 }); + cy.findByPlaceholderText("Name (required)") + .click() + .type("CE", { delay: 100 }); + cy.findByText("Done").click(); + }); + + const metricName = "Test CE Metric"; + // Give it a name + cy.findByPlaceholderText("Something descriptive but not too long").type( + metricName, + ); + // and description + cy.findByPlaceholderText( + "This is a good place to be more specific about less obvious metric rules", + ).type("Description"); + // Save the custom metric + cy.findByText("Save changes") + .should("not.be.disabled") + .click(); + + cy.log("**Refresh the page and assert**"); + cy.reload(); + cy.url().should("be", "/admin/datamodel/metrics"); + cy.findByText( + 'Unexpected input given to normalize. Expected type to be "object", found "string".', + ).should("not.exist"); + + cy.findByText(metricName); + }); + }); }); -- GitLab