Skip to content

Commit 5540a2e

Browse files
committed
feat: acknowledge OOO request
2 parents ebb4ee4 + 0e60e6d commit 5540a2e

File tree

8 files changed

+91
-64
lines changed

8 files changed

+91
-64
lines changed

controllers/oooRequests.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,18 +138,18 @@ export const acknowledgeOOORequestController = async (
138138
const requestBody = req.body;
139139
const userId = req.userData.id;
140140
const requestId = req.params.id;
141-
const isSuperuser = req.userData.roles.super_user === true;
141+
const isSuperuser = req.userData.roles.super_user;
142142

143-
if (isSuperuser === false) {
143+
if (!isSuperuser) {
144144
return res.boom.unauthorized(UNAUTHORIZED_TO_ACKNOWLEDGE_OOO_REQUEST);
145145
}
146146

147147
try {
148148

149-
const response = acknowledgeOOORequest(requestId, requestBody, userId);
149+
const response = await acknowledgeOOORequest(requestId, requestBody, userId);
150150

151151
return res.status(200).json({
152-
message: (await response).message,
152+
message: response.message,
153153
});
154154
}
155155
catch(error){

controllers/requests.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,10 @@ export const getRequestsController = async (req: any, res: any) => {
123123
export const updateRequestBeforeAcknowledgedController = async (req: Request, res: CustomResponse, next: NextFunction) => {
124124
const type = req.body.type;
125125

126-
if (type === undefined) {
127-
await acknowledgeOOORequestController(req as AcknowledgeOOORequest, res as OooRequestResponse, next);
128-
return;
129-
}
130-
131126
switch(type){
127+
case REQUEST_TYPE.OOO:
128+
await acknowledgeOOORequestController(req as AcknowledgeOOORequest, res as OooRequestResponse, next);
129+
break;
132130
case REQUEST_TYPE.ONBOARDING:
133131
await updateOnboardingExtensionRequestController(req as UpdateOnboardingExtensionRequest, res as OnboardingExtensionResponse);
134132
break;

middlewares/validators/oooRequests.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,10 @@ export const acknowledgeOOORequestsValidator = async (
5858
.required()
5959
.messages({
6060
"any.only": "status must be APPROVED or REJECTED",
61-
})
61+
}),
62+
type: joi.string().equal(REQUEST_TYPE.OOO).required().messages({
63+
"type.any": "type is required",
64+
})
6265
});
6366

6467
try {
@@ -67,6 +70,6 @@ export const acknowledgeOOORequestsValidator = async (
6770
} catch (error) {
6871
const errorMessages = error.details.map((detail:any) => detail.message);
6972
logger.error(`Error while validating request payload : ${errorMessages}`);
70-
res.boom.badRequest(errorMessages);
73+
return res.boom.badRequest(errorMessages);
7174
}
7275
};

middlewares/validators/requests.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export const getRequestsMiddleware = async (req: OooRequestCreateRequest, res: O
125125
/**
126126
* Validates update requests based on their type.
127127
*
128-
* @param {UpdateOnboardingExtensionRequest} req - Request object.
128+
* @param {UpdateOnboardingExtensionRequest | AcknowledgeOOORequest} req - Request object.
129129
* @param {CustomResponse} res - Response object.
130130
* @param {NextFunction} next - Next middleware if valid.
131131
* @returns {Promise<void>} Resolves or sends errors.
@@ -137,12 +137,12 @@ export const updateRequestValidator = async (
137137
): Promise<void> => {
138138
const type = req.body.type;
139139

140-
if (type === undefined) {
141-
await acknowledgeOOORequestsValidator(req, res as OooRequestResponse, next);
142-
return;
143-
}
144-
145140
switch (type) {
141+
case REQUEST_TYPE.OOO:
142+
await acknowledgeOOORequestsValidator(
143+
req,
144+
res as OooRequestResponse, next);
145+
break;
146146
case REQUEST_TYPE.ONBOARDING:
147147
await updateOnboardingExtensionRequestValidator(
148148
req,

services/oooRequest.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export const acknowledgeOOORequest = async (
7676

7777
const requestData = request.data();
7878

79-
await validateOOOAcknowledgeRequest(requestId, requestData.type, requestData.status);
79+
await validateOOOAcknowledgeRequest(requestId, requestData.type, requestData.status);
8080

8181
const requestResult = await updateRequest(requestId, body, userId, REQUEST_TYPE.OOO);
8282

test/fixtures/oooRequest/oooRequest.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ export const createOooStatusRequests = {
1313

1414
export const validOooStatusRequests = {
1515
type: "OOO",
16-
from: Date.now() + 100000,
17-
until: Date.now() + 200000,
16+
from: Date.now() + 1 * 24 * 60 * 60 * 1000,
17+
until: Date.now() + 5 * 24 * 60 * 60 * 1000,
1818
message: "Out of office for personal reasons.",
1919
state: REQUEST_STATE.PENDING,
2020
};

test/integration/onboardingExtension.test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ describe("/requests Onboarding Extension", () => {
3939
let testUserId: string;
4040
let testUserIdForInvalidDiscordJoinedDate: string;
4141
let testUserDiscordIdForInvalidDiscordJoinedDate: string = "54321";
42+
let botToken: string;
4243

4344
const testUserDiscordId: string = "654321";
4445
const extensionRequest = {
@@ -47,15 +48,16 @@ describe("/requests Onboarding Extension", () => {
4748
requestNumber: 1
4849
};
4950
const postEndpoint = "/requests";
50-
const botToken = generateToken({name: CLOUDFLARE_WORKER})
5151
const body: CreateOnboardingExtensionBody = {
5252
type: REQUEST_TYPE.ONBOARDING,
5353
numberOfDays: 5,
5454
reason: "This is the reason",
5555
userId: testUserDiscordId,
5656
};
57-
57+
5858
beforeEach(async () => {
59+
botToken = generateToken({name: CLOUDFLARE_WORKER});
60+
5961
testUserId = await addUser({
6062
...userData[6],
6163
discordId: testUserDiscordId,

0 commit comments

Comments
 (0)