From 331f63a29d9fa61b67138ffb16d692e4ec492535 Mon Sep 17 00:00:00 2001
From: Nemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com>
Date: Sat, 16 Oct 2021 18:46:55 +0200
Subject: [PATCH] #18382 Repro: Downloads missing renamed columns when using
 old field dimensions (#18494)

---
 ...-syntax-missing-renamed-columns.cy.spec.js | 107 ++++++++++++++++++
 1 file changed, 107 insertions(+)
 create mode 100644 frontend/test/metabase/scenarios/downloads/reproductions/18382-old-syntax-missing-renamed-columns.cy.spec.js

diff --git a/frontend/test/metabase/scenarios/downloads/reproductions/18382-old-syntax-missing-renamed-columns.cy.spec.js b/frontend/test/metabase/scenarios/downloads/reproductions/18382-old-syntax-missing-renamed-columns.cy.spec.js
new file mode 100644
index 00000000000..a4a861fde34
--- /dev/null
+++ b/frontend/test/metabase/scenarios/downloads/reproductions/18382-old-syntax-missing-renamed-columns.cy.spec.js
@@ -0,0 +1,107 @@
+import { restore, visitQuestionAdhoc } from "__support__/e2e/cypress";
+import { SAMPLE_DATASET } from "__support__/e2e/cypress_sample_dataset";
+
+const xlsx = require("xlsx");
+
+const { REVIEWS, REVIEWS_ID, PRODUCTS, PRODUCTS_ID } = SAMPLE_DATASET;
+
+const questionDetails = {
+  dataset_query: {
+    database: 1,
+    type: "query",
+    query: {
+      "source-table": REVIEWS_ID,
+      joins: [
+        {
+          fields: [["joined-field", "Products", ["field-id", PRODUCTS.TITLE]]],
+          "source-table": PRODUCTS_ID,
+          condition: [
+            "=",
+            ["field-id", REVIEWS.PRODUCT_ID],
+            ["joined-field", "Products", ["field-id", PRODUCTS.ID]],
+          ],
+          alias: "Products",
+        },
+      ],
+      filter: ["and", ["=", ["field-id", REVIEWS.RATING], 4]],
+      "order-by": [
+        ["asc", ["joined-field", "Products", ["field-id", PRODUCTS.TITLE]]],
+      ],
+      fields: [["field-id", REVIEWS.ID], ["field-id", REVIEWS.REVIEWER]],
+      limit: 5,
+    },
+  },
+  display: "table",
+  visualization_settings: {
+    column_settings: renameColumns(),
+  },
+};
+
+const testCases = [
+  { type: "csv", sheetName: "Sheet1" },
+  { type: "xlsx", sheetName: "Query result" },
+];
+
+describe.skip("issue 18382", () => {
+  beforeEach(() => {
+    cy.intercept("POST", "/api/dataset").as("dataset");
+
+    restore();
+    cy.signInAsAdmin();
+  });
+
+  it("should handle the old syntax in downloads (metabase#18382)", () => {
+    visitQuestionAdhoc(questionDetails);
+    cy.wait("@dataset");
+
+    cy.icon("download").click();
+
+    cy.wrap(testCases).each(({ type, sheetName }) => {
+      const downloadClassName = `.Icon-${type}`;
+      const endpoint = `/api/dataset/${type}`;
+
+      cy.log(`downloading a ${type} file`);
+
+      cy.get(downloadClassName)
+        .parent()
+        .parent()
+        .get('input[name="query"]')
+        .invoke("val")
+        .then(download_query_params => {
+          cy.request({
+            url: endpoint,
+            method: "POST",
+            form: true,
+            body: { query: download_query_params },
+            encoding: "binary",
+          }).then(resp => {
+            const workbook = xlsx.read(resp.body, {
+              type: "binary",
+            });
+
+            expect(workbook.Sheets[sheetName]["A1"].v).to.eq("MOD:ID");
+            expect(workbook.Sheets[sheetName]["B1"].v).to.eq("MOD:Reviewer");
+            expect(workbook.Sheets[sheetName]["C1"].v).to.eq("MOD:Title");
+
+            expect(workbook.Sheets[sheetName]["C2"].v).to.eq(
+              "Aerodynamic Concrete Bench",
+            );
+          });
+        });
+    });
+  });
+});
+
+function renameColumns() {
+  return {
+    [`["ref",["field",${REVIEWS.ID},null]]`]: {
+      column_title: "MOD:ID",
+    },
+    [`["ref",["field",${REVIEWS.REVIEWER},null]]`]: {
+      column_title: "MOD:Reviewer",
+    },
+    [`["ref",["field",${PRODUCTS.TITLE},null]]`]: {
+      column_title: "MOD:Title",
+    },
+  };
+}
-- 
GitLab