Browse Source

Merge pull request #625 from isocolsky/fix/change-on-single-address

Fix/change on single address
feat/estimateFee-limit
Matias Alejo Garcia 8 years ago
committed by GitHub
parent
commit
7096157bdb
  1. 11
      lib/server.js
  2. 36
      test/integration/server.js

11
lib/server.js

@ -2660,8 +2660,7 @@ WalletService.prototype.getTxHistory = function(opts, cb) {
if (opts.limit > Defaults.HISTORY_LIMIT)
return cb(Errors.HISTORY_LIMIT_EXCEEDED);
function decorate(txs, addresses, proposals, notes) {
function decorate(wallet, txs, addresses, proposals, notes) {
var indexedAddresses = _.indexBy(addresses, 'address');
var indexedProposals = _.indexBy(proposals, 'txid');
var indexedNotes = _.indexBy(notes, 'txid');
@ -2680,7 +2679,7 @@ WalletService.prototype.getTxHistory = function(opts, cb) {
address: item.address,
amount: item.amount,
isMine: !!address,
isChange: address ? address.isChange : false,
isChange: address ? (address.isChange || wallet.singleAddress) : false,
}
});
};
@ -2858,6 +2857,9 @@ WalletService.prototype.getTxHistory = function(opts, cb) {
});
};
self.getWallet({}, function(err, wallet) {
if (err) return cb(err);
// Get addresses for this wallet
self.storage.fetchAddresses(self.walletId, function(err, addresses) {
if (err) return cb(err);
@ -2901,7 +2903,7 @@ WalletService.prototype.getTxHistory = function(opts, cb) {
], function(err, res) {
if (err) return cb(err);
var finalTxs = decorate(res.txs.items, addresses, res.txps, res.notes);
var finalTxs = decorate(wallet, res.txs.items, addresses, res.txps, res.notes);
if (res.txs.fromCache)
log.debug("History from cache for:", self.walletId, from, to);
@ -2909,6 +2911,7 @@ WalletService.prototype.getTxHistory = function(opts, cb) {
return cb(null, finalTxs, !!res.txs.fromCache);
});
});
});
};

36
test/integration/server.js

@ -4245,6 +4245,42 @@ describe('Wallet service', function() {
});
});
});
it('should correctly handle change in tx history', function(done) {
server._normalizeTxHistory = sinon.stub().returnsArg(0);
helpers.stubUtxos(server, wallet, 2, function() {
var txs = [{
txid: '1',
confirmations: 1,
fees: 150,
time: Date.now() / 1000,
inputs: [{
address: firstAddress.address,
amount: 550,
}],
outputs: [{
address: firstAddress.address,
amount: 100,
}, {
address: 'external',
amount: 300,
}],
}];
helpers.stubHistory(txs);
server.getTxHistory({}, function(err, txs) {
should.not.exist(err);
should.exist(txs);
txs.length.should.equal(1);
var tx = txs[0];
tx.action.should.equal('sent');
tx.amount.should.equal(300);
tx.fees.should.equal(150);
tx.outputs.length.should.equal(1);
tx.outputs[0].address.should.equal('external');
tx.outputs[0].amount.should.equal(300);
done();
});
});
});
});

Loading…
Cancel
Save