diff --git a/tests/e2e/admin-pos-order-filters.spec.ts b/tests/e2e/admin-pos-order-filters.spec.ts index be85ff7c..3eb6cdbb 100644 --- a/tests/e2e/admin-pos-order-filters.spec.ts +++ b/tests/e2e/admin-pos-order-filters.spec.ts @@ -91,10 +91,10 @@ const setupAdminOrderFilters = async (page: Page) => { .filter((orderRow) => { const createdAtDate = String(orderRow.created_at || "").slice(0, 10); return ( - (!filterMap.department_id || Number(orderRow.department_id) === Number(filterMap.department_id)) - && (!filterMap.customer_id || Number(orderRow.customer_id) === Number(filterMap.customer_id)) - && (!filterMap["created_at-date_from"] || createdAtDate >= filterMap["created_at-date_from"]) - && (!filterMap["created_at-date_to"] || createdAtDate <= filterMap["created_at-date_to"]) + (!filterMap.department_id || Number(orderRow.department_id) === Number(filterMap.department_id)) && + (!filterMap.customer_id || Number(orderRow.customer_id) === Number(filterMap.customer_id)) && + (!filterMap["created_at-date_from"] || createdAtDate >= filterMap["created_at-date_from"]) && + (!filterMap["created_at-date_to"] || createdAtDate <= filterMap["created_at-date_to"]) ); }) .sort((left, right) => { @@ -138,20 +138,17 @@ const setupAdminOrderFilters = async (page: Page) => { }; const latestTableRequest = (requests: OrderRequest[]) => - [...requests].reverse().find((request) => ( - request.limit > 1 - && request.limit < 1000 - && request.order.startsWith("created_at:") - )); + [...requests] + .reverse() + .find((request) => request.limit > 1 && request.limit < 1000 && request.order.startsWith("created_at:")); -const expectLatestTableRequest = async ( - requests: OrderRequest[], - predicate: (request: OrderRequest) => boolean -) => { - await expect.poll(() => { - const request = latestTableRequest(requests); - return request ? predicate(request) : false; - }).toBe(true); +const expectLatestTableRequest = async (requests: OrderRequest[], predicate: (request: OrderRequest) => boolean) => { + await expect + .poll(() => { + const request = latestTableRequest(requests); + return request ? predicate(request) : false; + }) + .toBe(true); }; test.describe("admin POS order filters", () => { @@ -182,13 +179,15 @@ test.describe("admin POS order filters", () => { await expect(page.getByTestId("date-period-shortcut-today")).toBeVisible(); await expect(page.locator('table input[type="checkbox"]')).toHaveCount(0); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("department_id:12") - && !request.filters.includes("booked_invoice_id") - && !request.filters.includes("OtherSpecialArrangement") - && !request.filters.includes("OtherVaskeabonnement") - && request.order === "created_at:desc" - )); + await expectLatestTableRequest( + requests, + (request) => + request.filters.includes("department_id:12") && + !request.filters.includes("booked_invoice_id") && + !request.filters.includes("OtherSpecialArrangement") && + !request.filters.includes("OtherVaskeabonnement") && + request.order === "created_at:desc" + ); await fromInput.click(); await fromInput.press("Enter"); @@ -199,10 +198,11 @@ test.describe("admin POS order filters", () => { .filter({ hasText: /^5$/ }) .click(); await expect(fromInput).toHaveValue("05.07.2026"); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("department_id:12") - && request.filters.includes("created_at-date_from:2026-07-05") - )); + await expectLatestTableRequest( + requests, + (request) => + request.filters.includes("department_id:12") && request.filters.includes("created_at-date_from:2026-07-05") + ); await fromField.locator(".icon.is-right").click(); await expect(fromInput).toHaveValue(""); await expectLatestTableRequest(requests, (request) => !request.filters.includes("created_at-date_from:")); @@ -210,18 +210,21 @@ test.describe("admin POS order filters", () => { await page.getByTestId("date-period-shortcut-today").click(); await expect(fromInput).toHaveValue("07.07.2026"); await expect(toInput).toHaveValue("07.07.2026"); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("department_id:12") - && request.filters.includes("created_at-date_from:2026-07-07") - && request.filters.includes("created_at-date_to:2026-07-07") - )); + await expectLatestTableRequest( + requests, + (request) => + request.filters.includes("department_id:12") && + request.filters.includes("created_at-date_from:2026-07-07") && + request.filters.includes("created_at-date_to:2026-07-07") + ); await toField.locator(".icon.is-right").click(); await expect(fromInput).toHaveValue("07.07.2026"); await expect(toInput).toHaveValue(""); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("created_at-date_from:2026-07-07") - && !request.filters.includes("created_at-date_to:") - )); + await expectLatestTableRequest( + requests, + (request) => + request.filters.includes("created_at-date_from:2026-07-07") && !request.filters.includes("created_at-date_to:") + ); await page.getByTestId("date-period-shortcut-today").click(); await searchInput.fill("FILTER"); @@ -256,48 +259,52 @@ test.describe("admin POS order filters", () => { const activeCount = page.getByTestId("invoice-orders-other-filters-count"); await expect(activeCount).toHaveText("7"); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("department_id:12") - && request.filters.includes("booked_invoice_id:not null") - && request.filters.includes("processor:2") - && request.filters.includes("completed_at:not null") - && request.filters.includes("customer_id-has_attribute:invoiceAllOrdersIndividually") - && request.filters.includes("customer_id-has_key-OtherSpecialArrangement") - && request.filters.includes("customer_id-has_key-OtherVaskeabonnement") - && request.order === "created_at:asc" - && request.search === "FILTER" - )); - await expect.poll(() => requests.some((request) => ( - request.limit === 1000 - && request.filters.includes("department_id:12") - && request.filters.includes("processor:2") - && !request.filters.includes("created_at-date_") - && request.search === "FILTER" - ))).toBe(true); + await expectLatestTableRequest( + requests, + (request) => + request.filters.includes("department_id:12") && + request.filters.includes("booked_invoice_id:not null") && + request.filters.includes("processor:2") && + request.filters.includes("completed_at:not null") && + request.filters.includes("customer_id-has_attribute:invoiceAllOrdersIndividually") && + request.filters.includes("customer_id-has_key-OtherSpecialArrangement") && + request.filters.includes("customer_id-has_key-OtherVaskeabonnement") && + request.order === "created_at:asc" && + request.search === "FILTER" + ); + await expect + .poll(() => + requests.some( + (request) => + request.limit === 1000 && + request.filters.includes("department_id:12") && + request.filters.includes("processor:2") && + !request.filters.includes("created_at-date_") && + request.search === "FILTER" + ) + ) + .toBe(true); - const [buttonBox, countBox] = await Promise.all([ - otherFiltersButton.boundingBox(), - activeCount.boundingBox(), - ]); + const [buttonBox, countBox] = await Promise.all([otherFiltersButton.boundingBox(), activeCount.boundingBox()]); expect(buttonBox).not.toBeNull(); expect(countBox).not.toBeNull(); - expect((countBox?.x ?? 0) + (countBox?.width ?? 0)).toBeGreaterThan( - (buttonBox?.x ?? 0) + (buttonBox?.width ?? 0) - ); + expect((countBox?.x ?? 0) + (countBox?.width ?? 0)).toBeGreaterThan((buttonBox?.x ?? 0) + (buttonBox?.width ?? 0)); await page.getByTestId("invoice-orders-other-filters-clear").click(); await expect(page.getByTestId("invoice-orders-other-filters-count")).toHaveCount(0); await expect(fromInput).toHaveValue("07.07.2026"); await expect(toInput).toHaveValue("07.07.2026"); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("department_id:12") - && request.filters.includes("created_at-date_from:2026-07-07") - && request.filters.includes("created_at-date_to:2026-07-07") - && !request.filters.includes("processor:2") - && !request.filters.includes("completed_at:not null") - && request.order === "created_at:desc" - && request.search === "FILTER" - )); + await expectLatestTableRequest( + requests, + (request) => + request.filters.includes("department_id:12") && + request.filters.includes("created_at-date_from:2026-07-07") && + request.filters.includes("created_at-date_to:2026-07-07") && + !request.filters.includes("processor:2") && + !request.filters.includes("completed_at:not null") && + request.order === "created_at:desc" && + request.search === "FILTER" + ); await page.keyboard.press("Escape"); await page.getByTestId("date-period-other-dropdown-trigger").click(); @@ -314,10 +321,10 @@ test.describe("admin POS order filters", () => { await page.getByTestId("date-period-shortcut-anytime").click(); await expect(fromInput).toHaveValue(""); await expect(toInput).toHaveValue(""); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("department_id:12") - && !request.filters.includes("created_at-date_") - )); + await expectLatestTableRequest( + requests, + (request) => request.filters.includes("department_id:12") && !request.filters.includes("created_at-date_") + ); }); test("keeps the shortcut controls usable in the mobile layout", async ({ page }, testInfo) => { @@ -333,19 +340,23 @@ test.describe("admin POS order filters", () => { await expect(page.getByTestId("date-period-mobile-layout")).toBeVisible(); await expect(shortcutSelect).toBeVisible(); await shortcutSelect.selectOption("today"); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("department_id:12") - && request.filters.includes("created_at-date_from:2026-07-07") - && request.filters.includes("created_at-date_to:2026-07-07") - )); + await expectLatestTableRequest( + requests, + (request) => + request.filters.includes("department_id:12") && + request.filters.includes("created_at-date_from:2026-07-07") && + request.filters.includes("created_at-date_to:2026-07-07") + ); await page.getByTestId("date-period-other-dropdown-trigger").click(); await expect(page.getByTestId("date-period-other-menu")).toBeVisible(); await page.getByTestId("date-period-other-last_seven_days").click(); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("created_at-date_from:2026-07-01") - && request.filters.includes("created_at-date_to:2026-07-07") - )); + await expectLatestTableRequest( + requests, + (request) => + request.filters.includes("created_at-date_from:2026-07-01") && + request.filters.includes("created_at-date_to:2026-07-07") + ); await expect(page.getByTestId("invoice-orders-other-filters-button")).toBeVisible(); }); @@ -360,36 +371,47 @@ test.describe("admin POS order filters", () => { await expect(page.getByTestId("invoice-orders-other-filters-button")).toBeVisible(); await expect(page.getByTestId("draft-order-assign-customer-button-71004")).toBeVisible(); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("department_id:12") - && request.filters.includes("customer_id:6001") - && !request.filters.includes("booked_invoice_id") - && request.order === "created_at:desc" - )); + await expectLatestTableRequest( + requests, + (request) => + request.filters.includes("department_id:12") && + request.filters.includes("customer_id:6001") && + !request.filters.includes("booked_invoice_id") && + request.order === "created_at:desc" + ); await page.getByTestId("date-period-shortcut-today").click(); await page.getByTestId("invoice-orders-other-filters-button").click(); await page.getByTestId("invoice-orders-other-filter-processor").selectOption("1"); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("department_id:12") - && request.filters.includes("customer_id:6001") - && request.filters.includes("created_at-date_from:2026-07-07") - && request.filters.includes("processor:1") - )); - await expect.poll(() => requests.some((request) => ( - request.limit === 1000 - && request.filters.includes("department_id:12") - && request.filters.includes("customer_id:6001") - && request.filters.includes("processor:1") - && !request.filters.includes("created_at-date_") - ))).toBe(true); + await expectLatestTableRequest( + requests, + (request) => + request.filters.includes("department_id:12") && + request.filters.includes("customer_id:6001") && + request.filters.includes("created_at-date_from:2026-07-07") && + request.filters.includes("processor:1") + ); + await expect + .poll(() => + requests.some( + (request) => + request.limit === 1000 && + request.filters.includes("department_id:12") && + request.filters.includes("customer_id:6001") && + request.filters.includes("processor:1") && + !request.filters.includes("created_at-date_") + ) + ) + .toBe(true); await page.getByTestId("invoice-orders-other-filters-clear").click(); - await expectLatestTableRequest(requests, (request) => ( - request.filters.includes("department_id:12") - && request.filters.includes("customer_id:6001") - && request.filters.includes("created_at-date_from:2026-07-07") - && !request.filters.includes("processor:1") - )); + await expectLatestTableRequest( + requests, + (request) => + request.filters.includes("department_id:12") && + request.filters.includes("customer_id:6001") && + request.filters.includes("created_at-date_from:2026-07-07") && + !request.filters.includes("processor:1") + ); }); });