import { describe, expect, it } from "vitest"; import { prismaAdapter } from "better-auth/adapters/prisma"; import { generatePrismaSchema } from "../src/generators/prisma"; import { twoFactor, username } from "better-auth/plugins"; import { generateDrizzleSchema } from "../src/generators/drizzle"; import { drizzleAdapter } from "better-auth/adapters/drizzle"; import { generateMigrations } from "../src/generators/kysely"; import Database from "better-sqlite3"; describe("generate", async () => { it("should generate prisma schema", async () => { const schema = await generatePrismaSchema({ file: "test.prisma", adapter: prismaAdapter( {}, { provider: "postgresql", }, ), options: { database: prismaAdapter( {}, { provider: "postgresql", }, ), plugins: [twoFactor(), username()], }, }); expect(schema.code).toMatchFileSnapshot("./__snapshots__/schema.txt"); }); it("should generate prisma schema for mongodb", async () => { const schema = await generatePrismaSchema({ file: "test.prisma", adapter: prismaAdapter( {}, { provider: "mongodb", }, ), options: { database: prismaAdapter( {}, { provider: "mongodb", }, ), plugins: [twoFactor(), username()], }, }); expect(schema.code).toMatchFileSnapshot( "./__snapshots__/schema-mongodb.txt", ); }); it("should generate drizzle schema", async () => { const schema = await generateDrizzleSchema({ file: "test.drizzle", adapter: drizzleAdapter( {}, { provider: "pg", schema: {}, }, ), options: { database: drizzleAdapter( {}, { provider: "pg", schema: {}, }, ), plugins: [twoFactor(), username()], }, }); expect(schema.code).toMatchFileSnapshot("./__snapshots__/auth-schema.txt"); }); it("should generate kysely schema", async () => { const schema = await generateMigrations({ file: "test.sql", options: { database: new Database(":memory:"), }, adapter: {} as any, }); expect(schema.code).toMatchFileSnapshot("./__snapshots__/migrations.sql"); }); });