ddb-table
Version:
Strongly typed library for querying and modeling DynamoDB documents.
42 lines (41 loc) • 5.83 kB
JavaScript
;
require("mocha");
var _chai = require("chai");
var _ExpressionAttributeNames = _interopRequireDefault(require("./ExpressionAttributeNames"));
var _ProjectionExpression = _interopRequireDefault(require("./ProjectionExpression"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('ProjectionExpression', () => {
describe('init -> serialize()', () => {
function assetSerialize(test, expected = test.trim().replace(/\s+/g, ' ')) {
it(test, () => {
const names = new _ExpressionAttributeNames.default();
const exp = new _ProjectionExpression.default(names, test);
_chai.assert.equal(exp.serialize(), expected);
});
}
assetSerialize('#foo');
assetSerialize('#foo, #bar');
assetSerialize(' #foo , #bar ', '#foo, #bar');
assetSerialize(' foo, #hello, #testme ');
});
describe('.add', () => {
it('Basic use case', () => {
const names = new _ExpressionAttributeNames.default();
const exp = new _ProjectionExpression.default(names);
exp.add({
name: 1,
description: 0,
price: {
amount: 1
}
});
_chai.assert.equal(exp.serialize(), '#name, #price.#amount');
_chai.assert.deepEqual(names.serialize(), {
'#name': 'name',
'#price': 'price',
'#amount': 'amount'
});
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwiX2NoYWkiLCJfRXhwcmVzc2lvbkF0dHJpYnV0ZU5hbWVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9Qcm9qZWN0aW9uRXhwcmVzc2lvbiIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVzY3JpYmUiLCJhc3NldFNlcmlhbGl6ZSIsInRlc3QiLCJleHBlY3RlZCIsInRyaW0iLCJyZXBsYWNlIiwiaXQiLCJuYW1lcyIsIkV4cHJlc3Npb25BdHRyaWJ1dGVOYW1lcyIsImV4cCIsIlByb2plY3Rpb25FeHByZXNzaW9uIiwiYXNzZXJ0IiwiZXF1YWwiLCJzZXJpYWxpemUiLCJhZGQiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJwcmljZSIsImFtb3VudCIsImRlZXBFcXVhbCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHByZXNzaW9ucy9Qcm9qZWN0aW9uRXhwcmVzc2lvbi50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnbW9jaGEnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnY2hhaSc7XG5pbXBvcnQgRXhwcmVzc2lvbkF0dHJpYnV0ZU5hbWVzIGZyb20gJy4vRXhwcmVzc2lvbkF0dHJpYnV0ZU5hbWVzJztcbmltcG9ydCBQcm9qZWN0aW9uRXhwcmVzc2lvbiBmcm9tICcuL1Byb2plY3Rpb25FeHByZXNzaW9uJztcblxuZGVzY3JpYmUoJ1Byb2plY3Rpb25FeHByZXNzaW9uJywgKCkgPT4ge1xuICBkZXNjcmliZSgnaW5pdCAtPiBzZXJpYWxpemUoKScsICgpID0+IHtcbiAgICBmdW5jdGlvbiBhc3NldFNlcmlhbGl6ZShcbiAgICAgIHRlc3Q6IHN0cmluZyxcbiAgICAgIGV4cGVjdGVkOiBzdHJpbmcgPSB0ZXN0LnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICcgJyksXG4gICAgKTogdm9pZCB7XG4gICAgICBpdCh0ZXN0LCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gbmV3IEV4cHJlc3Npb25BdHRyaWJ1dGVOYW1lcygpO1xuICAgICAgICBjb25zdCBleHAgPSBuZXcgUHJvamVjdGlvbkV4cHJlc3Npb24obmFtZXMsIHRlc3QpO1xuXG4gICAgICAgIGFzc2VydC5lcXVhbChleHAuc2VyaWFsaXplKCksIGV4cGVjdGVkKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzc2V0U2VyaWFsaXplKCcjZm9vJyk7XG4gICAgYXNzZXRTZXJpYWxpemUoJyNmb28sICNiYXInKTtcbiAgICBhc3NldFNlcmlhbGl6ZSgnICNmb28gICwgICNiYXIgJywgJyNmb28sICNiYXInKTtcbiAgICBhc3NldFNlcmlhbGl6ZSgnIGZvbywgICNoZWxsbywgI3Rlc3RtZSAnKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJy5hZGQnLCAoKSA9PiB7XG4gICAgaXQoJ0Jhc2ljIHVzZSBjYXNlJywgKCkgPT4ge1xuICAgICAgY29uc3QgbmFtZXMgPSBuZXcgRXhwcmVzc2lvbkF0dHJpYnV0ZU5hbWVzKCk7XG4gICAgICBjb25zdCBleHAgPSBuZXcgUHJvamVjdGlvbkV4cHJlc3Npb248XG4gICAgICAgIHtcbiAgICAgICAgICBza3U6IHN0cmluZztcbiAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgICAgICBwcmljZToge1xuICAgICAgICAgICAgYW1vdW50OiBudW1iZXI7XG4gICAgICAgICAgICBjdXJyZW5jeTogJ1VTRCcgfCAnRVVSJztcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICB7IHNrdTogc3RyaW5nIH1cbiAgICAgID4obmFtZXMpO1xuXG4gICAgICBleHAuYWRkKHtcbiAgICAgICAgbmFtZTogMSxcbiAgICAgICAgZGVzY3JpcHRpb246IDAsXG4gICAgICAgIHByaWNlOiB7XG4gICAgICAgICAgYW1vdW50OiAxLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5lcXVhbChleHAuc2VyaWFsaXplKCksICcjbmFtZSwgI3ByaWNlLiNhbW91bnQnKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwobmFtZXMuc2VyaWFsaXplKCksIHtcbiAgICAgICAgJyNuYW1lJzogJ25hbWUnLFxuICAgICAgICAnI3ByaWNlJzogJ3ByaWNlJyxcbiAgICAgICAgJyNhbW91bnQnOiAnYW1vdW50JyxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBQSxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUseUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFBMEQsU0FBQUcsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFMURHLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxNQUFNO0VBQ3JDQSxRQUFRLENBQUMscUJBQXFCLEVBQUUsTUFBTTtJQUNwQyxTQUFTQyxjQUFjQSxDQUNyQkMsSUFBWSxFQUNaQyxRQUFnQixHQUFHRCxJQUFJLENBQUNFLElBQUksRUFBRSxDQUFDQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUM3QztNQUNOQyxFQUFFLENBQUNKLElBQUksRUFBRSxNQUFNO1FBQ2IsTUFBTUssS0FBSyxHQUFHLElBQUlDLGlDQUF3QixFQUFFO1FBQzVDLE1BQU1DLEdBQUcsR0FBRyxJQUFJQyw2QkFBb0IsQ0FBQ0gsS0FBSyxFQUFFTCxJQUFJLENBQUM7UUFFakRTLFlBQU0sQ0FBQ0MsS0FBSyxDQUFDSCxHQUFHLENBQUNJLFNBQVMsRUFBRSxFQUFFVixRQUFRLENBQUM7TUFDekMsQ0FBQyxDQUFDO0lBQ0o7SUFFQUYsY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUN0QkEsY0FBYyxDQUFDLFlBQVksQ0FBQztJQUM1QkEsY0FBYyxDQUFDLGlCQUFpQixFQUFFLFlBQVksQ0FBQztJQUMvQ0EsY0FBYyxDQUFDLHlCQUF5QixDQUFDO0VBQzNDLENBQUMsQ0FBQztFQUVGRCxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU07SUFDckJNLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNO01BQ3pCLE1BQU1DLEtBQUssR0FBRyxJQUFJQyxpQ0FBd0IsRUFBRTtNQUM1QyxNQUFNQyxHQUFHLEdBQUcsSUFBSUMsNkJBQW9CLENBV2xDSCxLQUFLLENBQUM7TUFFUkUsR0FBRyxDQUFDSyxHQUFHLENBQUM7UUFDTkMsSUFBSSxFQUFFLENBQUM7UUFDUEMsV0FBVyxFQUFFLENBQUM7UUFDZEMsS0FBSyxFQUFFO1VBQ0xDLE1BQU0sRUFBRTtRQUNWO01BQ0YsQ0FBQyxDQUFDO01BRUZQLFlBQU0sQ0FBQ0MsS0FBSyxDQUFDSCxHQUFHLENBQUNJLFNBQVMsRUFBRSxFQUFFLHVCQUF1QixDQUFDO01BQ3RERixZQUFNLENBQUNRLFNBQVMsQ0FBQ1osS0FBSyxDQUFDTSxTQUFTLEVBQUUsRUFBRTtRQUNsQyxPQUFPLEVBQUUsTUFBTTtRQUNmLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFNBQVMsRUFBRTtNQUNiLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9