UNPKG

@studyportals/sp-r2d2

Version:

A framework that contains various components used when developing projects that will be deployed via AWS λ.

183 lines 8.69 kB
"use strict"; 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 s3_transfer_medium_class_1 = require("../../infrastructure/content-transfer/s3-transfer-medium.class"); let S3TransferMediumTest = class S3TransferMediumTest { get s3AdapterMock() { return this._s3AdapterMock; } get s3Adapter() { return this.s3AdapterMock.object; } get testInstanceMock() { return this._testInstanceMock; } get testInstance() { return this.testInstanceMock.object; } before() { this._s3AdapterMock = Moq.Mock.ofType(); this._testInstanceMock = Moq.Mock.ofType(s3_transfer_medium_class_1.S3TransferMedium); this.testInstanceMock.callBase = true; this.testInstanceMock.setup((_) => _['s3Adapter']).returns(() => this.s3Adapter); } getS3Adapter__ProvidedValue() { const testInstance = new s3_transfer_medium_class_1.S3TransferMedium(this.s3Adapter); chai_1.assert.equal(testInstance['s3Adapter'], this.s3Adapter); } pack__GeneratesIdentifierAndPutsTheSerializationOfThePayload() { return __awaiter(this, void 0, void 0, function* () { const payload = 'SomePayload'; const serialization = 'SomeSerialization'; const identifier = 'SomeIdentifier'; this.testInstanceMock.setup((_) => _['serialize'](Moq.It.isAny)).returns(() => serialization); this.testInstanceMock.setup((_) => _['generateIdentifier'](Moq.It.isAny())).returns(() => identifier); yield this.testInstance.pack(payload); this.s3AdapterMock.verify((_) => _.putJSON(identifier, serialization), Moq.Times.once()); this.testInstanceMock.verify((_) => _['serialize'](payload), Moq.Times.once()); this.testInstanceMock.verify((_) => _['generateIdentifier'](payload), Moq.Times.once()); }); } pack__ReturnsTheIdentifier() { return __awaiter(this, void 0, void 0, function* () { const identifier = 'SomeIdentifier'; this.testInstanceMock.setup((_) => _['generateIdentifier'](Moq.It.isAny())).returns(() => identifier); const result = yield this.testInstance.pack(''); chai_1.assert.equal(result, identifier); }); } pack__StorageOperationAwaited() { return __awaiter(this, void 0, void 0, function* () { let wasAwaited = false; this.s3AdapterMock .setup((_) => _.putJSON(Moq.It.isAny(), Moq.It.isAny())) .returns(() => new Promise((resolve) => { setTimeout(() => { wasAwaited = true; resolve(); }, 10); })); yield this.testInstance.pack(''); chai_1.assert.isTrue(wasAwaited); }); } unpack__PayloadRetrievedDeserializedAndReturned() { return __awaiter(this, void 0, void 0, function* () { const identifier = 'SomeIdentifier'; const serialization = 'SomeSerialization'; const payload = 'SomePayload'; this.s3AdapterMock.setup((_) => _.getJSON(Moq.It.isAny())).returns(() => __awaiter(this, void 0, void 0, function* () { return serialization; })); this.testInstanceMock.setup((_) => _['deserialize'](Moq.It.isAny())).returns(() => payload); const result = yield this.testInstance.unpack(identifier); chai_1.assert.equal(result, payload); this.testInstanceMock.verify((_) => _['deserialize'](serialization), Moq.Times.once()); this.s3AdapterMock.verify((_) => _.getJSON(identifier), Moq.Times.once()); }); } unpack__PayloadRemovedAfterRetrieval() { return __awaiter(this, void 0, void 0, function* () { let callCounter = 0; let getCallNumber = 0; let deleteCallNumber = 0; const identifier = 'SomeIdentifier'; this.testInstanceMock.setup((_) => _['deserialize'](Moq.It.isAny())); this.s3AdapterMock .setup((_) => _.getJSON(Moq.It.isAny())) .callback(() => (getCallNumber = ++callCounter)) .returns(() => Promise.resolve('')); this.s3AdapterMock .setup((_) => _.delete(Moq.It.isAny())) .callback(() => (deleteCallNumber = ++callCounter)) .returns(() => Promise.resolve()); yield this.testInstance.unpack(identifier); chai_1.assert.isTrue(deleteCallNumber >= getCallNumber); this.s3AdapterMock.verify((_) => _.delete(identifier), Moq.Times.once()); }); } unpack__PayloadRemovalAwaited() { return __awaiter(this, void 0, void 0, function* () { let wasAwaited = false; this.testInstanceMock.setup((_) => _['deserialize'](Moq.It.isAny())); this.s3AdapterMock .setup((_) => _.delete(Moq.It.isAny())) .returns(() => new Promise((resolve) => { setTimeout(() => { wasAwaited = true; resolve(); }, 10); })); yield this.testInstance.unpack(''); chai_1.assert.isTrue(wasAwaited); }); } generateIdentifier_100Calls_UniqueResults() { const set = new Set(); for (let i = 0; i < 100; ++i) { const value = this.testInstance['generateIdentifier'](''); chai_1.assert.isFalse(set.has(value)); set.add(value); } } serialize__JsonSerialization() { const input = { SomeProperty: 'SomeValue' }; const result = this.testInstance['serialize'](input); chai_1.assert.equal(result, JSON.stringify(input)); } deserialize__JsonParsing() { const input = { SomeProperty: 'SomeValue' }; const serialization = JSON.stringify(input); const result = this.testInstance['deserialize'](serialization); chai_1.assert.deepEqual(result, input); } }; __decorate([ mocha_1.test ], S3TransferMediumTest.prototype, "getS3Adapter__ProvidedValue", null); __decorate([ mocha_1.test ], S3TransferMediumTest.prototype, "pack__GeneratesIdentifierAndPutsTheSerializationOfThePayload", null); __decorate([ mocha_1.test ], S3TransferMediumTest.prototype, "pack__ReturnsTheIdentifier", null); __decorate([ mocha_1.test ], S3TransferMediumTest.prototype, "pack__StorageOperationAwaited", null); __decorate([ mocha_1.test ], S3TransferMediumTest.prototype, "unpack__PayloadRetrievedDeserializedAndReturned", null); __decorate([ mocha_1.test ], S3TransferMediumTest.prototype, "unpack__PayloadRemovedAfterRetrieval", null); __decorate([ mocha_1.test ], S3TransferMediumTest.prototype, "unpack__PayloadRemovalAwaited", null); __decorate([ mocha_1.test ], S3TransferMediumTest.prototype, "generateIdentifier_100Calls_UniqueResults", null); __decorate([ mocha_1.test ], S3TransferMediumTest.prototype, "serialize__JsonSerialization", null); __decorate([ mocha_1.test ], S3TransferMediumTest.prototype, "deserialize__JsonParsing", null); S3TransferMediumTest = __decorate([ mocha_1.suite ], S3TransferMediumTest); //# sourceMappingURL=s3-transfer-medium.test.js.map