Merge pull request #263 from lumberj/feature/requestOffer

[FEATURE] Remote.prototype.requestOffer
This commit is contained in:
wltsmrz
2015-01-20 18:40:42 -08:00
2 changed files with 66 additions and 0 deletions

View File

@@ -2159,6 +2159,44 @@ Remote.prototype.dirtyAccountRoot = function(account) {
delete this.ledgers.current.account_root[account];
};
/**
* Get an Offer from the ledger
*
* @param {Object} options
* @param {String|Number} options.ledger
* @param {String} [options.account] - Required unless using options.index
* @param {Number} [options.sequence] - Required unless using options.index
* @param {String} [options.index] - Required only if options.account and options.sequence not provided
*
* @callback
* @param {Error} error
* @param {Object} message
*
* @return {Request}
*/
Remote.prototype.requestOffer = function(options, callback) {
var request = this.requestLedgerEntry('offer');
if (options.account && options.sequence) {
request.offerId(options.account, options.sequence);
} else if (options.index) {
request.offerIndex(options.index);
}
request.ledgerSelect(options.ledger);
request.once('success', function(res) {
request.emit('offer',res);
});
request.callback(callback, 'offer');
return request;
};
/**
* Get an account's balance
*

View File

@@ -838,5 +838,33 @@ describe('Remote', function () {
assert.strictEqual(request.message.account_root, ADDRESS);
assert.strictEqual(request.message.ledger_index, 'validated');
});
it('request offer with ledger index', function() {
var request = remote.requestOffer({account: ADDRESS, ledger: LEDGER_INDEX, sequence: 5});
assert.strictEqual(request.message.command, 'ledger_entry');
assert.strictEqual(request.message.offer.account, ADDRESS);
assert.strictEqual(request.message.offer.seq, 5);
assert.strictEqual(request.message.ledger_index, LEDGER_INDEX);
});
it('request offer with ledger hash', function() {
var request = remote.requestOffer({account: ADDRESS, ledger: LEDGER_HASH, sequence: 5});
assert.strictEqual(request.message.command, 'ledger_entry');
assert.strictEqual(request.message.offer.account, ADDRESS);
assert.strictEqual(request.message.offer.seq, 5);
assert.strictEqual(request.message.ledger_hash, LEDGER_HASH);
});
it('request account balance with ledger identifier', function() {
var request = remote.requestOffer({account: ADDRESS, ledger: 'validated', sequence: 5});
assert.strictEqual(request.message.command, 'ledger_entry');
assert.strictEqual(request.message.offer.account, ADDRESS);
assert.strictEqual(request.message.offer.seq, 5);
assert.strictEqual(request.message.ledger_index, 'validated');
});
it('request account balance with offer index', function() {
var request = remote.requestOffer({ index: TRANSACTION_HASH, ledger: LEDGER_INDEX});
assert.strictEqual(request.message.command, 'ledger_entry');
assert.strictEqual(request.message.offer, TRANSACTION_HASH);
assert.strictEqual(request.message.ledger_index, LEDGER_INDEX);
});
});
});