fix parseTrustline for case when no QualityIn or QualityOut are set in transaction

This commit is contained in:
Ivan Tivonenko
2015-08-19 04:36:18 +03:00
parent 98f6bed8c9
commit a55d26a726
7 changed files with 96 additions and 2 deletions

View File

@@ -15,8 +15,11 @@ function parseFlag(flagsValue, trueValue, falseValue) {
return undefined; return undefined;
} }
function parseQuality(quality) { function parseQuality(quality?: number) {
return (new BigNumber(quality)).shift(-9).toNumber(); if (typeof quality === 'number') {
return (new BigNumber(quality)).shift(-9).toNumber();
}
return undefined;
} }
function parseTrustline(tx: Object): Object { function parseTrustline(tx: Object): Object {

View File

@@ -204,6 +204,14 @@ describe('RippleAPI', function() {
'getTransaction')); 'getTransaction'));
}); });
it('getTransaction - trustline no quality', function() {
const hash =
'BAF1C678323C37CCB7735550C379287667D8288C30F83148AD3C1CB019FC9002';
return this.api.getTransaction(hash).then(
_.partial(checkResult, responses.getTransaction.trustlineNoQuality,
'getTransaction'));
});
it('getTransaction - not validated', function() { it('getTransaction - not validated', function() {
const hash = const hash =
'4FB3ADF22F3C605E23FAEFAA185F3BD763C4692CAC490D9819D117CD33BFAA10'; '4FB3ADF22F3C605E23FAEFAA185F3BD763C4692CAC490D9819D117CD33BFAA10';

View File

@@ -0,0 +1,27 @@
{
"type": "trustline",
"address": "r9UHu5CWni1qRY7Q4CfFZLGvXo2pGQy96b",
"sequence": 245,
"id": "BAF1C678323C37CCB7735550C379287667D8288C30F83148AD3C1CB019FC9002",
"specification": {
"limit": "1",
"currency": "USD",
"counterparty": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B"
},
"outcome": {
"result": "tesSUCCESS",
"timestamp": "2015-07-08T20:29:20.000Z",
"fee": "0.012",
"balanceChanges": {
"r9UHu5CWni1qRY7Q4CfFZLGvXo2pGQy96b": [
{
"currency": "XRP",
"value": "-0.012"
}
]
},
"orderbookChanges": {},
"ledgerVersion": 14518100,
"indexInLedger": 1
}
}

View File

@@ -23,6 +23,7 @@ module.exports = {
trackingOff: require('./get-transaction-settings-tracking-off.json'), trackingOff: require('./get-transaction-settings-tracking-off.json'),
setRegularKey: require('./get-transaction-settings-set-regular-key.json'), setRegularKey: require('./get-transaction-settings-set-regular-key.json'),
trustlineFrozenOff: require('./get-transaction-trust-set-frozen-off.json'), trustlineFrozenOff: require('./get-transaction-trust-set-frozen-off.json'),
trustlineNoQuality: require('./get-transaction-trust-no-quality.json'),
notValidated: require('./get-transaction-not-validated.json') notValidated: require('./get-transaction-not-validated.json')
}, },
getTransactions: require('./get-transactions.json'), getTransactions: require('./get-transactions.json'),

View File

@@ -31,6 +31,7 @@ module.exports = {
OfferCancel: require('./tx/offer-cancel.json'), OfferCancel: require('./tx/offer-cancel.json'),
TrustSet: require('./tx/trust-set.json'), TrustSet: require('./tx/trust-set.json'),
TrustSetFrozenOff: require('./tx/trust-set-frozen-off.json'), TrustSetFrozenOff: require('./tx/trust-set-frozen-off.json'),
TrustSetNoQuality: require('./tx/trust-set-no-quality.json'),
NotFound: require('./tx/not-found.json'), NotFound: require('./tx/not-found.json'),
NoLedgerIndex: require('./tx/no-ledger-index.json'), NoLedgerIndex: require('./tx/no-ledger-index.json'),
NoLedgerFound: require('./tx/no-ledger-found.json'), NoLedgerFound: require('./tx/no-ledger-found.json'),

View File

@@ -0,0 +1,51 @@
{
"id": 0,
"result": {
"Account": "r9UHu5CWni1qRY7Q4CfFZLGvXo2pGQy96b",
"Fee": "12000",
"Flags": 0,
"LastLedgerSequence": 14518103,
"LimitAmount": {
"currency": "USD",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
"value": "1"
},
"Sequence": 245,
"SigningPubKey": "036A749E3B7187E43E8936E3D83A7030989325249E03803F12B7F64BAACABA6025",
"TransactionType": "TrustSet",
"TxnSignature": "3045022100AFE1ADDA62C7604495C8CBBE8308471E9F55C7D646571621541F6E1B66BA1EE30220108E914EB9DF876E9B525ADDBDD378DFFDEDF72CD9030FE76909CA2CE73FAA6D",
"date": 489702560,
"hash": "BAF1C678323C37CCB7735550C379287667D8288C30F83148AD3C1CB019FC9002",
"inLedger": 14518100,
"ledger_index": 14518100,
"meta": {
"AffectedNodes": [
{
"ModifiedNode": {
"FinalFields": {
"Account": "r9UHu5CWni1qRY7Q4CfFZLGvXo2pGQy96b",
"Balance": "44491746",
"Domain": "726970706C652E636F6D",
"Flags": 0,
"OwnerCount": 4,
"Sequence": 246
},
"LedgerEntryType": "AccountRoot",
"LedgerIndex": "4AD70690C6FF8A069F8AE00B09F70E9B732360026E8085050D314432091A59C9",
"PreviousFields": {
"Balance": "44503746",
"Sequence": 245
},
"PreviousTxnID": "7ACFD6E9A0EC17A9872212D81788658C886A19EF5D6CA9737241D91953E588CD",
"PreviousTxnLgrSeq": 14518099
}
}
],
"TransactionIndex": 1,
"TransactionResult": "tesSUCCESS"
},
"validated": true
},
"status": "success",
"type": "response"
}

View File

@@ -190,6 +190,9 @@ module.exports = function(port) {
} else if (request.transaction === } else if (request.transaction ===
'FE72FAD0FA7CA904FB6C633A1666EDF0B9C73B2F5A4555D37EEF2739A78A531B') { 'FE72FAD0FA7CA904FB6C633A1666EDF0B9C73B2F5A4555D37EEF2739A78A531B') {
conn.send(createResponse(request, fixtures.tx.TrustSetFrozenOff)); conn.send(createResponse(request, fixtures.tx.TrustSetFrozenOff));
} else if (request.transaction ===
'BAF1C678323C37CCB7735550C379287667D8288C30F83148AD3C1CB019FC9002') {
conn.send(createResponse(request, fixtures.tx.TrustSetNoQuality));
} else if (request.transaction === } else if (request.transaction ===
'4FB3ADF22F3C605E23FAEFAA185F3BD763C4692CAC490D9819D117CD33BFAA10') { '4FB3ADF22F3C605E23FAEFAA185F3BD763C4692CAC490D9819D117CD33BFAA10') {
conn.send(createResponse(request, fixtures.tx.NotValidated)); conn.send(createResponse(request, fixtures.tx.NotValidated));