feat: subscription return response updated for moveUserRequest (#39)

* feat: subscription return response updated for moveUserRequest

* feat: update test cases
This commit is contained in:
Mir Arif Hasan
2023-03-13 16:45:51 +06:00
committed by GitHub
parent 7d3b2c064a
commit 8550c92e37
4 changed files with 32 additions and 13 deletions

View File

@@ -1,4 +1,7 @@
import { UserRequest } from 'src/user-request/user-request.model'; import {
UserRequest,
UserRequestReorderData,
} from 'src/user-request/user-request.model';
import { User } from 'src/user/user.model'; import { User } from 'src/user/user.model';
import { UserSettings } from 'src/user-settings/user-settings.model'; import { UserSettings } from 'src/user-settings/user-settings.model';
import { UserEnvironment } from '../user-environment/user-environments.model'; import { UserEnvironment } from '../user-environment/user-environments.model';
@@ -28,12 +31,9 @@ export type TopicDef = {
]: UserEnvironment; ]: UserEnvironment;
[topic: `user_environment/${string}/deleted_many`]: number; [topic: `user_environment/${string}/deleted_many`]: number;
[ [
topic: `user_request/${string}/${ topic: `user_request/${string}/${'created' | 'updated' | 'deleted'}`
| 'created'
| 'updated'
| 'deleted'
| 'moved'}`
]: UserRequest; ]: UserRequest;
[topic: `user_request/${string}/${'moved'}`]: UserRequestReorderData;
[ [
topic: `user_history/${string}/${'created' | 'updated' | 'deleted'}` topic: `user_history/${string}/${'created' | 'updated' | 'deleted'}`
]: UserHistory; ]: UserHistory;

View File

@@ -33,3 +33,18 @@ export class UserRequest {
}) })
createdOn: Date; createdOn: Date;
} }
@ObjectType()
export class UserRequestReorderData {
@Field({
description: 'User request being moved',
})
request: UserRequest;
@Field({
description:
'User request succeeding the request being moved in its new position',
nullable: true,
})
nextRequest?: UserRequest;
}

View File

@@ -760,7 +760,7 @@ describe('UserRequestService', () => {
expect(mockPubSub.publish).toHaveBeenCalledWith( expect(mockPubSub.publish).toHaveBeenCalledWith(
`user_request/${dbUserRequests[0].userUid}/moved`, `user_request/${dbUserRequests[0].userUid}/moved`,
userRequests[0], { request: userRequests[0], nextRequest: null },
); );
}); });
test('Should resolve left if finding the requests fails', () => { test('Should resolve left if finding the requests fails', () => {

View File

@@ -261,27 +261,31 @@ export class UserRequestService {
user, user,
); );
if (E.isLeft(twoRequests)) return twoRequests; if (E.isLeft(twoRequests)) return twoRequests;
const { request, nextRequest } = twoRequests.right; const { request: dbRequest, nextRequest: dbNextRequest } =
twoRequests.right;
const isTypeValidate = await this.validateTypeEqualityForMoveRequest( const isTypeValidate = await this.validateTypeEqualityForMoveRequest(
srcCollID, srcCollID,
destCollID, destCollID,
request, dbRequest,
nextRequest, dbNextRequest,
); );
if (E.isLeft(isTypeValidate)) return E.left(isTypeValidate.left); if (E.isLeft(isTypeValidate)) return E.left(isTypeValidate.left);
const updatedRequest = await this.reorderRequests( const updatedRequest = await this.reorderRequests(
srcCollID, srcCollID,
request, dbRequest,
destCollID, destCollID,
nextRequest, dbNextRequest,
); );
if (E.isLeft(updatedRequest)) return updatedRequest; if (E.isLeft(updatedRequest)) return updatedRequest;
const userRequest: UserRequest = this.cast(updatedRequest.right); const userRequest: UserRequest = this.cast(updatedRequest.right);
await this.pubsub.publish(`user_request/${user.uid}/moved`, userRequest); await this.pubsub.publish(`user_request/${user.uid}/moved`, {
request: userRequest,
nextRequest: dbNextRequest ? this.cast(dbNextRequest) : null,
});
return E.right(userRequest); return E.right(userRequest);
} }