Skip to content

Commit 680fe42

Browse files
committed
refactor: ooo acknowledge controller
1 parent b22e969 commit 680fe42

File tree

7 files changed

+49
-28
lines changed

7 files changed

+49
-28
lines changed

constants/requests.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const ERROR_WHILE_CREATING_REQUEST = "Error while creating request";
4343
export const ERROR_WHILE_UPDATING_REQUEST = "Error while updating request";
4444
export const ERROR_WHILE_ACKNOWLEDGING_REQUEST = "Error while acknowledging request";
4545

46+
export const REQUEST_ID_REQUIRED = "Request id is required";
4647
export const REQUEST_DOES_NOT_EXIST = "Request does not exist";
4748
export const REQUEST_ALREADY_PENDING = "Request already exists please wait for approval or rejection";
4849
export const UNAUTHORIZED_TO_CREATE_OOO_REQUEST = "Unauthorized to create OOO request";

controllers/oooRequests.ts

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,16 @@ import {
1414
OOO_STATUS_ALREADY_EXIST,
1515
UNAUTHORIZED_TO_UPDATE_REQUEST,
1616
ERROR_WHILE_ACKNOWLEDGING_REQUEST,
17+
REQUEST_ID_REQUIRED,
1718
} from "../constants/requests";
1819
import { statusState } from "../constants/userStatus";
1920
import { logType } from "../constants/logs";
2021
import { addLog } from "../models/logs";
2122
import { getRequestByKeyValues, getRequests, updateRequest } from "../models/requests";
2223
import { createUserFutureStatus } from "../models/userFutureStatus";
2324
import { getUserStatus, addFutureStatus } from "../models/userStatus";
24-
import { createOooRequest, validateUserStatus, acknowledgeOooRequest } from "../services/oooRequest";
25+
import { createOooRequest, validateUserStatus } from "../services/oooRequest";
26+
import * as oooRequestService from "../services/oooRequest";
2527
import { CustomResponse } from "../typeDefinitions/global";
2628
import { AcknowledgeOooRequest, OooRequestCreateRequest, OooRequestResponse, OooStatusRequest } from "../types/oooRequest";
2729
import { UpdateRequest } from "../types/requests";
@@ -159,30 +161,30 @@ export const updateOooRequestController = async (req: UpdateRequest, res: Custom
159161
* @param {OooRequestResponse} res - The response object.
160162
* @returns {Promise<OooRequestResponse>} Resolves with success or failure.
161163
*/
162-
export const acknowledgeOooRequestController = async (
164+
export const acknowledgeOooRequest = async (
163165
req: AcknowledgeOooRequest,
164166
res: OooRequestResponse,
165167
next: NextFunction
166168
)
167169
: Promise<OooRequestResponse> => {
170+
try {
171+
const dev = req.query.dev === "true";
172+
if(!dev) return res.boom.notImplemented("Feature not implemented");
168173

169-
const dev = req.query.dev === "true";
170-
171-
if(!dev) return res.boom.notImplemented("Feature not implemented");
172-
173-
const isSuperuser = req.userData.roles?.super_user;
174-
175-
if (!isSuperuser) {
176-
return res.boom.forbidden(UNAUTHORIZED_TO_UPDATE_REQUEST);
177-
}
174+
const isSuperuser = req.userData?.roles?.super_user;
175+
if (!isSuperuser) {
176+
return res.boom.forbidden(UNAUTHORIZED_TO_UPDATE_REQUEST);
177+
}
178178

179-
const requestBody = req.body;
180-
const superUserId = req.userData.id;
181-
const requestId = req.params.id;
179+
const requestBody = req.body;
180+
const superUserId = req.userData.id;
181+
const requestId = req.params.id;
182182

183-
try {
183+
if (!requestId) {
184+
return res.boom.badRequest(REQUEST_ID_REQUIRED);
185+
}
184186

185-
const response = await acknowledgeOooRequest(requestId, requestBody, superUserId);
187+
const response = await oooRequestService.acknowledgeOooRequest(requestId, requestBody, superUserId);
186188

187189
return res.status(200).json({
188190
message: response.message,
@@ -191,5 +193,6 @@ export const acknowledgeOooRequestController = async (
191193
catch(error){
192194
logger.error(ERROR_WHILE_ACKNOWLEDGING_REQUEST, error);
193195
next(error);
196+
return res;
194197
}
195198
};

controllers/requests.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
} from "../constants/requests";
66
import { getRequests } from "../models/requests";
77
import { getPaginatedLink } from "../utils/helper";
8-
import { acknowledgeOooRequestController, createOooRequestController, updateOooRequestController } from "./oooRequests";
8+
import { acknowledgeOooRequest, createOooRequestController, updateOooRequestController } from "./oooRequests";
99
import { AcknowledgeOooRequest, OooRequestCreateRequest, OooRequestResponse } from "../types/oooRequest";
1010
import { CustomResponse } from "../typeDefinitions/global";
1111
import { ExtensionRequestRequest, ExtensionRequestResponse } from "../types/extensionRequests";
@@ -125,7 +125,7 @@ export const updateRequestBeforeAcknowledgedController = async (req: Request, re
125125

126126
switch(type){
127127
case REQUEST_TYPE.OOO:
128-
await acknowledgeOooRequestController(req as AcknowledgeOooRequest, res as OooRequestResponse, next);
128+
await acknowledgeOooRequest(req as AcknowledgeOooRequest, res as OooRequestResponse, next);
129129
break;
130130
case REQUEST_TYPE.ONBOARDING:
131131
await updateOnboardingExtensionRequestController(req as UpdateOnboardingExtensionRequest, res as OnboardingExtensionResponse);

middlewares/validators/oooRequests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ const schema = joi
6767
* @param {NextFunction} next - The next middleware function to call if validation succeeds.
6868
* @returns {Promise<void>} Resolves or sends errors.
6969
*/
70-
export const acknowledgeOooRequestsValidator = async (
70+
export const acknowledgeOooRequest = async (
7171
req: AcknowledgeOooRequest,
7272
res: OooRequestResponse,
7373
next: NextFunction

middlewares/validators/requests.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import joi from "joi";
22
import { NextFunction } from "express";
33
import { REQUEST_STATE, REQUEST_TYPE } from "../../constants/requests";
44
import { AcknowledgeOooRequest, OooRequestCreateRequest, OooRequestResponse } from "../../types/oooRequest";
5-
import { acknowledgeOooRequestsValidator, createOooStatusRequestValidator } from "./oooRequests";
5+
import { acknowledgeOooRequest, createOooStatusRequestValidator } from "./oooRequests";
66
import { createExtensionRequestValidator } from "./extensionRequestsv2";
77
import {createTaskRequestValidator} from "./taskRequests";
88
import { ExtensionRequestRequest, ExtensionRequestResponse } from "../../types/extensionRequests";
@@ -139,7 +139,7 @@ export const updateRequestValidator = async (
139139

140140
switch (type) {
141141
case REQUEST_TYPE.OOO:
142-
await acknowledgeOooRequestsValidator(
142+
await acknowledgeOooRequest(
143143
req,
144144
res as OooRequestResponse, next);
145145
break;

test/unit/middlewares/oooRequests.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const { expect } = chai;
44

55
import {
66
createOooStatusRequestValidator,
7-
acknowledgeOooRequestsValidator,
7+
acknowledgeOooRequest,
88
} from "./../../../middlewares/validators/oooRequests";
99
import { testAcknowledgeOooRequest, validOooStatusRequests, validOooStatusUpdate } from "../../fixtures/oooRequest/oooRequest";
1010
import _ from "lodash";
@@ -97,7 +97,7 @@ describe("OOO Status Request Validators", function () {
9797
body: { ...testAcknowledgeOooRequest, type: "XYZ"}
9898
};
9999

100-
await acknowledgeOooRequestsValidator(req, res, nextSpy);
100+
await acknowledgeOooRequest(req, res, nextSpy);
101101
expect(nextSpy.notCalled).to.be.true;
102102
});
103103

@@ -106,7 +106,7 @@ describe("OOO Status Request Validators", function () {
106106
body: { ...testAcknowledgeOooRequest, status: "PENDING"}
107107
};
108108

109-
await acknowledgeOooRequestsValidator(req, res, nextSpy);
109+
await acknowledgeOooRequest(req, res, nextSpy);
110110
expect(nextSpy.notCalled).to.be.true;
111111
});
112112

@@ -115,7 +115,7 @@ describe("OOO Status Request Validators", function () {
115115
body: _.omit(testAcknowledgeOooRequest, "comment")
116116
};
117117
res = {};
118-
await acknowledgeOooRequestsValidator(req, res, nextSpy);
118+
await acknowledgeOooRequest(req, res, nextSpy);
119119
expect(nextSpy.calledOnce).to.be.true;
120120
});
121121

@@ -124,7 +124,7 @@ describe("OOO Status Request Validators", function () {
124124
body: testAcknowledgeOooRequest
125125
};
126126
res = {};
127-
await acknowledgeOooRequestsValidator(req, res, nextSpy);
127+
await acknowledgeOooRequest(req, res, nextSpy);
128128
expect(nextSpy.calledOnce).to.be.true;
129129
});
130130
});

test/unit/models/requests.test.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import { expect } from "chai";
22
import cleanDb from "../../utils/cleanDb";
3-
import { createRequest, getRequests, updateRequest, getRequestByKeyValues } from "../../../models/requests";
3+
import { createRequest, getRequests, updateRequest, getRequestByKeyValues, getRequestById } from "../../../models/requests";
44
import {
55
createOooRequests,
66
createOooRequests2,
7+
createOooRequests3,
78
createOooStatusRequests,
89
updateOooApprovedRequests,
910
updateOooRejectedRequests,
1011
} from "./../../fixtures/oooRequest/oooRequest";
11-
import { REQUEST_STATE, REQUEST_TYPE } from "../../../constants/requests";
12+
import { REQUEST_DOES_NOT_EXIST, REQUEST_STATE, REQUEST_TYPE } from "../../../constants/requests";
1213
import userDataFixture from "./../../fixtures/user/user";
1314
import addUser from "../../utils/addUser";
1415
const userData = userDataFixture();
@@ -179,4 +180,20 @@ describe("models/oooRequests", () => {
179180
expect(oooRequestData).to.be.equal(null);
180181
});
181182
});
183+
184+
describe("getRequestById", () => {
185+
186+
it("should return request using request id", async () => {
187+
const oooRequest = await createRequest(createOooRequests3);
188+
const response = await getRequestById(oooRequest.id);
189+
expect(response).to.deep.include(createOooRequests3);
190+
});
191+
192+
it("should return REQUEST_DOES_NOT_EXIST for invalid request id", async () => {
193+
await getRequestById("111111111111").catch((error) => {
194+
expect(error).to.be.not.undefined;
195+
expect(error.message).to.equal(REQUEST_DOES_NOT_EXIST);
196+
});
197+
});
198+
});
182199
});

0 commit comments

Comments
 (0)