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

vi.mock('server-only', () => ({}))

import { dimensionAlertFingerprint } from '@/lib/data/permit-dimension-alert'
import type { ComputedWarning } from '@/lib/domain/warnings'

describe('Workspace dimension-alert delivery key', () => {
  it('ignores non-dimension warnings and is stable across warning order', () => {
    const width: ComputedWarning = { kind: 'dimension_mismatch', severity: 'danger', message: 'width mismatch' }
    const height: ComputedWarning = { kind: 'dimension_mismatch', severity: 'danger', message: 'height mismatch' }
    const expiry: ComputedWarning = { kind: 'expired', severity: 'danger', message: 'expired' }
    expect(dimensionAlertFingerprint([width, height, expiry]))
      .toBe(dimensionAlertFingerprint([height, width]))
    expect(dimensionAlertFingerprint([expiry])).toBeNull()
  })

  it('changes when the mismatch changes so a materially new alert can send', () => {
    const first: ComputedWarning = { kind: 'dimension_mismatch', severity: 'danger', message: 'permit width 11ft; trip width 12ft' }
    const changed: ComputedWarning = { kind: 'dimension_mismatch', severity: 'danger', message: 'permit width 10ft; trip width 12ft' }
    expect(dimensionAlertFingerprint([first])).not.toBe(dimensionAlertFingerprint([changed]))
  })
})
