import { describe, expect, it } from 'vitest'
import { assertCanManageMenus } from './authz.js'
import { MenuAuthorizationError } from './errors.js'
import { isMenuAuthorizationError } from './errors.js'

describe('assertCanManageMenus', () => {
  it('allows actors with canManageMenus', () => {
    expect(() => assertCanManageMenus({ id: 'u', canManageMenus: true })).not.toThrow()
  })

  it('rejects missing or false capability', () => {
    expect(() => assertCanManageMenus({ id: 'u' })).toThrow(MenuAuthorizationError)
    expect(() => assertCanManageMenus({ id: 'u', canManageMenus: false })).toThrow(MenuAuthorizationError)
    try {
      assertCanManageMenus({ id: 'u' })
    } catch (e) {
      expect(isMenuAuthorizationError(e)).toBe(true)
    }
  })
})
