import { describe, it, expectTypeOf } from 'vitest'
import type { Database, TransactionalDatabase, Querier, Transaction } from './types.js'

describe('db dialect-agnostic types', () => {
  it('Querier accepts Database', () => {
    const db = {} as Database<{}>
    const q: Querier<{}> = db
    expectTypeOf(q).toMatchTypeOf<Querier<{}>>()
  })

  it('Querier accepts Transaction', () => {
    const tx = {} as Transaction<{}>
    const q: Querier<{}> = tx
    expectTypeOf(q).toMatchTypeOf<Querier<{}>>()
  })

  it('TransactionalDatabase extends Database', () => {
    const txDb = {} as TransactionalDatabase<{}>
    const db: Database<{}> = txDb
    expectTypeOf(db).toMatchTypeOf<Database<{}>>()
  })
})