import { it, expect } from 'vitest'
import { makeFakeMailAdapter } from './testing.js'
import type { MailMessage } from './index.js'

const sampleMessage: MailMessage = {
  from: 'from@example.com',
  to: 'to@example.com',
  subject: 'Hello',
  html: '<p>Hi</p>',
}

it('surfaces the in-memory store for assertions', async () => {
  const adapter = makeFakeMailAdapter()

  await adapter.send(sampleMessage)

  const page = await adapter.store.list()
  expect(page.items).toHaveLength(1)
  expect(page.items[0]!.record).toEqual(sampleMessage)
})

it('returns a fresh in-memory store per call', async () => {
  const first = makeFakeMailAdapter()
  const second = makeFakeMailAdapter()

  await first.send(sampleMessage)

  const firstPage = await first.store.list()
  const secondPage = await second.store.list()

  expect(firstPage.items).toHaveLength(1)
  expect(secondPage.items).toHaveLength(0)
})
