feat: subscription return response updated for moveUserRequest (#39)
* feat: subscription return response updated for moveUserRequest * feat: update test cases
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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', () => {
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user