92 lines
4.4 KiB
TypeScript
92 lines
4.4 KiB
TypeScript
|
|
import { randomUUID } from "node:crypto";
|
||
|
|
|
||
|
|
import { expect, test } from "@playwright/test";
|
||
|
|
|
||
|
|
import { loginViaUi } from "../support/login-via-ui";
|
||
|
|
|
||
|
|
const fillDocumentSeriesForm = async (
|
||
|
|
page: import("@playwright/test").Page,
|
||
|
|
values: { code: string; name: string; prefix: string; suffix: string; nextNumber: number }
|
||
|
|
) => {
|
||
|
|
await page.locator('input[name="code"]').fill(values.code);
|
||
|
|
await page.locator('input[name="name"]').fill(values.name);
|
||
|
|
await page.locator('input[name="prefix"]').fill(values.prefix);
|
||
|
|
await page.locator('input[name="suffix"]').fill(values.suffix);
|
||
|
|
await page.locator('input[name="nextNumber"]').fill(String(values.nextNumber));
|
||
|
|
await page.getByTestId("document-series-form-submit").click();
|
||
|
|
};
|
||
|
|
|
||
|
|
test.describe
|
||
|
|
.serial("document-series settings", () => {
|
||
|
|
test.beforeEach(async ({ page }) => {
|
||
|
|
await loginViaUi(page);
|
||
|
|
await page.goto("/settings/billing/document-series");
|
||
|
|
await expect(page.getByTestId("document-series-title")).toBeVisible();
|
||
|
|
});
|
||
|
|
|
||
|
|
test("DOCUMENT-SERIES-SETTINGS-001: administra creación, edición, default, avance, estado y filtros", async ({
|
||
|
|
page,
|
||
|
|
}, testInfo) => {
|
||
|
|
const suffix = `${Date.now()}-${testInfo.workerIndex}-${randomUUID().slice(0, 8)}`;
|
||
|
|
const first = {
|
||
|
|
code: `E2EP${suffix}`,
|
||
|
|
name: `E2E Proforma ${suffix}`,
|
||
|
|
prefix: "P-",
|
||
|
|
suffix: "",
|
||
|
|
nextNumber: 10,
|
||
|
|
};
|
||
|
|
const second = {
|
||
|
|
code: `E2EQ${suffix}`,
|
||
|
|
name: `E2E Secundaria ${suffix}`,
|
||
|
|
prefix: "Q-",
|
||
|
|
suffix: "-X",
|
||
|
|
nextNumber: 20,
|
||
|
|
};
|
||
|
|
|
||
|
|
await page.getByTestId("document-series-create").click();
|
||
|
|
await expect(page.getByTestId("document-series-form-dialog")).toBeVisible();
|
||
|
|
await fillDocumentSeriesForm(page, first);
|
||
|
|
await expect(page.getByTestId(`document-series-code-${first.code}`)).toHaveText(first.code);
|
||
|
|
await expect(page.getByTestId(`document-series-next-number-${first.code}`)).toHaveText("10");
|
||
|
|
|
||
|
|
await page.getByTestId(`document-series-edit-${first.code}`).click();
|
||
|
|
await expect(page.locator('input[name="code"]')).toHaveCount(0);
|
||
|
|
await expect(page.locator('input[name="documentType"]')).toHaveCount(0);
|
||
|
|
await page.locator('input[name="name"]').fill(`${first.name} editada`);
|
||
|
|
await page.locator('input[name="padding"]').fill("5");
|
||
|
|
await page.getByTestId("document-series-form-submit").click();
|
||
|
|
await page.reload();
|
||
|
|
await expect(page.getByTestId(`document-series-name-${first.code}`)).toHaveText(
|
||
|
|
`${first.name} editada`
|
||
|
|
);
|
||
|
|
|
||
|
|
await page.getByTestId("document-series-create").click();
|
||
|
|
await fillDocumentSeriesForm(page, second);
|
||
|
|
await expect(page.getByTestId(`document-series-code-${second.code}`)).toHaveText(second.code);
|
||
|
|
await page.getByTestId(`document-series-default-${second.code}`).click();
|
||
|
|
await expect(page.getByTestId(`document-series-default-${second.code}`)).toHaveCount(0);
|
||
|
|
await expect(page.getByTestId(`document-series-default-state-${second.code}`)).toBeVisible();
|
||
|
|
await expect(page.getByTestId(`document-series-default-state-${first.code}`)).toBeEmpty();
|
||
|
|
|
||
|
|
await page.getByTestId(`document-series-advance-${second.code}`).click();
|
||
|
|
await expect(page.getByTestId("document-series-advance-dialog")).toBeVisible();
|
||
|
|
await page.locator('input[name="nextNumber"]').fill("25");
|
||
|
|
await page.getByTestId("document-series-advance-submit").click();
|
||
|
|
await expect(page.getByTestId(`document-series-next-number-${second.code}`)).toHaveText("25");
|
||
|
|
|
||
|
|
await page.getByTestId(`document-series-disable-${second.code}`).click();
|
||
|
|
await expect(page.getByTestId("document-series-disable-dialog")).toBeVisible();
|
||
|
|
await expect(page.getByTestId("document-series-disable-dialog")).toContainText(
|
||
|
|
/predeterminada|default/i
|
||
|
|
);
|
||
|
|
await page.getByTestId("document-series-disable-confirm").click();
|
||
|
|
await expect(page.getByTestId(`document-series-enable-${second.code}`)).toBeVisible();
|
||
|
|
await expect(page.getByTestId(`document-series-default-state-${second.code}`)).toBeEmpty();
|
||
|
|
await page.getByTestId(`document-series-enable-${second.code}`).click();
|
||
|
|
await expect(page.getByTestId(`document-series-disable-${second.code}`)).toBeVisible();
|
||
|
|
|
||
|
|
await page.getByTestId("document-series-search").locator("input").fill(second.code);
|
||
|
|
await expect(page.getByTestId(`document-series-code-${second.code}`)).toBeVisible();
|
||
|
|
});
|
||
|
|
});
|