ddb-table
Version:
Strongly typed library for querying and modeling DynamoDB documents.
84 lines (83 loc) • 7.82 kB
JavaScript
"use strict";
var _UpdateQuery = _interopRequireDefault(require("./UpdateQuery"));
var _chai = require("chai");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('queries/UpdateQuery', () => {
const dummyClient = {
update: () => null
};
describe('.set()', () => {
it('Basic Usage', () => {
const query = new _UpdateQuery.default(dummyClient, {
TableName: 'Test',
Key: {
id: 123
}
});
query.set('foo', {
bar: 'baz'
});
query.set(['baz'], 456);
_chai.assert.deepEqual(query.serialize(), {
TableName: 'Test',
Key: {
id: 123
},
UpdateExpression: 'SET #foo = :foo, #baz = :baz',
ExpressionAttributeNames: {
'#foo': 'foo',
'#baz': 'baz'
},
ExpressionAttributeValues: {
':foo': {
bar: 'baz'
},
':baz': 456
}
});
});
it('should support partial deep objects', () => {
const query = new _UpdateQuery.default(dummyClient, {
TableName: 'Test',
Key: {
id: 123
}
});
query.set(['foo', 'bar'], 'ddd');
_chai.assert.deepEqual(query.serialize(), {
TableName: 'Test',
Key: {
id: 123
},
UpdateExpression: 'SET #foo.#bar = :bar',
ExpressionAttributeNames: {
'#foo': 'foo',
'#bar': 'bar'
},
ExpressionAttributeValues: {
':bar': 'ddd'
}
});
});
it('should remove optional properties', () => {
const query = new _UpdateQuery.default(dummyClient, {
TableName: 'Test',
Key: {
id: 123
}
});
query.set('foo', undefined);
_chai.assert.deepEqual(query.serialize(), {
TableName: 'Test',
Key: {
id: 123
},
UpdateExpression: 'REMOVE #foo',
ExpressionAttributeNames: {
'#foo': 'foo'
}
});
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVXBkYXRlUXVlcnkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jaGFpIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJkZXNjcmliZSIsImR1bW15Q2xpZW50IiwidXBkYXRlIiwiaXQiLCJxdWVyeSIsIlVwZGF0ZVF1ZXJ5IiwiVGFibGVOYW1lIiwiS2V5IiwiaWQiLCJzZXQiLCJiYXIiLCJhc3NlcnQiLCJkZWVwRXF1YWwiLCJzZXJpYWxpemUiLCJVcGRhdGVFeHByZXNzaW9uIiwiRXhwcmVzc2lvbkF0dHJpYnV0ZU5hbWVzIiwiRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlcyIsInVuZGVmaW5lZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL1VwZGF0ZVF1ZXJ5LnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFVwZGF0ZVF1ZXJ5IGZyb20gJy4vVXBkYXRlUXVlcnknO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnY2hhaSc7XG5cbmRlc2NyaWJlKCdxdWVyaWVzL1VwZGF0ZVF1ZXJ5JywgKCkgPT4ge1xuICBjb25zdCBkdW1teUNsaWVudCA9IHsgdXBkYXRlOiAoKSA9PiBudWxsIH0gYXMgbmV2ZXI7XG5cbiAgZGVzY3JpYmUoJy5zZXQoKScsICgpID0+IHtcbiAgICBpdCgnQmFzaWMgVXNhZ2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IG5ldyBVcGRhdGVRdWVyeTxcbiAgICAgICAgeyBpZDogbnVtYmVyOyBmb286IHsgYmFyOiBzdHJpbmcgfTsgYmF6OiBudW1iZXIgfSxcbiAgICAgICAgeyBpZDogbnVtYmVyIH1cbiAgICAgID4oZHVtbXlDbGllbnQsIHtcbiAgICAgICAgVGFibGVOYW1lOiAnVGVzdCcsXG4gICAgICAgIEtleTogeyBpZDogMTIzIH0sXG4gICAgICB9KTtcblxuICAgICAgcXVlcnkuc2V0KCdmb28nLCB7IGJhcjogJ2JheicgfSk7XG4gICAgICBxdWVyeS5zZXQoWydiYXonXSwgNDU2KTtcblxuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChxdWVyeS5zZXJpYWxpemUoKSwge1xuICAgICAgICBUYWJsZU5hbWU6ICdUZXN0JyxcbiAgICAgICAgS2V5OiB7IGlkOiAxMjMgfSxcbiAgICAgICAgVXBkYXRlRXhwcmVzc2lvbjogJ1NFVCAjZm9vID0gOmZvbywgI2JheiA9IDpiYXonLFxuICAgICAgICBFeHByZXNzaW9uQXR0cmlidXRlTmFtZXM6IHsgJyNmb28nOiAnZm9vJywgJyNiYXonOiAnYmF6JyB9LFxuICAgICAgICBFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzOiB7ICc6Zm9vJzogeyBiYXI6ICdiYXonIH0sICc6YmF6JzogNDU2IH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VwcG9ydCBwYXJ0aWFsIGRlZXAgb2JqZWN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gbmV3IFVwZGF0ZVF1ZXJ5PFxuICAgICAgICB7IGlkOiBudW1iZXI7IGZvbz86IHsgYmFyOiBzdHJpbmcgfTsgYmF6OiBudW1iZXIgfSxcbiAgICAgICAgeyBpZDogbnVtYmVyIH1cbiAgICAgID4oZHVtbXlDbGllbnQsIHtcbiAgICAgICAgVGFibGVOYW1lOiAnVGVzdCcsXG4gICAgICAgIEtleTogeyBpZDogMTIzIH0sXG4gICAgICB9KTtcblxuICAgICAgcXVlcnkuc2V0KFsnZm9vJywgJ2JhciddLCAnZGRkJyk7XG5cbiAgICAgIGFzc2VydC5kZWVwRXF1YWwocXVlcnkuc2VyaWFsaXplKCksIHtcbiAgICAgICAgVGFibGVOYW1lOiAnVGVzdCcsXG4gICAgICAgIEtleTogeyBpZDogMTIzIH0sXG4gICAgICAgIFVwZGF0ZUV4cHJlc3Npb246ICdTRVQgI2Zvby4jYmFyID0gOmJhcicsXG4gICAgICAgIEV4cHJlc3Npb25BdHRyaWJ1dGVOYW1lczogeyAnI2Zvbyc6ICdmb28nLCAnI2Jhcic6ICdiYXInIH0sXG4gICAgICAgIEV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHsgJzpiYXInOiAnZGRkJyB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbW92ZSBvcHRpb25hbCBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcXVlcnkgPSBuZXcgVXBkYXRlUXVlcnk8XG4gICAgICAgIHsgaWQ6IG51bWJlcjsgZm9vPzogeyBiYXI6IHN0cmluZyB9OyBiYXo6IG51bWJlciB9LFxuICAgICAgICB7IGlkOiBudW1iZXIgfVxuICAgICAgPihkdW1teUNsaWVudCwge1xuICAgICAgICBUYWJsZU5hbWU6ICdUZXN0JyxcbiAgICAgICAgS2V5OiB7IGlkOiAxMjMgfSxcbiAgICAgIH0pO1xuXG4gICAgICBxdWVyeS5zZXQoJ2ZvbycsIHVuZGVmaW5lZCk7XG5cbiAgICAgIGFzc2VydC5kZWVwRXF1YWwocXVlcnkuc2VyaWFsaXplKCksIHtcbiAgICAgICAgVGFibGVOYW1lOiAnVGVzdCcsXG4gICAgICAgIEtleTogeyBpZDogMTIzIH0sXG4gICAgICAgIFVwZGF0ZUV4cHJlc3Npb246ICdSRU1PVkUgI2ZvbycsXG4gICAgICAgIEV4cHJlc3Npb25BdHRyaWJ1dGVOYW1lczogeyAnI2Zvbyc6ICdmb28nIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFBQSxZQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFBOEIsU0FBQUQsdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFOUJHLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNO0VBQ3BDLE1BQU1DLFdBQVcsR0FBRztJQUFFQyxNQUFNLEVBQUVBLENBQUEsS0FBTTtFQUFLLENBQVU7RUFFbkRGLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTTtJQUN2QkcsRUFB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