Fix set funded amount with unfunded native currency

This commit is contained in:
wltsmrz
2014-08-22 13:23:05 -07:00
parent 51e4cb15b4
commit 17770ad4c9
2 changed files with 26 additions and 16 deletions

View File

@@ -384,24 +384,34 @@ OrderBook.prototype.setFundedAmount = function(offer, fundedAmount) {
offer.taker_gets_funded = fundedAmount; offer.taker_gets_funded = fundedAmount;
var rate = Amount.from_json(offer.TakerPays) var takerPaysValue = typeof offer.TakerPays === 'object'
.divide(Amount.from_json(offer.TakerGets)); ? offer.TakerPays.value
: offer.TakerPays;
var takerPays = Amount.from_json(offer.TakerPays); var takerGetsValue = typeof offer.TakerGets === 'object'
? offer.TakerGets.value
: offer.TakerGets;
takerPays.set_currency('XXX'); var takerPays = Amount.from_json(
takerPays.set_issuer('rrrrrrrrrrrrrrrrrrrrBZbvji'); takerPaysValue + '/000/rrrrrrrrrrrrrrrrrrrrBZbvji'
);
var takerGets = Amount.from_json(
takerGetsValue + '/000/rrrrrrrrrrrrrrrrrrrrBZbvji'
);
var fundedPays = Amount.from_json( var fundedPays = Amount.from_json(
fundedAmount + '/XXX/rrrrrrrrrrrrrrrrrrrrBZbvji' fundedAmount + '/000/rrrrrrrrrrrrrrrrrrrrBZbvji'
); );
var rate = takerPays.divide(takerGets);
fundedPays = fundedPays.multiply(rate); fundedPays = fundedPays.multiply(rate);
if (fundedPays.compareTo(takerPays) < 0) { if (fundedPays.compareTo(takerPays) < 0) {
offer.taker_pays_funded = fundedPays.to_text(); offer.taker_pays_funded = fundedPays.to_json().value;
} else { } else {
offer.taker_pays_funded = Amount.from_json(offer.TakerPays).to_text(); offer.taker_pays_funded = takerPays.to_json().value;
} }
return offer; return offer;

View File

@@ -369,12 +369,12 @@ describe('OrderBook', function() {
}); });
var offer = { var offer = {
TakerGets: '100',
TakerPays: { TakerPays: {
value: '123456', value: '123456',
currency: 'BTC', currency: 'BTC',
issuer: 'rrrrrrrrrrrrrrrrrrrrBZbvji' issuer: 'rrrrrrrrrrrrrrrrrrrrBZbvji'
}, }
TakerGets: '100'
}; };
book.setFundedAmount(offer, '99'); book.setFundedAmount(offer, '99');
@@ -429,22 +429,22 @@ describe('OrderBook', function() {
}); });
var offer = { var offer = {
TakerGets: '100', TakerGets: {
TakerPays: {
value: '100.1234', value: '100.1234',
currency: 'USD', currency: 'USD',
issuer: 'rrrrrrrrrrrrrrrrrrrrBZbvji' issuer: 'rrrrrrrrrrrrrrrrrrrrBZbvji'
} },
TakerPays: '123'
}; };
book.setFundedAmount(offer, '99'); book.setFundedAmount(offer, '100');
var expected = { var expected = {
TakerGets: offer.TakerGets, TakerGets: offer.TakerGets,
TakerPays: offer.TakerPays, TakerPays: offer.TakerPays,
is_fully_funded: false, is_fully_funded: false,
taker_gets_funded: '99', taker_gets_funded: '100',
taker_pays_funded: '99.122166' taker_pays_funded: '122.8484050681459'
}; };
assert.deepEqual(offer, expected); assert.deepEqual(offer, expected);