import { describe, expect, it } from 'vitest'
import { PERMISSION_KEYS, SYSTEM_ROLE_PERMISSIONS } from '../src/seed/permission-keys'

describe('inventory permission keys', () => {
  it('keeps every permission key unique', () => {
    expect(new Set(PERMISSION_KEYS).size).toBe(PERMISSION_KEYS.length)
  })

  it('registers the inventory read/write/manage permission set', () => {
    expect(PERMISSION_KEYS).toEqual(
      expect.arrayContaining(['inventory:read', 'inventory:write', 'inventory:manage']),
    )
  })

  it('grants system roles the intended inventory access levels', () => {
    expect(SYSTEM_ROLE_PERMISSIONS.OWNER).toEqual(
      expect.arrayContaining(['inventory:read', 'inventory:write', 'inventory:manage']),
    )
    expect(SYSTEM_ROLE_PERMISSIONS.ADMIN).toEqual(
      expect.arrayContaining(['inventory:read', 'inventory:write', 'inventory:manage']),
    )
    expect(SYSTEM_ROLE_PERMISSIONS.MEMBER).toEqual(
      expect.arrayContaining(['inventory:read', 'inventory:write']),
    )
    expect(SYSTEM_ROLE_PERMISSIONS.MEMBER).not.toContain('inventory:manage')
    expect(SYSTEM_ROLE_PERMISSIONS.VIEWER).toContain('inventory:read')
    expect(SYSTEM_ROLE_PERMISSIONS.VIEWER).not.toEqual(
      expect.arrayContaining(['inventory:write', 'inventory:manage']),
    )
    expect(SYSTEM_ROLE_PERMISSIONS.CONTRACTOR).not.toEqual(
      expect.arrayContaining(['inventory:read', 'inventory:write', 'inventory:manage']),
    )
    expect(SYSTEM_ROLE_PERMISSIONS.ACCOUNTANT).not.toEqual(
      expect.arrayContaining(['inventory:read', 'inventory:write', 'inventory:manage']),
    )
  })
})
