Skip to content

Commit fd8d4c5

Browse files
pankajjsyesyash
authored andcommitted
fix: Add support to fetch onboarding extension request (#2331)
* fix: Add support to fetch onboarding extension by requestedBy field - Add requestedBy field in the fetch query - Add tests to verify the chanes * fix: Add changes under dev flag and fix failing tests * chore: fix typo
1 parent 1e8194a commit fd8d4c5

File tree

5 files changed

+92
-7
lines changed

5 files changed

+92
-7
lines changed

middlewares/validators/requests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export const getRequestsMiddleware = async (req: OooRequestCreateRequest, res: O
8484
id: joi.string().optional(),
8585
type: joi
8686
.string()
87-
.valid(REQUEST_TYPE.OOO, REQUEST_TYPE.EXTENSION, REQUEST_TYPE.TASK, REQUEST_TYPE.ALL)
87+
.valid(REQUEST_TYPE.OOO, REQUEST_TYPE.EXTENSION, REQUEST_TYPE.TASK, REQUEST_TYPE.ALL, REQUEST_TYPE.ONBOARDING)
8888
.optional(),
8989
requestedBy: joi.string().insensitive().optional(),
9090
state: joi

models/requests.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ export const updateRequest = async (id: string, body: any, lastModifiedBy: strin
7171

7272
export const getRequests = async (query: any) => {
7373
let { id, type, requestedBy, state, prev, next, page, size = SIZE } = query;
74+
const dev = query.dev === "true";
75+
7476
size = parseInt(size);
7577
page = parseInt(page);
7678
try {
@@ -86,11 +88,15 @@ export const getRequests = async (query: any) => {
8688
...requestDoc.data(),
8789
};
8890
}
89-
90-
if (requestedBy) {
91+
92+
if(requestedBy && dev){
93+
requestQuery = requestQuery.where("requestedBy", "==", requestedBy);
94+
}
95+
else if (requestedBy) {
9196
const requestedByUserId = await getUserId(requestedBy);
9297
requestQuery = requestQuery.where("requestedBy", "==", requestedByUserId);
9398
}
99+
94100
if (type) {
95101
requestQuery = requestQuery.where("type", "==", type);
96102
}

test/integration/onboardingExtension.test.ts

Lines changed: 81 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import {
1010
REQUEST_ALREADY_PENDING,
1111
REQUEST_STATE, REQUEST_TYPE,
1212
ONBOARDING_REQUEST_CREATED_SUCCESSFULLY,
13-
UNAUTHORIZED_TO_CREATE_ONBOARDING_EXTENSION_REQUEST
13+
UNAUTHORIZED_TO_CREATE_ONBOARDING_EXTENSION_REQUEST,
14+
REQUEST_FETCHED_SUCCESSFULLY
1415
} from "../../constants/requests";
1516
const { generateToken } = require("../../test/utils/generateBotToken");
1617
import app from "../../server";
@@ -299,4 +300,82 @@ describe("/requests Onboarding Extension", () => {
299300
.to.equal(new Date(currentDate + (body.numberOfDays*24*60*60*1000)).toDateString());
300301
})
301302
})
302-
});
303+
304+
describe("GET /requests",() => {
305+
const getEndpoint = "/requests";
306+
const username = userData[4].username;
307+
308+
beforeEach(async () => {
309+
await addUser(userData[4]);
310+
});
311+
312+
afterEach(async () => {
313+
await cleanDb();
314+
});
315+
316+
it("should return 204 content when onboarding extension request does not exist", (done) => {
317+
requestsQuery.createRequest({ type: REQUEST_TYPE.OOO });
318+
chai.request(app)
319+
.get(`${getEndpoint}?type=ONBOARDING`)
320+
.end((err, res) => {
321+
if (err) return done(err);
322+
expect(res.statusCode).to.equal(204);
323+
return done();
324+
});
325+
});
326+
327+
it("should fetch onboarding extension request by requestedBy field", (done) => {
328+
requestsQuery.createRequest({ type: REQUEST_TYPE.ONBOARDING, requestedBy: username });
329+
chai.request(app)
330+
.get(`${getEndpoint}?requestedBy=${username}&type=ONBOARDING&dev=true`)
331+
.end((err, res) => {
332+
if (err) return done(err);
333+
expect(res.statusCode).to.equal(200);
334+
expect(res.body.message).to.equal(REQUEST_FETCHED_SUCCESSFULLY);
335+
expect(res.body.data[0].type).to.equal(REQUEST_TYPE.ONBOARDING);
336+
expect(res.body.data[0].requestedBy).to.equal(username);
337+
return done();
338+
});
339+
});
340+
341+
it("should return 204 response when onboarding extension request does not exist for a user", (done) => {
342+
requestsQuery.createRequest({ type: REQUEST_TYPE.OOO, requestedBy: username });
343+
chai.request(app)
344+
.get(`${getEndpoint}?requestedBy=${username}&type=ONBOARDING`)
345+
.end((err, res) => {
346+
if (err) return done(err);
347+
expect(res.statusCode).to.equal(204);
348+
return done();
349+
});
350+
});
351+
352+
it("should fetch onboarding extension request by type field", (done) => {
353+
requestsQuery.createRequest({ type: REQUEST_TYPE.ONBOARDING });
354+
chai.request(app)
355+
.get(`${getEndpoint}?type=ONBOARDING`)
356+
.end((err, res) => {
357+
if (err) return done(err);
358+
expect(res.statusCode).to.equal(200);
359+
expect(res.body.message).to.equal(REQUEST_FETCHED_SUCCESSFULLY);
360+
expect(res.body.data.length).to.equal(1);
361+
expect(res.body.data[0].type).to.equal(REQUEST_TYPE.ONBOARDING);
362+
return done();
363+
});
364+
});
365+
366+
it("should fetch onboarding extension request by state field", (done) => {
367+
requestsQuery.createRequest({ type: REQUEST_TYPE.ONBOARDING, state: REQUEST_STATE.APPROVED });
368+
chai.request(app)
369+
.get(`${getEndpoint}?state=APPROVED`)
370+
.end((err, res) => {
371+
if (err) return done(err);
372+
expect(res.statusCode).to.equal(200);
373+
expect(res.body.message).to.equal(REQUEST_FETCHED_SUCCESSFULLY);
374+
expect(res.body.data.length).to.equal(1);
375+
expect(res.body.data[0].type).to.equal(REQUEST_TYPE.ONBOARDING);
376+
expect(res.body.data[0].state).to.equal(REQUEST_STATE.APPROVED);
377+
return done();
378+
});
379+
});
380+
});
381+
});

test/integration/requests.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ describe("/requests OOO", function () {
356356
.end(function (err, res) {
357357
expect(res).to.have.status(400);
358358
expect(res.body.error).to.equal("Bad Request");
359-
expect(res.body.message).to.equal('"type" must be one of [OOO, EXTENSION, TASK, ALL]');
359+
expect(res.body.message).to.equal('"type" must be one of [OOO, EXTENSION, TASK, ALL, ONBOARDING]');
360360
done();
361361
});
362362
});

test/unit/models/requests.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ describe("models/oooRequests", () => {
130130
it("Should return a list of all the requests by specific user ", async () => {
131131
const oooRequestBodyData = { ...createOooRequests, requestedBy: testUserId };
132132
await createRequest(oooRequestBodyData);
133-
const query = { dev: "true", requestedBy: userData[16].username };
133+
const query = { requestedBy: userData[16].username };
134134
const oooRequestData = await getRequests(query);
135135
expect(oooRequestData.allRequests).to.have.lengthOf(1);
136136
expect(oooRequestData.allRequests[0].requestedBy).to.be.equal(testUserId);

0 commit comments

Comments
 (0)