fix: feedback resolve

This commit is contained in:
mirarifhasan
2024-02-20 17:53:28 +06:00
committed by Andrew Bastin
parent efc98588d9
commit 70665dae03
3 changed files with 16 additions and 21 deletions

View File

@@ -75,7 +75,6 @@ export class AdminResolver {
}) })
@UseGuards(GqlAuthGuard, GqlAdminGuard) @UseGuards(GqlAuthGuard, GqlAdminGuard)
async revokeUserInvitationsByAdmin( async revokeUserInvitationsByAdmin(
@GqlAdmin() adminUser: Admin,
@Args({ @Args({
name: 'inviteeEmails', name: 'inviteeEmails',
description: 'Invitee Emails', description: 'Invitee Emails',
@@ -83,10 +82,7 @@ export class AdminResolver {
}) })
inviteeEmails: string[], inviteeEmails: string[],
): Promise<boolean> { ): Promise<boolean> {
const invite = await this.adminService.revokeUserInvites( const invite = await this.adminService.revokeUserInvitations(inviteeEmails);
inviteeEmails,
adminUser.uid,
);
if (E.isLeft(invite)) throwErr(invite.left); if (E.isLeft(invite)) throwErr(invite.left);
return invite.right; return invite.right;
} }

View File

@@ -105,7 +105,7 @@ describe('AdminService', () => {
test('should resolve right and apply pagination correctly', async () => { test('should resolve right and apply pagination correctly', async () => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore // @ts-ignore
mockPrisma.user.findMany.mockResolvedValue([]); mockPrisma.user.findMany.mockResolvedValue([dbAdminUsers[0]]);
// @ts-ignore // @ts-ignore
mockPrisma.invitedUsers.findMany.mockResolvedValue(invitedUsers); mockPrisma.invitedUsers.findMany.mockResolvedValue(invitedUsers);
@@ -120,7 +120,7 @@ describe('AdminService', () => {
where: { where: {
NOT: { NOT: {
inviteeEmail: { inviteeEmail: {
in: [], in: [dbAdminUsers[0].email],
}, },
}, },
}, },
@@ -131,7 +131,7 @@ describe('AdminService', () => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore // @ts-ignore
mockPrisma.user.findMany.mockResolvedValue([]); mockPrisma.user.findMany.mockResolvedValue([dbAdminUsers[0]]);
// @ts-ignore // @ts-ignore
mockPrisma.invitedUsers.findMany.mockResolvedValue(invitedUsers); mockPrisma.invitedUsers.findMany.mockResolvedValue(invitedUsers);
@@ -206,16 +206,15 @@ describe('AdminService', () => {
}); });
}); });
describe('revokeUserInvites', () => { describe('revokeUserInvitations', () => {
test('should resolve left and return error if email not invited', async () => { test('should resolve left and return error if email not invited', async () => {
mockPrisma.invitedUsers.deleteMany.mockRejectedValueOnce( mockPrisma.invitedUsers.deleteMany.mockRejectedValueOnce(
'RecordNotFound', 'RecordNotFound',
); );
const result = await adminService.revokeUserInvites( const result = await adminService.revokeUserInvitations([
['test@gmail.com'], 'test@gmail.com',
'adminUid', ]);
);
expect(result).toEqualLeft(USER_INVITATION_DELETION_FAILED); expect(result).toEqualLeft(USER_INVITATION_DELETION_FAILED);
}); });
@@ -224,10 +223,9 @@ describe('AdminService', () => {
const adminUid = 'adminUid'; const adminUid = 'adminUid';
mockPrisma.invitedUsers.deleteMany.mockResolvedValueOnce({ count: 1 }); mockPrisma.invitedUsers.deleteMany.mockResolvedValueOnce({ count: 1 });
const result = await adminService.revokeUserInvites( const result = await adminService.revokeUserInvitations([
[invitedUsers[0].inviteeEmail], invitedUsers[0].inviteeEmail,
adminUid, ]);
);
expect(mockPrisma.invitedUsers.deleteMany).toHaveBeenCalledWith({ expect(mockPrisma.invitedUsers.deleteMany).toHaveBeenCalledWith({
where: { where: {

View File

@@ -155,7 +155,7 @@ export class AdminService {
* @param adminUid Admin Uid * @param adminUid Admin Uid
* @returns an Either of boolean or error string * @returns an Either of boolean or error string
*/ */
async revokeUserInvites(inviteeEmails: string[], adminUid: string) { async revokeUserInvitations(inviteeEmails: string[]) {
try { try {
await this.prisma.invitedUsers.deleteMany({ await this.prisma.invitedUsers.deleteMany({
where: { where: {
@@ -414,6 +414,7 @@ export class AdminService {
* Remove a user account by UID * Remove a user account by UID
* @param userUid User UID * @param userUid User UID
* @returns an Either of boolean or error * @returns an Either of boolean or error
* @deprecated use removeUserAccounts instead
*/ */
async removeUserAccount(userUid: string) { async removeUserAccount(userUid: string) {
const user = await this.userService.findUserById(userUid); const user = await this.userService.findUserById(userUid);
@@ -476,9 +477,7 @@ export class AdminService {
const promiseResult = await Promise.allSettled(deletionPromises); const promiseResult = await Promise.allSettled(deletionPromises);
// step 4: revoke all the invites sent to the deleted users // step 4: revoke all the invites sent to the deleted users
await this.prisma.invitedUsers.deleteMany({ await this.revokeUserInvitations(deletedUserEmails);
where: { inviteeEmail: { in: deletedUserEmails } },
});
// step 5: return the result // step 5: return the result
promiseResult.forEach((result) => { promiseResult.forEach((result) => {
@@ -494,6 +493,7 @@ export class AdminService {
* Make a user an admin * Make a user an admin
* @param userUid User UID * @param userUid User UID
* @returns an Either of boolean or error * @returns an Either of boolean or error
* @deprecated use makeUsersAdmin instead
*/ */
async makeUserAdmin(userUID: string) { async makeUserAdmin(userUID: string) {
const admin = await this.userService.makeAdmin(userUID); const admin = await this.userService.makeAdmin(userUID);
@@ -516,6 +516,7 @@ export class AdminService {
* Remove user as admin * Remove user as admin
* @param userUid User UID * @param userUid User UID
* @returns an Either of boolean or error * @returns an Either of boolean or error
* @deprecated use demoteUsersByAdmin instead
*/ */
async removeUserAsAdmin(userUID: string) { async removeUserAsAdmin(userUID: string) {
const adminUsers = await this.userService.fetchAdminUsers(); const adminUsers = await this.userService.fetchAdminUsers();