style: format admin order filter test

This commit is contained in:
Jeppe B
2026-07-16 11:50:41 +02:00
parent 0562ba8ab0
commit 9a5c8b193d
+131 -109
View File
@@ -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")
);
});
});