feat(i18n): localize asset validation messages

This commit is contained in:
2026-06-13 17:23:01 +02:00
parent 3d6b13dc1c
commit 7d5ab64653
13 changed files with 398 additions and 52 deletions
+51
View File
@@ -0,0 +1,51 @@
import { describe, expect, it } from "vitest"
import { localizeAssetFieldErrors } from "@/actions/asset.messages"
const actionCopy = {
createSuccess: "Activo creado correctamente",
createFailure: "Error al crear el activo",
updateSuccess: "Activo actualizado correctamente",
updateFailure: "Error al actualizar el activo",
duplicateSerialNumber: "El número de serie ya existe",
notFound: "Activo no encontrado",
itemNotFound: "Artículo no encontrado",
assignmentAlreadyReturned: "La asignación ya fue devuelta",
previousItemNotFound: "Artículo anterior no encontrado",
insufficientStock: "El artículo no tiene stock suficiente",
recipientRequired: "El destinatario es obligatorio",
invalidStatus: "Estado inválido",
genericFailure: "Error al procesar el activo",
}
describe("asset action message localization", () => {
it("localizes known asset field errors", () => {
expect(
localizeAssetFieldErrors(
{
itemId: ["Item not found"],
id: ["Asset not found", "Assignment already returned"],
serialNumber: ["This serial number already exists"],
stock: ["Item does not have enough stock"],
previousItem: ["Previous item not found for available asset"],
},
actionCopy,
),
).toEqual({
itemId: [actionCopy.itemNotFound],
id: [actionCopy.notFound, actionCopy.assignmentAlreadyReturned],
serialNumber: [actionCopy.duplicateSerialNumber],
stock: [actionCopy.insufficientStock],
previousItem: [actionCopy.previousItemNotFound],
})
})
it("keeps unknown messages unchanged", () => {
expect(
localizeAssetFieldErrors(
{ serialNumber: ["Unexpected asset issue"] },
actionCopy,
),
).toEqual({ serialNumber: ["Unexpected asset issue"] })
})
})