From 1a062c36d9e5c8e2130acb8e770a6405a36203d1 Mon Sep 17 00:00:00 2001 From: Nemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com> Date: Sat, 28 Aug 2021 21:13:25 +0200 Subject: [PATCH] Add test for dashboard filter applied to the explicitly joined field (#17650) --- ...dashboard-filters-explicit-join.cy.spec.js | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-explicit-join.cy.spec.js diff --git a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-explicit-join.cy.spec.js b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-explicit-join.cy.spec.js new file mode 100644 index 00000000000..c4d2b02586f --- /dev/null +++ b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-explicit-join.cy.spec.js @@ -0,0 +1,103 @@ +import { restore, filterWidget, popover } from "__support__/e2e/cypress"; +import { SAMPLE_DATASET } from "__support__/e2e/cypress_sample_dataset"; + +const { ORDERS, ORDERS_ID, PRODUCTS, PRODUCTS_ID } = SAMPLE_DATASET; + +const questionDetails = { + name: "Orders join Products", + query: { + "source-table": ORDERS_ID, + joins: [ + { + fields: "all", + "source-table": PRODUCTS_ID, + condition: [ + "=", + ["field-id", ORDERS.PRODUCT_ID], + ["joined-field", "Products", ["field-id", PRODUCTS.ID]], + ], + alias: "Products", + }, + ], + }, +}; + +const filter = { + name: "Text", + slug: "text", + id: "7653fdfa", + type: "string/=", + sectionId: "string", +}; + +const dashboardDetails = { + parameters: [filter], +}; + +describe("scenarios > dashboard > filters", () => { + beforeEach(() => { + restore(); + cy.signInAsAdmin(); + + cy.createQuestionAndDashboard({ questionDetails, dashboardDetails }).then( + ({ body: dashboardCard }) => { + const { card_id, dashboard_id } = dashboardCard; + + const updatedCardDetails = { + sizeX: 16, + sizeY: 10, + parameter_mappings: [ + { + parameter_id: filter.id, + card_id, + target: [ + "dimension", + [ + "field", + PRODUCTS.TITLE, + { + "join-alias": "Products", + }, + ], + ], + }, + ], + }; + + cy.editDashboardCard(dashboardCard, updatedCardDetails); + + cy.visit(`/dashboard/${dashboard_id}`); + }, + ); + }); + + it("should work properly when connected to the explicitly joined field", () => { + filterWidget().click(); + + cy.findByPlaceholderText(/^Search by/).type("Awe"); + + selectFromDropdown(["Awesome Concrete Shoes", "Awesome Iron Hat"]); + + cy.button("Add filter").click(); + + cy.location("search").should( + "eq", + "?text=Awesome%20Concrete%20Shoes&text=Awesome%20Iron%20Hat", + ); + + filterWidget().contains("2 selections"); + + cy.get(".Card").within(() => { + cy.findAllByText("Awesome Concrete Shoes"); + cy.findAllByText("Awesome Iron Hat"); + }); + }); +}); + +function selectFromDropdown(values) { + popover().within(() => { + values.forEach(value => { + cy.findByText(value).click(); + }); + }); +} -- GitLab