Skip to content

Commit b22e969

Browse files
committed
fix: mocked dependencies for ooo request service
1 parent aacbff2 commit b22e969

File tree

1 file changed

+63
-44
lines changed

1 file changed

+63
-44
lines changed

test/unit/services/oooRequest.test.ts

Lines changed: 63 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ import userDataFixture from "../../fixtures/user/user";
2727
import * as logService from "../../../services/logService";
2828
import { testAcknowledgeOooRequest, createOooRequests3 } from "../../fixtures/oooRequest/oooRequest";
2929
import { createRequest } from "../../../models/requests";
30+
import * as requestModel from "../../../models/requests";
31+
import * as oooRequestService from "../../../services/oooRequest";
32+
import { NotFound, Conflict, BadRequest } from "http-errors";
3033

3134
describe("Test OOO Request Service", function() {
3235

@@ -125,38 +128,37 @@ describe("Test OOO Request Service", function() {
125128
});
126129

127130
it("should return INVALID_REQUEST_TYPE if request type is not OOO", async function() {
128-
const validationResponse = await validateOooAcknowledgeRequest(
129-
testOooRequest.id,
131+
await validateOooAcknowledgeRequest(
130132
REQUEST_TYPE.ONBOARDING,
131133
testOooRequest.status
132-
);
133-
expect(validationResponse.error).to.be.not.undefined;
134-
expect(validationResponse.error).to.equal(INVALID_REQUEST_TYPE);
134+
).catch((error) => {
135+
expect(error).to.be.not.undefined;
136+
expect(error.message).to.equal(INVALID_REQUEST_TYPE);
137+
});
135138
});
136139

137140
it("should return REQUEST_ALREADY_APPROVED if request is already approved", async function() {
138-
const validationResponse = await validateOooAcknowledgeRequest(
139-
testOooRequest.id,
141+
await validateOooAcknowledgeRequest(
140142
testOooRequest.type,
141143
REQUEST_STATE.APPROVED
142-
);
143-
expect(validationResponse.error).to.be.not.undefined;
144-
expect(validationResponse.error).to.equal(REQUEST_ALREADY_APPROVED);
144+
).catch((error) => {
145+
expect(error).to.be.not.undefined;
146+
expect(error.message).to.equal(REQUEST_ALREADY_APPROVED);
147+
});
145148
});
146149

147150
it("should return REQUEST_ALREADY_REJECTED if request is already rejected", async function() {
148-
const validationResponse = await validateOooAcknowledgeRequest(
149-
testOooRequest.id,
151+
await validateOooAcknowledgeRequest(
150152
testOooRequest.type,
151153
REQUEST_STATE.REJECTED
152-
);
153-
expect(validationResponse.error).to.be.not.undefined;
154-
expect(validationResponse.error).to.equal(REQUEST_ALREADY_REJECTED);
154+
).catch((error) => {
155+
expect(error).to.be.not.undefined;
156+
expect(error.message).to.equal(REQUEST_ALREADY_REJECTED);
157+
});
155158
});
156159

157160
it("should return undefined when all validation checks passes", async function() {
158161
const response = await validateOooAcknowledgeRequest(
159-
testOooRequest.id,
160162
testOooRequest.type,
161163
testOooRequest.status
162164
);
@@ -183,54 +185,72 @@ describe("Test OOO Request Service", function() {
183185
});
184186

185187
it("should return REQUEST_DOES_NOT_EXIST if invalid request id is passed", async function () {
186-
const invalidOOORequestId = "11111111111111111111";
187-
const response = await acknowledgeOooRequest(
188-
invalidOOORequestId,
188+
sinon.stub(requestModel, "getRequestById").throws(new NotFound(REQUEST_DOES_NOT_EXIST));
189+
await acknowledgeOooRequest(
190+
"11111111111111111111",
189191
testAcknowledgeOooRequest,
190192
testSuperUserId
191-
);
192-
expect(response.error).to.equal(REQUEST_DOES_NOT_EXIST);
193+
).catch((error) => {
194+
expect(error).to.be.not.undefined;
195+
expect(error.message).to.equal(REQUEST_DOES_NOT_EXIST);
196+
});
197+
});
198+
199+
it("should return REQUEST_ALREADY_APPROVED when status is approved", async function () {
200+
sinon.stub(requestModel, "getRequestById").returns(testOooRequest);
201+
sinon.stub(oooRequestService, "validateOooAcknowledgeRequest").throws(new Conflict(REQUEST_ALREADY_APPROVED));
202+
await acknowledgeOooRequest(
203+
testOooRequest.id,
204+
testAcknowledgeOooRequest,
205+
testSuperUserId
206+
).catch((error) => {
207+
expect(error).to.be.not.undefined;
208+
expect(error.message).to.equal(REQUEST_ALREADY_APPROVED);
209+
});
210+
});
211+
212+
it("should throw error when approve or rejection fails", async function () {
213+
sinon.stub(requestModel, "getRequestById").returns(testOooRequest);
214+
sinon.stub(oooRequestService, "validateOooAcknowledgeRequest");
215+
sinon.stub(requestModel, "updateRequest").throws(new BadRequest(errorMessage));
216+
await acknowledgeOooRequest(
217+
testOooRequest.id,
218+
testAcknowledgeOooRequest,
219+
testSuperUserId
220+
).catch((error) => {
221+
expect(error).to.be.not.undefined;
222+
expect(error.message).to.equal(errorMessage);
223+
});
193224
});
194225

195226
it("should approve OOO request", async function() {
227+
sinon.stub(requestModel, "getRequestById").returns(testOooRequest);
228+
sinon.stub(oooRequestService, "validateOooAcknowledgeRequest");
229+
sinon.stub(requestModel, "updateRequest").returns({ ...testOooRequest, status: REQUEST_STATE.APPROVED});
196230
const response = await acknowledgeOooRequest(
197231
testOooRequest.id,
198232
testAcknowledgeOooRequest,
199233
testSuperUserId
200234
);
201-
expect(response).to.deep.include({
202-
message: REQUEST_APPROVED_SUCCESSFULLY,
203-
data: {
204-
...testAcknowledgeOooRequest,
205-
id: testOooRequest.id,
206-
lastModifiedBy: testSuperUserId,
207-
updatedAt: response.data.updatedAt
208-
}
209-
});
235+
expect(response.message).to.equal(REQUEST_APPROVED_SUCCESSFULLY);
236+
expect(response.data.status).to.equal(REQUEST_STATE.APPROVED);
210237
});
211238

212239
it("should reject OOO request", async function() {
240+
sinon.stub(requestModel, "getRequestById").returns(testOooRequest);
241+
sinon.stub(oooRequestService, "validateOooAcknowledgeRequest");
242+
sinon.stub(requestModel, "updateRequest").returns({ ...testOooRequest, status: REQUEST_STATE.REJECTED});
213243
const response = await acknowledgeOooRequest(
214244
testOooRequest.id,
215245
{ ...testAcknowledgeOooRequest, status: REQUEST_STATE.REJECTED },
216246
testSuperUserId
217247
);
218-
expect(response).to.deep.include({
219-
message: REQUEST_REJECTED_SUCCESSFULLY,
220-
data: {
221-
...testAcknowledgeOooRequest,
222-
id: testOooRequest.id,
223-
status: REQUEST_STATE.REJECTED,
224-
lastModifiedBy: testSuperUserId,
225-
updatedAt: response.data.updatedAt
226-
}
227-
});
248+
expect(response.message).to.equal(REQUEST_REJECTED_SUCCESSFULLY);
249+
expect(response.data.status).to.equal(REQUEST_STATE.REJECTED);
228250
});
229251

230252
it("should throw error", async function() {
231-
sinon.stub(logService, "addLog").throws(new Error(errorMessage));
232-
const createSpy = sinon.spy(require("../../../services/oooRequest"), "acknowledgeOooRequest");
233-
253+
sinon.stub(requestModel, "getRequestById").throws(new Error(errorMessage));
234254
try {
235255
await acknowledgeOooRequest(
236256
testOooRequest.id,
@@ -239,7 +259,6 @@ describe("Test OOO Request Service", function() {
239259
);
240260
} catch (error) {
241261
expect(error.message).to.equal(errorMessage);
242-
expect(createSpy.calledOnce).to.be.true;
243262
}
244263
});
245264
});

0 commit comments

Comments
 (0)