import { describe, expect, it } from 'vitest'
import { addAttachment, listAttachments } from './attachments.js'
import { createTestDb } from './test-fixture.js'

describe('addAttachment / listAttachments', () => {
  it('does not leak an attachment on (case, id) to (ticket, same id)', async () => {
    const db = await createTestDb()

    await addAttachment(db, { parentType: 'case', parentId: '1' }, {
      objectKey: 'r2://case/evidence.pdf',
      fileName: 'evidence.pdf',
    })

    const ticketRows = await listAttachments(db, { parentType: 'ticket', parentId: '1' })
    expect(ticketRows).toEqual([])
  })

  it('returns only attachments for the scoped parent key', async () => {
    const db = await createTestDb()

    await addAttachment(db, { parentType: 'ticket', parentId: '9' }, {
      objectKey: 'r2://ticket/a.png',
    })
    await addAttachment(db, { parentType: 'case', parentId: '9' }, {
      objectKey: 'r2://case/b.png',
    })

    const caseRows = await listAttachments(db, { parentType: 'case', parentId: '9' })
    expect(caseRows).toHaveLength(1)
    expect(caseRows[0]?.objectKey).toBe('r2://case/b.png')
  })
})
