UNPKG

@studyportals/sp-r2d2

Version:

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

295 lines 14.8 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 chai_1 = require("chai"); const mocha_1 = require("@testdeck/mocha"); const typemoq_1 = require("typemoq"); const infrastructure_1 = require("../../infrastructure"); let DynamoDBTransactionWriteTest = class DynamoDBTransactionWriteTest { get dynamoDBAdapter() { return this.dynamoDBAdapterMock.object; } get updateItemInput() { return this.updateItemInputMock.object; } get testInstance() { return this.testInstanceMock.object; } before() { this.dynamoDBAdapterMock = typemoq_1.Mock.ofType(); this.updateItemInputMock = typemoq_1.Mock.ofType(); this.testInstanceMock = typemoq_1.Mock.ofType(infrastructure_1.DynamoDBTransactionWrite); this.testInstanceMock.callBase = true; this.testInstanceMock.setup((_) => _['dynamoDBAdapter']).returns(() => this.dynamoDBAdapter); } getItems__PutItemsIncluded() { const items = ['ItemOne', 'ItemTwo']; this.testInstanceMock.setup((_) => _.getPutTransactionItems()).returns(() => items); this.testInstanceMock.setup((_) => _.getUpdateTransactionItems()).returns(() => []); this.testInstanceMock.setup((_) => _.getDeleteTransactionItems()).returns(() => []); const result = this.testInstance.getItems(); chai_1.assert.sameMembers(result, items); } getItems__UpdateItemsIncluded() { const items = ['ItemOne', 'ItemTwo']; this.testInstanceMock.setup((_) => _.getPutTransactionItems()).returns(() => []); this.testInstanceMock.setup((_) => _.getUpdateTransactionItems()).returns(() => items); this.testInstanceMock.setup((_) => _.getDeleteTransactionItems()).returns(() => []); const result = this.testInstance.getItems(); chai_1.assert.sameMembers(result, items); } getItems__DeleteItemsIncluded() { const items = ['ItemOne', 'ItemTwo']; this.testInstanceMock.setup((_) => _.getPutTransactionItems()).returns(() => []); this.testInstanceMock.setup((_) => _.getUpdateTransactionItems()).returns(() => []); this.testInstanceMock.setup((_) => _.getDeleteTransactionItems()).returns(() => items); const result = this.testInstance.getItems(); chai_1.assert.sameMembers(result, items); } getPutTransactionItems__ConvertedPutItems() { const itemOne = 'ItemOne'; const itemTwo = 'ItemTwo'; const items = [itemOne, itemTwo]; const convertedItemOne = 'ConvertedItemOne'; const convertedItemTwo = 'ConvertedItemTwo'; const convertedItems = [convertedItemOne, convertedItemTwo]; this.testInstanceMock.setup((_) => _['convertToPutTransactionItem'](itemOne)).returns(() => convertedItemOne); this.testInstanceMock.setup((_) => _['convertToPutTransactionItem'](itemTwo)).returns(() => convertedItemTwo); this.testInstanceMock.setup((_) => _['putItems']).returns(() => items); const result = this.testInstance.getPutTransactionItems(); chai_1.assert.sameMembers(result, convertedItems); } getUpdateTransactionItems__ConvertedUpdateItems() { const itemOne = 'ItemOne'; const itemTwo = 'ItemTwo'; const items = [itemOne, itemTwo]; const convertedItemOne = 'ConvertedItemOne'; const convertedItemTwo = 'ConvertedItemTwo'; const convertedItems = [convertedItemOne, convertedItemTwo]; this.testInstanceMock.setup((_) => _['convertToUpdateTransactionItem'](itemOne)).returns(() => convertedItemOne); this.testInstanceMock.setup((_) => _['convertToUpdateTransactionItem'](itemTwo)).returns(() => convertedItemTwo); this.testInstanceMock.setup((_) => _['updateItems']).returns(() => items); const result = this.testInstance.getUpdateTransactionItems(); chai_1.assert.sameMembers(result, convertedItems); } getDeleteTransactionItems__ConvertedDeleteItems() { const itemOne = 'ItemOne'; const itemTwo = 'ItemTwo'; const items = [itemOne, itemTwo]; const convertedItemOne = 'ConvertedItemOne'; const convertedItemTwo = 'ConvertedItemTwo'; const convertedItems = [convertedItemOne, convertedItemTwo]; this.testInstanceMock.setup((_) => _['convertToDeleteTransactionItem'](itemOne)).returns(() => convertedItemOne); this.testInstanceMock.setup((_) => _['convertToDeleteTransactionItem'](itemTwo)).returns(() => convertedItemTwo); this.testInstanceMock.setup((_) => _['deleteItems']).returns(() => items); const result = this.testInstance.getDeleteTransactionItems(); chai_1.assert.sameMembers(result, convertedItems); } put__PutItemAdded() { const item = 'SomeItem'; this.testInstance.put(item); chai_1.assert.isTrue(this.testInstance['putItems'].some((_) => _ === item)); } update__ItemConverted() { const item = 'SomeItem'; this.testInstanceMock.setup((_) => _['convertToUpdateItem'](typemoq_1.It.isAny())); this.testInstance.update(item); this.testInstanceMock.verify((_) => _['convertToUpdateItem'](item), typemoq_1.Times.once()); } update__ConvertedItemAdded() { const convertedItem = 'SomeConvertedItem'; this.testInstanceMock.setup((_) => _['convertToUpdateItem'](typemoq_1.It.isAny())).returns(() => convertedItem); this.testInstance.update(typemoq_1.It.isAny()); chai_1.assert.isTrue(this.testInstance['updateItems'].some((_) => _ === convertedItem)); } delete__DeleteItemAdded() { const item = 'SomeItem'; this.testInstance.delete(item); chai_1.assert.isTrue(this.testInstance['deleteItems'].some((_) => _ === item)); } commit__TransactionCommitted() { return __awaiter(this, void 0, void 0, function* () { let awaited = false; this.dynamoDBAdapterMock .setup((_) => _.commitWriteTransaction(typemoq_1.It.isAny())) .returns(() => new Promise((_) => setImmediate(() => { awaited = true; _(); }))); yield this.testInstance.commit(); this.dynamoDBAdapterMock.verify((_) => _.commitWriteTransaction(typemoq_1.It.isAny()), typemoq_1.Times.once()); chai_1.assert.isTrue(awaited); }); } convertToPutTransactionItem__ConvertedItem() { const item = 'Item'; const result = this.testInstance['convertToPutTransactionItem'](item); chai_1.assert.equal(result.Put, item); } convertToUpdateTransactionItem__ConvertedItem() { const item = 'Item'; const result = this.testInstance['convertToUpdateTransactionItem'](item); chai_1.assert.equal(result.Update, item); } convertToDeleteTransactionItem__ConvertedItem() { const item = 'Item'; const result = this.testInstance['convertToDeleteTransactionItem'](item); chai_1.assert.equal(result.Delete, item); } convertToUpdateItem__TableNameSet() { const value = 'Value'; this.updateItemInputMock.setup((_) => _.UpdateExpression).returns(() => ''); this.updateItemInputMock.setup((_) => _.TableName).returns(() => value); const result = this.testInstance['convertToUpdateItem'](this.updateItemInput); chai_1.assert.equal(result.TableName, value); } convertToUpdateItem__KeySet() { const value = 'Value'; this.updateItemInputMock.setup((_) => _.UpdateExpression).returns(() => ''); this.updateItemInputMock.setup((_) => _.Key).returns(() => value); const result = this.testInstance['convertToUpdateItem'](this.updateItemInput); chai_1.assert.equal(result.Key, value); } convertToUpdateItem__UpdateExpressionSet() { const value = 'Value'; this.updateItemInputMock.setup((_) => _.UpdateExpression).returns(() => value); const result = this.testInstance['convertToUpdateItem'](this.updateItemInput); chai_1.assert.equal(result.UpdateExpression, value); } convertToUpdateItem__ConditionExpressionSet() { const value = 'Value'; this.updateItemInputMock.setup((_) => _.UpdateExpression).returns(() => ''); this.updateItemInputMock.setup((_) => _.ConditionExpression).returns(() => value); const result = this.testInstance['convertToUpdateItem'](this.updateItemInput); chai_1.assert.equal(result.ConditionExpression, value); } convertToUpdateItem__ExpressionAttributeNamesSet() { const value = 'Value'; this.updateItemInputMock.setup((_) => _.UpdateExpression).returns(() => ''); this.updateItemInputMock.setup((_) => _.ExpressionAttributeNames).returns(() => value); const result = this.testInstance['convertToUpdateItem'](this.updateItemInput); chai_1.assert.equal(result.ExpressionAttributeNames, value); } convertToUpdateItem__ExpressionAttributeValuesSet() { const value = 'Value'; this.updateItemInputMock.setup((_) => _.UpdateExpression).returns(() => ''); this.updateItemInputMock.setup((_) => _.ExpressionAttributeValues).returns(() => value); const result = this.testInstance['convertToUpdateItem'](this.updateItemInput); chai_1.assert.equal(result.ExpressionAttributeValues, value); } convertToUpdateItem_UpdateExpressionNotSet_Error() { let caught = false; this.updateItemInputMock.setup((_) => _.UpdateExpression).returns(() => undefined); try { this.testInstance['convertToUpdateItem'](this.updateItemInput); } catch (_a) { caught = true; } chai_1.assert.isTrue(caught); } getRegisteredPutItems__ProvidesItems() { const itemOne = 'ItemOne'; const itemTwo = 'ItemTwo'; this.testInstance.put(itemOne); this.testInstance.put(itemTwo); const result = this.testInstance.getRegisteredPutItems(); chai_1.assert.sameMembers([...result], [itemOne, itemTwo]); } getRegisteredUpdateItems__ProvidesItems() { const itemOne = { UpdateExpression: 'ItemOne' }; const itemTwo = { UpdateExpression: 'ItemTwo' }; this.testInstance.update(itemOne); this.testInstance.update(itemTwo); const result = this.testInstance.getRegisteredUpdateItems(); chai_1.assert.equal(result[0].UpdateExpression, itemOne.UpdateExpression); chai_1.assert.equal(result[1].UpdateExpression, itemTwo.UpdateExpression); } }; __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "getItems__PutItemsIncluded", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "getItems__UpdateItemsIncluded", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "getItems__DeleteItemsIncluded", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "getPutTransactionItems__ConvertedPutItems", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "getUpdateTransactionItems__ConvertedUpdateItems", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "getDeleteTransactionItems__ConvertedDeleteItems", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "put__PutItemAdded", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "update__ItemConverted", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "update__ConvertedItemAdded", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "delete__DeleteItemAdded", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "commit__TransactionCommitted", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "convertToPutTransactionItem__ConvertedItem", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "convertToUpdateTransactionItem__ConvertedItem", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "convertToDeleteTransactionItem__ConvertedItem", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "convertToUpdateItem__TableNameSet", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "convertToUpdateItem__KeySet", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "convertToUpdateItem__UpdateExpressionSet", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "convertToUpdateItem__ConditionExpressionSet", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "convertToUpdateItem__ExpressionAttributeNamesSet", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "convertToUpdateItem__ExpressionAttributeValuesSet", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "convertToUpdateItem_UpdateExpressionNotSet_Error", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "getRegisteredPutItems__ProvidesItems", null); __decorate([ mocha_1.test ], DynamoDBTransactionWriteTest.prototype, "getRegisteredUpdateItems__ProvidesItems", null); DynamoDBTransactionWriteTest = __decorate([ mocha_1.suite ], DynamoDBTransactionWriteTest); //# sourceMappingURL=dynamodb-transaction-write.test.js.map