import { restore } from "e2e/support/helpers"; import { SAMPLE_DATABASE } from "e2e/support/cypress_sample_database"; const { ORDERS, ORDERS_ID, PEOPLE, PEOPLE_ID } = SAMPLE_DATABASE; describe("issue 18630", () => { beforeEach(() => { restore(); cy.signInAsAdmin(); }); const QUERY_WITH_FIELD_CLAUSE = { "source-query": { "source-table": ORDERS_ID, joins: [ { fields: "all", "source-table": PEOPLE_ID, condition: [ "=", ["field", ORDERS.USER_ID, null], ["field", PEOPLE.ID, { "join-alias": "People - User" }], ], alias: "People - User", }, ], expressions: { coalesce: [ "coalesce", ["field", ORDERS.USER_ID, null], ["field", PEOPLE.ID, { "join-alias": "People - User" }], ], }, aggregation: [["count"]], breakout: [["expression", "coalesce"]], }, joins: [ { fields: "all", "source-table": PEOPLE_ID, condition: [ "=", ["field", "coalesce", { "base-type": "type/Float" }], ["field", PEOPLE.ID, { "join-alias": "People" }], ], alias: "People", }, ], limit: 3, }; const questionDetails = { name: "18630", query: QUERY_WITH_FIELD_CLAUSE, }; it("should normally open queries with field literals in joins (metabase#18630)", () => { cy.createQuestion(questionDetails, { visitQuestion: true }); // The query runs and we assert the page is not blank, // which was caused by an infinite loop and a stack overflow. cy.findByDisplayValue(questionDetails.name); cy.get(".cellData").contains("29494 Anderson Drive"); cy.findByText("Showing 3 rows"); }); });