style: format admin order filter test
This commit is contained in:
@@ -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")
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user