config.test.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { afterAll, expect, test } from 'vitest'
  2. import pgMeta from '../src/index'
  3. import { cleanupRoot, createTestDatabase } from './db/utils'
  4. afterAll(async () => {
  5. await cleanupRoot()
  6. })
  7. const withTestDatabase = (
  8. name: string,
  9. fn: (db: Awaited<ReturnType<typeof createTestDatabase>>) => Promise<void>
  10. ) => {
  11. test(name, async () => {
  12. const db = await createTestDatabase()
  13. try {
  14. await fn(db)
  15. } finally {
  16. await db.cleanup()
  17. }
  18. })
  19. }
  20. withTestDatabase('list config', async ({ executeQuery }) => {
  21. const { sql, zod } = pgMeta.config.list()
  22. const res = zod.parse(await executeQuery(sql))
  23. // Test for a known config value
  24. const autovacuumConfig = res.find(({ name }) => name === 'autovacuum')
  25. expect(autovacuumConfig).toMatchInlineSnapshot(`
  26. {
  27. "boot_val": "on",
  28. "category": "Autovacuum",
  29. "context": "sighup",
  30. "enumvals": null,
  31. "extra_desc": null,
  32. "group": "Autovacuum",
  33. "max_val": null,
  34. "min_val": null,
  35. "name": "autovacuum",
  36. "pending_restart": false,
  37. "reset_val": "on",
  38. "setting": "on",
  39. "short_desc": "Starts the autovacuum subprocess.",
  40. "source": "default",
  41. "sourcefile": null,
  42. "sourceline": null,
  43. "subgroup": "",
  44. "unit": null,
  45. "vartype": "bool",
  46. }
  47. `)
  48. })
  49. withTestDatabase('list config with pagination', async ({ executeQuery }) => {
  50. const { sql, zod } = pgMeta.config.list({ limit: 5, offset: 0 })
  51. const res = zod.parse(await executeQuery(sql))
  52. expect(res).toHaveLength(5)
  53. })