From 3a9c07cd1e9e4e3098a37ad0f4672bfc79470994 Mon Sep 17 00:00:00 2001 From: Nemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com> Date: Mon, 17 Oct 2022 21:24:27 +0200 Subject: [PATCH] Repro #25908: Using filter Contains on dashboard is case-insensitive, but on drill-through to question becomes case-sensitive (#25979) --- ...ontains-filter-case-sensitivity.cy.spec.js | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 frontend/test/metabase/scenarios/dashboard-filters/reproductions/25908-contains-filter-case-sensitivity.cy.spec.js diff --git a/frontend/test/metabase/scenarios/dashboard-filters/reproductions/25908-contains-filter-case-sensitivity.cy.spec.js b/frontend/test/metabase/scenarios/dashboard-filters/reproductions/25908-contains-filter-case-sensitivity.cy.spec.js new file mode 100644 index 00000000000..30e237e72e6 --- /dev/null +++ b/frontend/test/metabase/scenarios/dashboard-filters/reproductions/25908-contains-filter-case-sensitivity.cy.spec.js @@ -0,0 +1,78 @@ +import { restore } from "__support__/e2e/helpers"; +import { SAMPLE_DATABASE } from "__support__/e2e/cypress_sample_database"; + +const { PRODUCTS, PRODUCTS_ID } = SAMPLE_DATABASE; + +const questionDetails = { + name: "25908", + query: { + "source-table": PRODUCTS_ID, + }, +}; + +const dashboardFilter = { + name: "Text contains", + slug: "text_contains", + id: "28c6ada9", + type: "string/contains", + sectionId: "string", +}; + +const dashboardDetails = { + parameters: [dashboardFilter], +}; + +const CASE_INSENSITIVE_ROWS = 30; + +describe.skip("issue 25908", () => { + beforeEach(() => { + cy.intercept("POST", "/api/dataset").as("dataset"); + + restore(); + cy.signInAsAdmin(); + + cy.createQuestionAndDashboard({ questionDetails, dashboardDetails }).then( + ({ body: { id, card_id, dashboard_id } }) => { + cy.intercept( + "POST", + `/api/dashboard/${dashboard_id}/dashcard/${id}/card/${card_id}/query`, + ).as("dashcardQuery"); + + cy.request("PUT", `/api/dashboard/${dashboard_id}/cards`, { + cards: [ + { + id, + card_id, + row: 0, + col: 0, + size_x: 13, + size_y: 8, + series: [], + visualization_settings: {}, + parameter_mappings: [ + { + parameter_id: dashboardFilter.id, + card_id, + target: ["dimension", ["field", PRODUCTS.TITLE, null]], + }, + ], + }, + ], + }); + + // Note the capital first letter + cy.visit(`/dashboard/${dashboard_id}?text_contains=Li`); + cy.wait("@dashcardQuery"); + cy.contains(new RegExp(`^Rows 1-\\d+ of ${CASE_INSENSITIVE_ROWS}$`)); + }, + ); + }); + + it("`contains` dashboard filter should respect case insensitivity on a title-drill-through (metabase#25908)", () => { + cy.findByText(questionDetails.name).click(); + cy.wait("@dataset"); + + cy.findByText("Title contains Li"); + cy.findByText(`Showing ${CASE_INSENSITIVE_ROWS} rows`); + }); +}); -- GitLab