mirror of
https://github.com/hexastack/hexabot
synced 2025-06-26 18:27:28 +00:00
Merge pull request #85 from Hexastack/fix/delete-role
fix: delete role permissions
This commit is contained in:
commit
9d2b6d57a4
@ -24,8 +24,8 @@ import { PermissionRepository } from '../repositories/permission.repository';
|
|||||||
import { RoleRepository } from '../repositories/role.repository';
|
import { RoleRepository } from '../repositories/role.repository';
|
||||||
import { UserRepository } from '../repositories/user.repository';
|
import { UserRepository } from '../repositories/user.repository';
|
||||||
import { PermissionModel } from '../schemas/permission.schema';
|
import { PermissionModel } from '../schemas/permission.schema';
|
||||||
import { RoleModel, Role } from '../schemas/role.schema';
|
import { Role, RoleModel } from '../schemas/role.schema';
|
||||||
import { UserModel, User } from '../schemas/user.schema';
|
import { User, UserModel } from '../schemas/user.schema';
|
||||||
|
|
||||||
describe('RoleRepository', () => {
|
describe('RoleRepository', () => {
|
||||||
let roleRepository: RoleRepository;
|
let roleRepository: RoleRepository;
|
||||||
@ -34,6 +34,7 @@ describe('RoleRepository', () => {
|
|||||||
let roleModel: Model<Role>;
|
let roleModel: Model<Role>;
|
||||||
let role: Role;
|
let role: Role;
|
||||||
let users: User[];
|
let users: User[];
|
||||||
|
let roleToDelete: Role;
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
const module: TestingModule = await Test.createTestingModule({
|
const module: TestingModule = await Test.createTestingModule({
|
||||||
@ -57,6 +58,9 @@ describe('RoleRepository', () => {
|
|||||||
users = (await userRepository.findAll()).filter((user) =>
|
users = (await userRepository.findAll()).filter((user) =>
|
||||||
user.roles.includes(role.id),
|
user.roles.includes(role.id),
|
||||||
);
|
);
|
||||||
|
roleToDelete = await roleRepository.findOne({
|
||||||
|
name: 'manager',
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(async () => {
|
afterAll(async () => {
|
||||||
@ -106,4 +110,31 @@ describe('RoleRepository', () => {
|
|||||||
expect(result).toEqualPayload(rolesWithPermissionsAndUsers);
|
expect(result).toEqualPayload(rolesWithPermissionsAndUsers);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('deleteOne', () => {
|
||||||
|
it('should delete a role by id', async () => {
|
||||||
|
jest.spyOn(roleModel, 'deleteOne');
|
||||||
|
const result = await roleRepository.deleteOne(roleToDelete.id);
|
||||||
|
|
||||||
|
expect(roleModel.deleteOne).toHaveBeenCalledWith({
|
||||||
|
_id: roleToDelete.id,
|
||||||
|
});
|
||||||
|
expect(result).toEqual({
|
||||||
|
acknowledged: true,
|
||||||
|
deletedCount: 1,
|
||||||
|
});
|
||||||
|
|
||||||
|
const permissions = await permissionRepository.find({
|
||||||
|
role: roleToDelete.id,
|
||||||
|
});
|
||||||
|
expect(permissions.length).toEqual(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fail to delete a role that does not exist', async () => {
|
||||||
|
expect(await roleRepository.deleteOne(roleToDelete.id)).toEqual({
|
||||||
|
acknowledged: true,
|
||||||
|
deletedCount: 0,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -96,7 +96,7 @@ export class RoleRepository extends BaseRepository<
|
|||||||
*
|
*
|
||||||
* @returns The result of the delete operation.
|
* @returns The result of the delete operation.
|
||||||
*/
|
*/
|
||||||
async deleteOneQuery(id: string) {
|
async deleteOne(id: string) {
|
||||||
const result = await this.model.deleteOne({ _id: id }).exec();
|
const result = await this.model.deleteOne({ _id: id }).exec();
|
||||||
if (result.deletedCount > 0) {
|
if (result.deletedCount > 0) {
|
||||||
await this.permissionModel.deleteMany({ role: id });
|
await this.permissionModel.deleteMany({ role: id });
|
||||||
|
Loading…
Reference in New Issue
Block a user