version.test.ts48 lines · main
1import { afterAll, beforeAll, expect, test } from 'vitest'
2
3import pgMeta from '../src/index'
4import { cleanupRoot, createTestDatabase } from './db/utils'
5
6beforeAll(async () => {
7 // Any global setup if needed
8})
9
10afterAll(async () => {
11 await cleanupRoot()
12})
13
14const withTestDatabase = (
15 name: string,
16 fn: (db: Awaited<ReturnType<typeof createTestDatabase>>) => Promise<void>
17) => {
18 test(name, async () => {
19 const db = await createTestDatabase()
20 try {
21 await fn(db)
22 } finally {
23 await db.cleanup()
24 }
25 })
26}
27
28withTestDatabase('retrieve version info', async ({ executeQuery }) => {
29 const { sql, zod } = await pgMeta.version.retrieve()
30 const res = zod.parse((await executeQuery(sql))[0])
31
32 expect(res).toMatchInlineSnapshot(
33 {
34 active_connections: expect.any(Number),
35 max_connections: expect.any(Number),
36 version: expect.stringMatching(/^PostgreSQL/),
37 version_number: expect.any(Number),
38 },
39 `
40 {
41 "active_connections": Any<Number>,
42 "max_connections": Any<Number>,
43 "version": StringMatching /\\^PostgreSQL/,
44 "version_number": Any<Number>,
45 }
46 `
47 )
48})