import { describe, expect, it } from 'vitest'
import { presentAdminSession, presentAdminUser, presentPaginated } from './admin.presenter'

describe('admin.presenter', () => {
  it('removes admin secrets from user responses', () => {
    const result = presentAdminUser({
      id: 'admin_1',
      email: 'admin@example.com',
      role: 'SUPER_ADMIN',
      passwordHash: 'hash',
      totpSecret: 'secret',
    })

    expect(result).toEqual({ id: 'admin_1', email: 'admin@example.com', role: 'SUPER_ADMIN' })
  })

  it('wraps sessions without leaking credentials', () => {
    expect(presentAdminSession({ id: 'admin_1', passwordHash: 'hash', totpSecret: 'secret' }, 'jwt-token')).toEqual({
      token: 'jwt-token',
      admin: { id: 'admin_1' },
    })
  })

  it('computes pagination metadata and preserves extra aggregate fields', () => {
    expect(presentPaginated([{ id: 'row_1' }], 41, 2, 20, { active: 11 })).toEqual({
      data: [{ id: 'row_1' }],
      total: 41,
      page: 2,
      pageSize: 20,
      totalPages: 3,
      active: 11,
    })
  })
})
