import { describe, it, expect, beforeEach } from 'vitest'
import { evaluateVelocity, _resetVelocityMap } from './velocity.js'

describe('evaluateVelocity', () => {
  beforeEach(() => {
    _resetVelocityMap()
  })

  it('empty ipHash: allow attribution', () => {
    expect(evaluateVelocity('', 0)).toEqual({
      isSuspicious: false,
      codes: [],
      setCookie: true,
    })
  })

  it('burst over threshold in same window: velocity block', () => {
    const ipHash = 'abcd1234abcd1234'
    const t0 = 1_700_000_000_000

    for (let i = 0; i < 10; i++) {
      expect(evaluateVelocity(ipHash, t0)).toEqual({
        isSuspicious: false,
        codes: [],
        setCookie: true,
      })
    }

    expect(evaluateVelocity(ipHash, t0)).toEqual({
      isSuspicious: true,
      codes: ['VELOCITY_BURST'],
      setCookie: false,
    })
  })
})
