1
0
forked from baron/baron-sso

조직현황 구조변경. 총괄센터삼안 실 조직 삽입확인

This commit is contained in:
2026-05-11 20:13:54 +09:00
parent d3853fac2a
commit 3063450ee0
59 changed files with 5086 additions and 549 deletions

View File

@@ -29,7 +29,7 @@ function user(id: string, name: string, companyCode: string) {
role: "user",
status: "active",
companyCode,
position: "사원",
grade: "사원",
createdAt: "2026-04-01T00:00:00.000Z",
updatedAt: "2026-04-01T00:00:00.000Z",
};
@@ -84,9 +84,7 @@ test("org chart uses svg viewBox zoom for sharp vector rendering", async ({
const viewport = page.locator('[data-testid="orgchart-viewport"]');
const svg = page.locator('[data-testid="orgchart-vector-svg"]');
await expect(svg).toBeVisible();
await expect(
svg.locator("text", { hasText: "Engineering User" }),
).toBeVisible();
await expect(svg.getByText("Engineering User 사원")).toBeVisible();
const initialViewBox = await svg.getAttribute("viewBox");
const transform = await page
@@ -142,24 +140,18 @@ test("org chart filters by Hanmac family and company while excluding hanmac.kr a
await expect(page.getByText("총 4명")).toBeVisible();
const svg = page.locator('[data-testid="orgchart-vector-svg"]');
await expect(
svg.locator("text", { hasText: "Hidden Hanmac User" }),
).toHaveCount(0);
await expect(
svg.locator("text", { hasText: "Engineering User" }),
).toBeVisible();
await expect(svg.locator("text", { hasText: "Sales User" })).toBeVisible();
await expect(svg.getByText(/Hidden Hanmac User/)).toHaveCount(0);
await expect(svg.getByText("Engineering User 사원")).toBeVisible();
await expect(svg.getByText("Sales User 사원")).toBeVisible();
await page.getByRole("button", { name: "Baron" }).click();
await expect(page.getByText("총 2명")).toBeVisible();
await expect(page.getByText("총 4명")).toHaveCount(0);
await expect(
svg.locator("text", { hasText: "Engineering User" }),
).toBeVisible();
await expect(svg.locator("text", { hasText: "Sales User" })).toHaveCount(0);
await expect(svg.getByText("Engineering User 사원")).toBeVisible();
await expect(svg.getByText(/Sales User/)).toHaveCount(0);
});
test("org chart displays user names with job title and position", async ({
test("org chart displays user names with grade and optional position", async ({
page,
}) => {
await page.route("**/api/v1/public/orgchart**", async (route) => {
@@ -176,7 +168,8 @@ test("org chart displays user names with job title and position", async ({
{
...user("u-eng", "Engineering User", "engineering"),
jobTitle: "Platform Engineer",
position: "책임",
grade: "책임",
position: "팀장",
},
],
}),
@@ -186,11 +179,7 @@ test("org chart displays user names with job title and position", async ({
await page.goto("/chart?token=display-name");
const svg = page.locator('[data-testid="orgchart-vector-svg"]');
await expect(
svg.locator("text", {
hasText: "Engineering User(Platform Engineer) 책임",
}),
).toBeVisible();
await expect(svg.getByText("Engineering User 책임(팀장)")).toBeVisible();
});
test("org chart places multi-tenant users only on leaf memberships without duplicate rendering", async ({
@@ -313,8 +302,8 @@ test("org chart places multi-tenant users only on leaf memberships without dupli
await expect(page.getByText("총 1명")).toBeVisible();
const svg = page.locator('[data-testid="orgchart-vector-svg"]');
await expect(svg).toBeVisible();
await expect(svg.locator("text", { hasText: "Shared User" })).toHaveCount(1);
await expect(svg.locator("text").filter({ hasText: /^1$/ })).toHaveCount(4);
await expect(svg.getByText(/Shared User/)).toHaveCount(1);
await expect(svg.getByText(/^1$/)).toHaveCount(4);
});
test("org chart counts multi-leaf tenant users once in ancestor totals", async ({
@@ -355,8 +344,8 @@ test("org chart counts multi-leaf tenant users once in ancestor totals", async (
await expect(page.getByText("총 1명")).toBeVisible();
const svg = page.locator('[data-testid="orgchart-vector-svg"]');
await expect(svg).toBeVisible();
await expect(svg.locator("text", { hasText: "Shared User" })).toHaveCount(2);
await expect(svg.locator("text").filter({ hasText: /^1$/ })).toHaveCount(5);
await expect(svg.getByText(/Shared User/)).toHaveCount(2);
await expect(svg.getByText(/^1$/)).toHaveCount(5);
});
test("org chart hides system global tenant members", async ({ page }) => {
@@ -389,8 +378,8 @@ test("org chart hides system global tenant members", async ({ page }) => {
await expect(page.getByText("총 1명")).toBeVisible();
const svg = page.locator('[data-testid="orgchart-vector-svg"]');
await expect(svg).toBeVisible();
await expect(svg.locator("text", { hasText: "시스템 전역" })).toHaveCount(0);
await expect(svg.locator("text", { hasText: "Global Admin" })).toHaveCount(0);
await expect(svg.locator("text", { hasText: "System Admin" })).toHaveCount(0);
await expect(svg.locator("text", { hasText: "Baron User" })).toBeVisible();
await expect(svg.getByText(/시스템 전역/)).toHaveCount(0);
await expect(svg.getByText(/Global Admin/)).toHaveCount(0);
await expect(svg.getByText(/System Admin/)).toHaveCount(0);
await expect(svg.getByText("Baron User 사원")).toBeVisible();
});