This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
// Every string the account page shows is a message in English and in Lithuanian, the label builders
|
||||
// ask for no key either language lacks, and no message is left that nothing asks for.
|
||||
|
||||
import { buildRegistry } from "@conusai-kit/core"
|
||||
import { describe, expect, it } from "vitest"
|
||||
import { appModules } from "../../index.js"
|
||||
import { analyticsLabels, deletionLabels, exportLabels, pageLabels } from "../ui/labels.js"
|
||||
|
||||
const catalogues = buildRegistry([...appModules]).catalogues
|
||||
const en = catalogues.en?.account ?? {}
|
||||
const lt = catalogues.lt?.account ?? {}
|
||||
|
||||
/** The keys the builders ask for, recorded by running them with a lookup that notes each one. */
|
||||
function keysUsed(): string[] {
|
||||
const asked: string[] = []
|
||||
const t = (key: string) => {
|
||||
asked.push(key)
|
||||
return key
|
||||
}
|
||||
pageLabels(t)
|
||||
exportLabels(t, "failed")
|
||||
analyticsLabels(t, "failed")
|
||||
deletionLabels(
|
||||
t,
|
||||
"failed",
|
||||
{ modules: ["guides"], lastOwnerOf: [{ slug: "a", name: "A" }], onlyMemberOf: [{ slug: "b", name: "B" }] },
|
||||
"ada@example.test",
|
||||
)
|
||||
return asked
|
||||
}
|
||||
|
||||
describe("the account catalogues", () => {
|
||||
it("hold the same keys in English and in Lithuanian, none of them empty", () => {
|
||||
expect(Object.keys(lt).sort()).toEqual(Object.keys(en).sort())
|
||||
for (const [key, text] of [...Object.entries(en), ...Object.entries(lt)]) expect(text.trim(), key).not.toBe("")
|
||||
})
|
||||
|
||||
it("hold every message the labels ask for, and none that nothing asks for", () => {
|
||||
const asked = new Set(keysUsed())
|
||||
for (const key of asked) {
|
||||
expect(en[key as keyof typeof en], `en is missing account.${key}`).toBeTruthy()
|
||||
expect(lt[key as keyof typeof lt], `lt is missing account.${key}`).toBeTruthy()
|
||||
}
|
||||
expect(Object.keys(en).filter((key) => !asked.has(key))).toEqual([])
|
||||
})
|
||||
|
||||
it("keep the placeholders the components fill in themselves", () => {
|
||||
const t = (key: string, values?: Record<string, string | number>) => {
|
||||
let text = String(en[key as keyof typeof en])
|
||||
for (const [name, value] of Object.entries(values ?? {})) text = text.replace(`{${name}}`, String(value))
|
||||
return text
|
||||
}
|
||||
expect(exportLabels(t, "x").partial).toContain("{sections}")
|
||||
expect(deletionLabels(t, "x", { modules: [], lastOwnerOf: [], onlyMemberOf: [] }, "a@b.test").erasing).toContain(
|
||||
"{modules}",
|
||||
)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user