ConusAI vendor v0.1.0-beta.114
ci / gate (push) Waiting to run

This commit is contained in:
ConusAI vendor v0.1.0-beta.114
2026-11-14 09:56:45 +00:00
commit 1ce8d23c35
867 changed files with 122104 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
// SPDX-License-Identifier: LicenseRef-ConusAI-Template-1.0
// A role has one name. The invitation page says the role a link joins with by the name Settings > Members gives the
// same role (kit-tenancy's roleName over the built-in roles: a member is an editor), in English and in Lithuanian, from
// the app's own catalogues.
import { createI18n } from "@conusai-kit/i18n"
import { roleName } from "@conusai-kit/tenancy/ui"
import { describe, expect, it, vi } from "vitest"
const mocks = vi.hoisted(() => ({ pageContext: vi.fn(), call: vi.fn() }))
vi.mock("@tanstack/react-start/server", () => ({
getRequest: () => new Request("http://app.test/"),
setResponseStatus: vi.fn(),
setResponseHeader: vi.fn(),
}))
vi.mock("../apps/web/src/server/page", () => ({ pageContext: mocks.pageContext }))
vi.mock("@conusai-kit/auth", async (importOriginal) => ({
...(await importOriginal<Record<string, unknown>>()),
loadAuthConfig: () => ({ provider: "oidc", devLogin: true }),
}))
vi.mock("../apps/web/src/server/better-auth", () => ({
MIN_PASSWORD_LENGTH: 12,
betterAuthFormLabels: () => ({ submit: "Go" }),
}))
vi.mock("@app/modules/account/ui", () => ({
analyticsLabels: () => ({}),
deletionLabels: () => ({}),
exportLabels: () => ({}),
pageLabels: () => ({ title: "Account" }),
}))
vi.mock("@conusai-kit/tenancy", async (importOriginal) => ({
...(await importOriginal<Record<string, unknown>>()),
invitationRead: "invitation.read",
}))
const { appCatalogues } = await import("../apps/web/src/ui/messages")
const { invitationData } = await import("../apps/web/src/server/account-pages")
describe("the invitation page", () => {
it.each(["en", "lt"] as const)("names the role as the members table does, in %s", async (locale) => {
const i18n = createI18n(locale, appCatalogues)
mocks.pageContext.mockResolvedValue({ i18n, caller: { call: mocks.call }, path: "/here", signedIn: false })
for (const [role, roleKey] of [
["viewer", "viewer"],
["member", "editor"],
["admin", "admin"],
["owner", "owner"],
] as const) {
mocks.call.mockResolvedValue({
invitationId: "inv-1",
state: "open",
email: "guest@example.test",
organization: { slug: "acme", name: "Acme" },
role,
roleKey,
expiresAt: "2026-11-10T09:00:00.000Z",
})
const inTable = roleName(i18n, { key: roleKey, name: roleKey, builtIn: true })
expect(inTable, `${locale} ${roleKey} has a translated name`).not.toBe(roleKey)
const { lead } = await invitationData({ org: "acme", token: "token" })
expect(lead).toBe(i18n.message("invite.lead", { email: "guest@example.test", org: "Acme", role: inTable }))
}
})
})