test(people): update tests for teamId and add people e2e spec
This commit is contained in:
@@ -7,6 +7,7 @@ import { es } from "@/i18n/dictionaries/es"
|
||||
const mocks = vi.hoisted(() => ({
|
||||
createPersonUser: vi.fn(),
|
||||
getI18n: vi.fn(),
|
||||
listTeamsUseCase: vi.fn(),
|
||||
push: vi.fn(),
|
||||
toastError: vi.fn(),
|
||||
toastSuccess: vi.fn(),
|
||||
@@ -26,6 +27,10 @@ vi.mock("@/services/person.service", () => ({
|
||||
},
|
||||
}))
|
||||
|
||||
vi.mock("@/use-cases/team.use-cases", () => ({
|
||||
listTeamsUseCase: mocks.listTeamsUseCase,
|
||||
}))
|
||||
|
||||
vi.mock("next/navigation", () => ({
|
||||
useRouter: () => ({
|
||||
push: mocks.push,
|
||||
@@ -39,10 +44,16 @@ vi.mock("sonner", () => ({
|
||||
},
|
||||
}))
|
||||
|
||||
const teams = [
|
||||
{ id: "team-1", name: "Engineering" },
|
||||
{ id: "team-2", name: "Sales" },
|
||||
]
|
||||
|
||||
describe("unified creation form page", () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
mocks.getI18n.mockResolvedValue({ dictionary: es, locale: "es" })
|
||||
mocks.listTeamsUseCase.mockResolvedValue(teams)
|
||||
})
|
||||
|
||||
it("renders unified form with Person fields, email, password, role, and NO_USER option in Spanish", async () => {
|
||||
@@ -55,7 +66,7 @@ describe("unified creation form page", () => {
|
||||
// Person fields
|
||||
expect(html).toContain("Nombre")
|
||||
expect(html).toContain("Apellido")
|
||||
expect(html).toContain("Departamento")
|
||||
expect(html).toContain("Equipo")
|
||||
expect(html).toContain("Teléfono")
|
||||
|
||||
// User fields
|
||||
@@ -86,7 +97,7 @@ describe("unified creation form page", () => {
|
||||
// Person fields
|
||||
expect(html).toContain("First Name")
|
||||
expect(html).toContain("Last Name")
|
||||
expect(html).toContain("Department")
|
||||
expect(html).toContain("Team")
|
||||
expect(html).toContain("Phone")
|
||||
|
||||
// User fields
|
||||
@@ -108,18 +119,20 @@ describe("unified creation form page", () => {
|
||||
// Person field placeholders
|
||||
expect(html).toContain('placeholder="Nombre"') // firstNamePlaceholder (es)
|
||||
expect(html).toContain('placeholder="Apellido"') // lastNamePlaceholder (es)
|
||||
expect(html).toContain("Selecciona un departamento") // departmentPlaceholder
|
||||
expect(html).toContain("Selecciona un equipo") // teamPlaceholder
|
||||
expect(html).toContain('placeholder="Teléfono"') // phonePlaceholder (es)
|
||||
})
|
||||
|
||||
it("renders department select with all PERSON_DEPARTMENTS values", async () => {
|
||||
it("renders team select with active teams from listTeamsUseCase", async () => {
|
||||
const { default: NewUserPage } = await import(
|
||||
"@/app/(dashboard)/people/new/page"
|
||||
)
|
||||
|
||||
const html = renderToStaticMarkup(await NewUserPage())
|
||||
|
||||
// Department values must use canonical enum values
|
||||
expect(html).toContain('value="ADMINISTRATION"')
|
||||
expect(html).toContain('value="team-1"')
|
||||
expect(html).toContain("Engineering")
|
||||
expect(html).toContain('value="team-2"')
|
||||
expect(html).toContain("Sales")
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
import {
|
||||
formatPersonDepartment,
|
||||
formatUserRole,
|
||||
} from "@/app/(dashboard)/people/_components/user.copy"
|
||||
import { formatUserRole } from "@/app/(dashboard)/people/_components/user.copy"
|
||||
|
||||
describe("user copy helpers", () => {
|
||||
const roleCopy = {
|
||||
@@ -37,48 +34,3 @@ describe("user copy helpers", () => {
|
||||
).toBe("Rol desconocido")
|
||||
})
|
||||
})
|
||||
|
||||
describe("formatPersonDepartment helper", () => {
|
||||
const departmentCopy = {
|
||||
IT: "IT",
|
||||
ENGINEERING: "Ingeniería",
|
||||
LOGISTICS: "Logística",
|
||||
TRAFFIC: "Tráfico",
|
||||
DRIVER: "Chofer",
|
||||
ADMINISTRATION: "Administración",
|
||||
SALES: "Ventas",
|
||||
OTHER: "Otro",
|
||||
}
|
||||
|
||||
const fallbackCopy = {
|
||||
unknownDepartment: "Departamento desconocido",
|
||||
unknownStatus: "Estado desconocido",
|
||||
}
|
||||
|
||||
it("formats known department values with localized labels", () => {
|
||||
expect(
|
||||
formatPersonDepartment("ENGINEERING", departmentCopy, fallbackCopy),
|
||||
).toBe("Ingeniería")
|
||||
expect(
|
||||
formatPersonDepartment("ADMINISTRATION", departmentCopy, fallbackCopy),
|
||||
).toBe("Administración")
|
||||
})
|
||||
|
||||
it("falls back for unknown department values", () => {
|
||||
expect(
|
||||
formatPersonDepartment("UNKNOWN_DEPT", departmentCopy, fallbackCopy),
|
||||
).toBe("Departamento desconocido")
|
||||
})
|
||||
|
||||
it("falls back for null department values", () => {
|
||||
expect(formatPersonDepartment(null, departmentCopy, fallbackCopy)).toBe(
|
||||
"Departamento desconocido",
|
||||
)
|
||||
})
|
||||
|
||||
it("falls back for undefined department values", () => {
|
||||
expect(
|
||||
formatPersonDepartment(undefined, departmentCopy, fallbackCopy),
|
||||
).toBe("Departamento desconocido")
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user