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', passwordResetToken: 'reset-token', passwordResetExpiresAt: new Date('2026-01-01T00:00:00.000Z'), emailVerificationToken: 'verify-token', }) 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', passwordResetToken: 'reset-token', }, '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, }) }) })