import { describe, expect, it, vi } from 'vitest'

import { upsertPushSubscription } from '../../src/queries/communications'

describe('upsertPushSubscription', () => {
  it('updates subscription ownership fields when an existing endpoint re-subscribes', async () => {
    const onConflictDoUpdate = vi.fn().mockResolvedValue(undefined)
    const values = vi.fn(() => ({ onConflictDoUpdate }))
    const insert = vi.fn(() => ({ values }))

    await upsertPushSubscription({ insert } as never, {
      userId: 'user-2',
      tenantId: 'tenant-2',
      endpoint: 'https://push.example/sub',
      p256dh: 'p256dh',
      auth: 'auth',
      userAgent: 'agent',
    })

    expect(onConflictDoUpdate).toHaveBeenCalledWith(
      expect.objectContaining({
        set: expect.objectContaining({
          userId: 'user-2',
          tenantId: 'tenant-2',
          p256dh: 'p256dh',
          auth: 'auth',
          userAgent: 'agent',
        }),
      }),
    )
  })
})
