1
0
forked from baron/baron-sso

chore: snapshot local state before dev merge

This commit is contained in:
2026-06-17 21:25:42 +09:00
parent b2808759d2
commit 49560e8a8c
107 changed files with 8958 additions and 939 deletions

View File

@@ -527,6 +527,93 @@ test.describe("Tenants Management", () => {
);
});
test("should bulk update selected tenant status type and visibility", async ({
page,
}) => {
await page.setViewportSize({ width: 1100, height: 760 });
const updatePayloads: Record<string, unknown>[] = [];
await page.route("**/api/v1/admin/tenants**", async (route) => {
const request = route.request();
const url = new URL(request.url());
if (request.method() === "PUT") {
updatePayloads.push(request.postDataJSON());
return route.fulfill({
json: {
id: url.pathname.split("/").at(-1),
name: "Updated Tenant",
slug: "updated-tenant",
status: "inactive",
type: "ORGANIZATION",
config: { visibility: "public" },
},
headers: { "Access-Control-Allow-Origin": "*" },
});
}
if (request.method() !== "GET") {
return route.continue();
}
return route.fulfill({
json: {
items: [
{
id: "tenant-a",
name: "Tenant A",
slug: "tenant-a",
status: "active",
type: "COMPANY",
config: { visibility: "internal" },
updatedAt: new Date().toISOString(),
},
{
id: "tenant-b",
name: "Tenant B",
slug: "tenant-b",
status: "active",
type: "COMPANY",
config: { visibility: "internal" },
updatedAt: new Date().toISOString(),
},
],
total: 2,
limit: 500,
offset: 0,
},
headers: { "Access-Control-Allow-Origin": "*" },
});
});
await page.goto("/tenants");
for (const tenantId of ["tenant-a", "tenant-b"]) {
await page
.getByTestId(`tenant-internal-id-${tenantId}`)
.locator("xpath=ancestor::tr")
.getByRole("checkbox")
.click();
}
await page.getByTestId("tenant-bulk-status-select").click();
await page.getByRole("option", { name: /비활성|inactive/i }).click();
await page.getByTestId("tenant-bulk-type-select").click();
await page.getByRole("option", { name: /Organization|정규 조직/i }).click();
await page.getByTestId("tenant-bulk-visibility-select").click();
await page.getByRole("option", { name: "공개", exact: true }).click();
await page.getByTestId("tenant-bulk-apply-btn").click();
await expect.poll(() => updatePayloads).toHaveLength(2);
for (const payload of updatePayloads) {
expect(payload).toMatchObject({
status: "inactive",
type: "ORGANIZATION",
config: { visibility: "public" },
});
}
});
test("switches tree and flat views, searches UUID, and selects descendants", async ({
page,
}) => {