@studyportals/sp-r2d2
Version:
A framework that contains various components used when developing projects that will be deployed via AWS λ.
215 lines • 10.7 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const mocha_1 = require("@testdeck/mocha");
const Moq = require("typemoq");
const chai_1 = require("chai");
const execution_error_class_1 = require("../../application/errors/execution-error.class");
const base_request_handler_class_1 = require("../../application/request-handling/base-request-handler.class");
let BaseRequestHandlerTest = class BaseRequestHandlerTest {
get requestMock() {
return this._requestMock;
}
get request() {
return this.requestMock.object;
}
get testInstanceMock() {
return this._testInstanceMock;
}
get testInstance() {
return this.testInstanceMock.object;
}
before() {
this._requestMock = Moq.Mock.ofType();
this._testInstanceMock = Moq.Mock.ofType(base_request_handler_class_1.BaseRequestHandler);
this.testInstanceMock.callBase = true;
}
handle__RequestCorrectlyValidated() {
return __awaiter(this, void 0, void 0, function* () {
let wasAwaited = false;
this.testInstanceMock
.setup((_) => _['validateRequest'](Moq.It.isAny()))
.returns(() => new Promise((res) => {
setTimeout(() => {
wasAwaited = true;
res();
}, 10);
}));
this.testInstanceMock.setup((_) => _['authorizeRequest'](Moq.It.isAny()));
this.testInstanceMock.setup((_) => _['executeRequest'](Moq.It.isAny()));
yield this.testInstance.handle(this.request);
this.testInstanceMock.verify((_) => _['validateRequest'](this.request), Moq.Times.once());
chai_1.assert.isTrue(wasAwaited);
});
}
handle__RequestCorrectlyAuthorized() {
return __awaiter(this, void 0, void 0, function* () {
let wasAwaited = false;
this.testInstanceMock.setup((_) => _['validateRequest'](Moq.It.isAny()));
this.testInstanceMock
.setup((_) => _['authorizeRequest'](Moq.It.isAny()))
.returns(() => new Promise((res) => {
setTimeout(() => {
wasAwaited = true;
res();
}, 10);
}));
this.testInstanceMock.setup((_) => _['executeRequest'](Moq.It.isAny()));
yield this.testInstance.handle(this.request);
this.testInstanceMock.verify((_) => _['authorizeRequest'](this.request), Moq.Times.once());
chai_1.assert.isTrue(wasAwaited);
});
}
handle__RequestCorrectlyExecutedAndResultReturned() {
return __awaiter(this, void 0, void 0, function* () {
const executionOutcome = 'SomeResult';
let wasAwaited = false;
this.testInstanceMock.setup((_) => _['validateRequest'](Moq.It.isAny()));
this.testInstanceMock.setup((_) => _['authorizeRequest'](Moq.It.isAny()));
this.testInstanceMock.setup((_) => _['executeRequest'](Moq.It.isAny())).returns(() => __awaiter(this, void 0, void 0, function* () { return executionOutcome; }));
const result = yield this.testInstance.handle(this.request);
chai_1.assert.equal(result, executionOutcome);
this.testInstanceMock.verify((_) => _['executeRequest'](this.request), Moq.Times.once());
});
}
handle__RequestValidatedBeforeAuthorization() {
return __awaiter(this, void 0, void 0, function* () {
let callNumber = 0;
let validationCallNumber = 0;
let authorizationCallNumber = 0;
this.testInstanceMock
.setup((_) => _['validateRequest'](Moq.It.isAny()))
.callback(() => (validationCallNumber = ++callNumber));
this.testInstanceMock
.setup((_) => _['authorizeRequest'](Moq.It.isAny()))
.callback(() => (authorizationCallNumber = ++callNumber));
this.testInstanceMock.setup((_) => _['executeRequest'](Moq.It.isAny()));
yield this.testInstance.handle(this.request);
chai_1.assert.isTrue(authorizationCallNumber >= validationCallNumber);
});
}
handle__RequestAuthorizedBeforeExecution() {
return __awaiter(this, void 0, void 0, function* () {
let callNumber = 0;
let authorizationCallNumber = 0;
let executionCallNumber = 0;
this.testInstanceMock.setup((_) => _['validateRequest'](Moq.It.isAny()));
this.testInstanceMock
.setup((_) => _['authorizeRequest'](Moq.It.isAny()))
.callback(() => (authorizationCallNumber = ++callNumber));
this.testInstanceMock
.setup((_) => _['executeRequest'](Moq.It.isAny()))
.callback(() => (executionCallNumber = ++callNumber));
yield this.testInstance.handle(this.request);
chai_1.assert.isTrue(executionCallNumber >= authorizationCallNumber);
});
}
executeRequest__ThrowsExecutionError() {
return __awaiter(this, void 0, void 0, function* () {
let receivedError;
try {
yield this.testInstance['executeRequest'](this.request);
}
catch (e) {
receivedError = e;
}
chai_1.assert.instanceOf(receivedError, execution_error_class_1.ExecutionError);
});
}
validateRequest__RequestDataValidated() {
return __awaiter(this, void 0, void 0, function* () {
const data = 'SomeData';
let wasAwaited = false;
this.requestMock.setup((_) => _.data).returns(() => data);
this.testInstanceMock
.setup((_) => _['validateRequestData'](Moq.It.isAny()))
.returns(() => new Promise((res) => {
setTimeout(() => {
wasAwaited = true;
res();
}, 10);
}));
this.testInstanceMock.setup((_) => _['additionalRequestValidation'](Moq.It.isAny()));
yield this.testInstance['validateRequest'](this.request);
this.testInstanceMock.verify((_) => _['validateRequestData'](data), Moq.Times.once());
chai_1.assert.isTrue(wasAwaited);
});
}
validateRequest__AdditionalValidationOperationsExecuted() {
return __awaiter(this, void 0, void 0, function* () {
let wasAwaited = false;
this.testInstanceMock.setup((_) => _['validateRequestData'](Moq.It.isAny()));
this.testInstanceMock
.setup((_) => _['additionalRequestValidation'](Moq.It.isAny()))
.returns(() => new Promise((res) => {
setTimeout(() => {
wasAwaited = true;
res();
}, 10);
}));
yield this.testInstance['validateRequest'](this.request);
this.testInstanceMock.verify((_) => _['additionalRequestValidation'](this.request), Moq.Times.once());
chai_1.assert.isTrue(wasAwaited);
});
}
validateRequest__DataValidatedBeforeAdditionalOperations() {
return __awaiter(this, void 0, void 0, function* () {
let callNumber = 0;
let dataValidationCallNumber = 0;
let additionalOperationsCallNumber = 0;
this.testInstanceMock
.setup((_) => _['validateRequestData'](Moq.It.isAny()))
.callback(() => (dataValidationCallNumber = ++callNumber));
this.testInstanceMock
.setup((_) => _['additionalRequestValidation'](Moq.It.isAny()))
.callback(() => (additionalOperationsCallNumber = ++callNumber));
yield this.testInstance['validateRequest'](this.request);
chai_1.assert.isTrue(additionalOperationsCallNumber >= dataValidationCallNumber);
});
}
};
__decorate([
mocha_1.test
], BaseRequestHandlerTest.prototype, "handle__RequestCorrectlyValidated", null);
__decorate([
mocha_1.test
], BaseRequestHandlerTest.prototype, "handle__RequestCorrectlyAuthorized", null);
__decorate([
mocha_1.test
], BaseRequestHandlerTest.prototype, "handle__RequestCorrectlyExecutedAndResultReturned", null);
__decorate([
mocha_1.test
], BaseRequestHandlerTest.prototype, "handle__RequestValidatedBeforeAuthorization", null);
__decorate([
mocha_1.test
], BaseRequestHandlerTest.prototype, "handle__RequestAuthorizedBeforeExecution", null);
__decorate([
mocha_1.test
], BaseRequestHandlerTest.prototype, "executeRequest__ThrowsExecutionError", null);
__decorate([
mocha_1.test
], BaseRequestHandlerTest.prototype, "validateRequest__RequestDataValidated", null);
__decorate([
mocha_1.test
], BaseRequestHandlerTest.prototype, "validateRequest__AdditionalValidationOperationsExecuted", null);
__decorate([
mocha_1.test
], BaseRequestHandlerTest.prototype, "validateRequest__DataValidatedBeforeAdditionalOperations", null);
BaseRequestHandlerTest = __decorate([
(0, mocha_1.suite)()
], BaseRequestHandlerTest);
//# sourceMappingURL=base-request-handler.test.js.map