57 lines
2.3 KiB
TypeScript
57 lines
2.3 KiB
TypeScript
// SPDX-License-Identifier: LicenseRef-ConusAI-Template-1.0
|
|
import { businessAppError, toBusinessError } from "@conusai-kit/business"
|
|
import { businessRefusalNotices } from "@conusai-kit/business/refusals"
|
|
import { describe, expect, it } from "vitest"
|
|
import { en } from "../i18n/en.js"
|
|
import { lt } from "../i18n/lt.js"
|
|
import { describeFailure, type Labels } from "../ui/labels.js"
|
|
|
|
// What the loader hands the forms (ui/pages.tsx): the module's messages and the kit's refusal sentences.
|
|
const labelsOf = (messages: typeof en, locale: "en" | "lt"): Labels => ({
|
|
...messages,
|
|
refusals: businessRefusalNotices(locale, {
|
|
conflict: messages.conflict,
|
|
revision_conflict: messages.conflict,
|
|
invalid: messages.invalid,
|
|
}),
|
|
})
|
|
|
|
describe("Activities error text", () => {
|
|
it.each([
|
|
[en, "en"],
|
|
[lt, "lt"],
|
|
] as const)("translates known refusals without showing remote detail", (messages, locale) => {
|
|
const labels = labelsOf(messages, locale)
|
|
for (const [code, expected] of [
|
|
["business_conflict", messages.conflict],
|
|
["business_revision_conflict", messages.conflict],
|
|
["business_invalid", messages.invalid],
|
|
["service_partition_revoked", labels.refusals.service_partition_revoked],
|
|
["service_degraded", labels.refusals.service_degraded],
|
|
["service_migrating", labels.refusals.service_migrating],
|
|
]) {
|
|
const message = describeFailure({ problem: { code, detail: "upstream private fixture value" } }, labels)
|
|
expect(message).toBe(expected)
|
|
expect(message).not.toContain("private fixture value")
|
|
}
|
|
expect(describeFailure({ problem: { code: "untrusted", detail: "upstream private fixture value" } }, labels)).toBe(
|
|
messages.unavailable,
|
|
)
|
|
})
|
|
|
|
it("tells a Lithuanian reader the kit's sentence for a refusal of the Activities service", () => {
|
|
const refusal = businessAppError(
|
|
toBusinessError(
|
|
{ type: "urn:conusai:activities:erased-participant", detail: "upstream private fixture value" },
|
|
new Response(null, { status: 409 }),
|
|
),
|
|
)
|
|
expect(describeFailure(refusal, labelsOf(lt, "lt"))).toBe(
|
|
"Dalyvio duomenys ištrinti, todėl šios veiklos pakeisti negalima.",
|
|
)
|
|
expect(describeFailure({ problem: { code: "service_migrating" } }, labelsOf(lt, "lt"))).toBe(
|
|
"Paslauga atnaujinama. Bandykite po kelių minučių.",
|
|
)
|
|
})
|
|
})
|