UNPKG

component-dbs-core

Version:

DTO objects shared among device backend

92 lines 4.4 kB
"use strict"; 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 dynamodbUtils_1 = require("./dynamodbUtils"); describe('dynamodbUtils test suite', () => { const dynamodbUtils = new dynamodbUtils_1.DynamodbUtils(); it('should convert transaction db item to dto', () => __awaiter(void 0, void 0, void 0, function* () { const dbToTransactionNameMapping = { id: 'deviceUuid', transactionUuid: 'id', }; const attributesToDelete = ['type', 'transactionUuid', 'panToken', 'par']; const item = { id: 'id', transactionUuid: 't-uuid', type: 'transaction.12345', scheme: "AMEX" /* AMEX */, 'aws:rep:deleting': '123456', 'aws:rep:updatetime': '123456', 'aws:rep:updateregion': '123456', }; const tran = dynamodbUtils.convertDbItemToDto(item, dbToTransactionNameMapping, attributesToDelete); expect(tran).toEqual({ id: 't-uuid', deviceUuid: 'id', scheme: "AMEX" /* AMEX */, }); expect(Object.keys(tran).length).toBe(3); })); it('should convert deposit db item to dto', () => __awaiter(void 0, void 0, void 0, function* () { const dbToDepositNameMapping = { id: 'deviceUuid', depositUuid: 'id', }; const attributesToDelete = ['type', 'depositUuid']; const item = { id: 'id', depositUuid: 'd-uuid', type: 'deposit.12345', dailyTotals: [{ 'amount': 12, date: '123' }], 'aws:rep:deleting': '123456', 'aws:rep:updatetime': '123456', 'aws:rep:updateregion': '123456', }; const dep = dynamodbUtils.convertDbItemToDto(item, dbToDepositNameMapping, attributesToDelete); console.log(dep); expect(dep).toEqual({ id: 'd-uuid', deviceUuid: 'id', dailyTotals: [{ 'amount': 12, date: '123' }], }); expect(Object.keys(dep).length).toBe(3); })); it('should create last year query condition', () => { const condition = JSON.parse(dynamodbUtils.createLastYearQuery()); const lt = condition.expressionValues[':timestampFilter_lt'].S; const gt = condition.expressionValues[':timestampFilter_gt'].S; const ltTime = new Date(lt); const gtTime = new Date(gt); expect(ltTime.getFullYear() - gtTime.getFullYear()).toBe(1); }); it('should be able to convert timestamp between confition', () => { const startDate = new Date('2020-02-28T00:00:00Z'); const endDate = new Date('2020-01-10T00:00:00Z'); const filter = { expression: '(#timestamp BETWEEN :timestampFilter_between_start AND :timestampFilter_between_end)', expressionNames: { '#timestampFilter': 'timestamp' }, expressionValues: { ':timestampFilter_between_start': { S: startDate.toISOString() }, ':timestampFilter_between_end': { S: endDate.toISOString() }, }, }; const condition = dynamodbUtils.convertTimestampFilter(JSON.stringify(filter), 'transaction'); expect(condition).toMatchObject({ TableName: '', ExpressionAttributeValues: { ':timestampFilter_between_start': `transaction.${startDate.getTime()}`, ':timestampFilter_between_end': `transaction.${endDate.getTime()}`, }, KeyConditionExpression: '(#type BETWEEN :timestampFilter_between_start AND :timestampFilter_between_end)', }); }); }); //# sourceMappingURL=dynamodbUtils.spec.js.map