feat(i18n): localize category action messages
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
import { localizeCategoryFieldErrors } from "@/actions/category.messages"
|
||||
|
||||
const actionCopy = {
|
||||
createSuccess: "Categoría creada correctamente",
|
||||
createFailure: "Error al crear la categoría",
|
||||
updateSuccess: "Categoría actualizada correctamente",
|
||||
updateFailure: "Error al actualizar la categoría",
|
||||
deleteSuccess: "Categoría eliminada correctamente",
|
||||
deleteFailure: "Error al eliminar la categoría",
|
||||
duplicateName: "La categoría ya existe",
|
||||
unchangedName: "El nombre de la categoría no cambió",
|
||||
notFound: "Categoría no encontrada",
|
||||
hasItems: "No se puede eliminar una categoría con artículos",
|
||||
}
|
||||
|
||||
describe("category action message localization", () => {
|
||||
it("localizes known category field errors", () => {
|
||||
expect(
|
||||
localizeCategoryFieldErrors(
|
||||
{
|
||||
name: [
|
||||
"Category already exists",
|
||||
"Category name is the same as the old one",
|
||||
],
|
||||
id: ["Category not found", "Category has items"],
|
||||
},
|
||||
actionCopy,
|
||||
),
|
||||
).toEqual({
|
||||
name: [actionCopy.duplicateName, actionCopy.unchangedName],
|
||||
id: [actionCopy.notFound, actionCopy.hasItems],
|
||||
})
|
||||
})
|
||||
|
||||
it("keeps unknown messages unchanged", () => {
|
||||
expect(
|
||||
localizeCategoryFieldErrors(
|
||||
{ name: ["Unexpected category issue"] },
|
||||
actionCopy,
|
||||
),
|
||||
).toEqual({ name: ["Unexpected category issue"] })
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,38 @@
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
import {
|
||||
buildCreateCategorySchema,
|
||||
buildUpdateCategorySchema,
|
||||
} from "@/schemas/category.schema"
|
||||
|
||||
const schemaCopy = {
|
||||
nameRequired: "El nombre es obligatorio y debe tener al menos 3 caracteres",
|
||||
idRequired: "El ID es obligatorio",
|
||||
}
|
||||
|
||||
describe("category schema localization", () => {
|
||||
it("uses localized create validation messages", () => {
|
||||
const result = buildCreateCategorySchema(schemaCopy).safeParse({ name: "" })
|
||||
|
||||
expect(result.success).toBe(false)
|
||||
if (!result.success) {
|
||||
expect(result.error.flatten().fieldErrors.name).toContain(
|
||||
schemaCopy.nameRequired,
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
it("uses localized update identifier validation messages", () => {
|
||||
const result = buildUpdateCategorySchema(schemaCopy).safeParse({
|
||||
id: "",
|
||||
name: "Hardware",
|
||||
})
|
||||
|
||||
expect(result.success).toBe(false)
|
||||
if (!result.success) {
|
||||
expect(result.error.flatten().fieldErrors.id).toContain(
|
||||
schemaCopy.idRequired,
|
||||
)
|
||||
}
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user