@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
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 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