feat: Add permissions to role serializer
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
|
import permissionSerializer from './permission';
|
||||||
|
|
||||||
const roleSerializer = (role) => {
|
const roleSerializer = (role) => {
|
||||||
return {
|
let roleData = {
|
||||||
id: role.id,
|
id: role.id,
|
||||||
name: role.name,
|
name: role.name,
|
||||||
key: role.key,
|
key: role.key,
|
||||||
@@ -8,6 +10,14 @@ const roleSerializer = (role) => {
|
|||||||
updatedAt: role.updatedAt,
|
updatedAt: role.updatedAt,
|
||||||
isAdmin: role.isAdmin,
|
isAdmin: role.isAdmin,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (role.permissions) {
|
||||||
|
roleData.permissions = role.permissions.map((permission) =>
|
||||||
|
permissionSerializer(permission)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return roleData;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default roleSerializer;
|
export default roleSerializer;
|
||||||
|
@@ -1,12 +1,25 @@
|
|||||||
import { describe, it, expect, beforeEach } from 'vitest';
|
import { describe, it, expect, beforeEach } from 'vitest';
|
||||||
import { createRole } from '../../test/factories/role';
|
import { createRole } from '../../test/factories/role';
|
||||||
import roleSerializer from './role';
|
import roleSerializer from './role';
|
||||||
|
import { createPermission } from '../../test/factories/permission';
|
||||||
|
|
||||||
describe('roleSerializer', () => {
|
describe('roleSerializer', () => {
|
||||||
let role;
|
let role, permissionOne, permissionTwo;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
role = await createRole();
|
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 () => {
|
it('should return role data', async () => {
|
||||||
@@ -22,4 +35,14 @@ describe('roleSerializer', () => {
|
|||||||
|
|
||||||
expect(roleSerializer(role)).toEqual(expectedPayload);
|
expect(roleSerializer(role)).toEqual(expectedPayload);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should return role data with the permissions', async () => {
|
||||||
|
role.permissions = [permissionOne, permissionTwo];
|
||||||
|
|
||||||
|
const expectedPayload = {
|
||||||
|
permissions: [permissionOne, permissionTwo],
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(roleSerializer(role)).toMatchObject(expectedPayload);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user