import { describe, expect, it } from "vitest" import { buildCreateRecipientSchema, buildUpdateRecipientSchema, } from "@/schemas/recipient.schema" const schemaCopy = { usernameRequired: "El usuario es obligatorio", firstNameRequired: "El nombre es obligatorio", lastNameRequired: "El apellido es obligatorio", departmentRequired: "El departamento es obligatorio", emailInvalid: "El correo electrónico no es válido", idRequired: "El ID es obligatorio", } describe("recipient schema localization", () => { it("uses localized required-field validation messages for create", () => { const result = buildCreateRecipientSchema(schemaCopy).safeParse({ username: "", firstName: "", lastName: "", department: "", }) expect(result.success).toBe(false) if (!result.success) { const errors = result.error.flatten().fieldErrors expect(errors.username).toContain(schemaCopy.usernameRequired) expect(errors.firstName).toContain(schemaCopy.firstNameRequired) expect(errors.lastName).toContain(schemaCopy.lastNameRequired) expect(errors.department).toContain(schemaCopy.departmentRequired) } }) it("uses a localized invalid email message for create", () => { const result = buildCreateRecipientSchema(schemaCopy).safeParse({ username: "ada", firstName: "Ada", lastName: "Lovelace", department: "ENGINEERING", email: "not-an-email", }) expect(result.success).toBe(false) if (!result.success) { expect(result.error.flatten().fieldErrors.email).toContain( schemaCopy.emailInvalid, ) } }) it("uses localized update identifier validation messages", () => { const result = buildUpdateRecipientSchema(schemaCopy).safeParse({ id: "", username: "ada", firstName: "Ada", lastName: "Lovelace", department: "ENGINEERING", email: "ada@example.test", }) expect(result.success).toBe(false) if (!result.success) { expect(result.error.flatten().fieldErrors.id).toContain( schemaCopy.idRequired, ) } }) it("preserves canonical department values and optional empty email semantics", () => { const result = buildCreateRecipientSchema(schemaCopy).safeParse({ username: "ada", firstName: "Ada", lastName: "Lovelace", department: "ENGINEERING", email: "", }) expect(result.success).toBe(true) if (result.success) { expect(result.data.department).toBe("ENGINEERING") expect(result.data.email).toBe("") } }) })