This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
// The analytics panel's markup, rendered on the server the way the account page renders it, in both
|
||||
// languages: both actions are named buttons, the irreversible one is marked, and no confirmation,
|
||||
// status or table shows before the person asked for anything.
|
||||
|
||||
import { buildRegistry } from "@conusai-kit/core"
|
||||
import { createI18n } from "@conusai-kit/i18n"
|
||||
import { TransportProvider } from "@conusai-kit/ui"
|
||||
import { renderToStaticMarkup } from "react-dom/server"
|
||||
import { describe, expect, it } from "vitest"
|
||||
import { appModules } from "../../index.js"
|
||||
import { AccountAnalyticsPanel, analyticsLabels } from "../ui/index.js"
|
||||
|
||||
const catalogues = buildRegistry([...appModules]).catalogues
|
||||
|
||||
const render = (locale: "en" | "lt") => {
|
||||
const i18n = createI18n(locale, { [locale]: { account: catalogues[locale]?.account ?? {} } })
|
||||
const t = (key: string, values?: Record<string, string | number>) => i18n.message(`account.${key}`, values)
|
||||
const labels = analyticsLabels(t, "That did not work: {detail}")
|
||||
const html = renderToStaticMarkup(
|
||||
<TransportProvider call={async () => undefined} describe={() => "x"}>
|
||||
<AccountAnalyticsPanel labels={labels} />
|
||||
</TransportProvider>,
|
||||
)
|
||||
return { html, labels }
|
||||
}
|
||||
|
||||
describe("the analytics panel", () => {
|
||||
it.each(["en", "lt"] as const)("offers the download and the erasure as named buttons (%s)", (locale) => {
|
||||
const { html, labels } = render(locale)
|
||||
expect(html).toContain(`<h2 id=`)
|
||||
expect(html).toContain(labels.heading)
|
||||
expect(html).toContain(labels.exportSubmit)
|
||||
expect(html).toContain(labels.erase)
|
||||
expect(html).toMatch(/<button[^>]*class="app-danger"[^>]*>/)
|
||||
})
|
||||
|
||||
it("asks for nothing yet: no confirmation, no status and no table before a click", () => {
|
||||
const { html, labels } = render("en")
|
||||
expect(html).not.toContain(labels.confirmErase)
|
||||
expect(html).not.toContain('role="alertdialog"')
|
||||
expect(html).not.toContain('role="status"')
|
||||
expect(html).not.toContain("kit-table")
|
||||
})
|
||||
|
||||
it("says the erasure cannot be undone in its confirmation, in both languages", () => {
|
||||
expect(render("en").labels.confirmErase).toMatch(/cannot be undone/)
|
||||
expect(render("lt").labels.confirmErase).toMatch(/atšaukti negalima/)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user