import { describe, it, expect, beforeEach } from 'vitest'; import { createRole } from '../../test/factories/role'; import roleSerializer from './role'; import permissionSerializer from './permission'; import { createPermission } from '../../test/factories/permission'; describe('roleSerializer', () => { let role, permissionOne, permissionTwo; beforeEach(async () => { role = await createRole(); permissionOne = await createPermission({ roleId: role.id, action: 'read', subject: 'User', }); permissionTwo = await createPermission({ roleId: role.id, action: 'read', subject: 'Role', }); }); it('should return role data', async () => { const expectedPayload = { id: role.id, name: role.name, key: role.key, description: role.description, createdAt: role.createdAt.getTime(), updatedAt: role.updatedAt.getTime(), isAdmin: role.isAdmin, }; expect(roleSerializer(role)).toEqual(expectedPayload); }); it('should return role data with the permissions', async () => { role.permissions = [permissionOne, permissionTwo]; const expectedPayload = { permissions: [ permissionSerializer(permissionOne), permissionSerializer(permissionTwo), ], }; expect(roleSerializer(role)).toMatchObject(expectedPayload); }); });