From 17770ad4c96bef623a14ae8b47b82864bf2215d4 Mon Sep 17 00:00:00 2001 From: wltsmrz Date: Fri, 22 Aug 2014 13:23:05 -0700 Subject: [PATCH] Fix set funded amount with unfunded native currency --- src/js/ripple/orderbook.js | 26 ++++++++++++++++++-------- test/orderbook-test.js | 16 ++++++++-------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/js/ripple/orderbook.js b/src/js/ripple/orderbook.js index 850d4ecf..56bf00d4 100644 --- a/src/js/ripple/orderbook.js +++ b/src/js/ripple/orderbook.js @@ -384,24 +384,34 @@ OrderBook.prototype.setFundedAmount = function(offer, fundedAmount) { offer.taker_gets_funded = fundedAmount; - var rate = Amount.from_json(offer.TakerPays) - .divide(Amount.from_json(offer.TakerGets)); + var takerPaysValue = typeof offer.TakerPays === 'object' + ? 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'); - takerPays.set_issuer('rrrrrrrrrrrrrrrrrrrrBZbvji'); + var takerPays = Amount.from_json( + takerPaysValue + '/000/rrrrrrrrrrrrrrrrrrrrBZbvji' + ); + + var takerGets = Amount.from_json( + takerGetsValue + '/000/rrrrrrrrrrrrrrrrrrrrBZbvji' + ); var fundedPays = Amount.from_json( - fundedAmount + '/XXX/rrrrrrrrrrrrrrrrrrrrBZbvji' + fundedAmount + '/000/rrrrrrrrrrrrrrrrrrrrBZbvji' ); + var rate = takerPays.divide(takerGets); + fundedPays = fundedPays.multiply(rate); if (fundedPays.compareTo(takerPays) < 0) { - offer.taker_pays_funded = fundedPays.to_text(); + offer.taker_pays_funded = fundedPays.to_json().value; } else { - offer.taker_pays_funded = Amount.from_json(offer.TakerPays).to_text(); + offer.taker_pays_funded = takerPays.to_json().value; } return offer; diff --git a/test/orderbook-test.js b/test/orderbook-test.js index bba06327..69524b56 100644 --- a/test/orderbook-test.js +++ b/test/orderbook-test.js @@ -369,12 +369,12 @@ describe('OrderBook', function() { }); var offer = { + TakerGets: '100', TakerPays: { value: '123456', currency: 'BTC', issuer: 'rrrrrrrrrrrrrrrrrrrrBZbvji' - }, - TakerGets: '100' + } }; book.setFundedAmount(offer, '99'); @@ -429,22 +429,22 @@ describe('OrderBook', function() { }); var offer = { - TakerGets: '100', - TakerPays: { + TakerGets: { value: '100.1234', currency: 'USD', issuer: 'rrrrrrrrrrrrrrrrrrrrBZbvji' - } + }, + TakerPays: '123' }; - book.setFundedAmount(offer, '99'); + book.setFundedAmount(offer, '100'); var expected = { TakerGets: offer.TakerGets, TakerPays: offer.TakerPays, is_fully_funded: false, - taker_gets_funded: '99', - taker_pays_funded: '99.122166' + taker_gets_funded: '100', + taker_pays_funded: '122.8484050681459' }; assert.deepEqual(offer, expected);