diff --git a/lib/TransactionDb.js b/lib/TransactionDb.js index 9d352ca..b61976b 100644 --- a/lib/TransactionDb.js +++ b/lib/TransactionDb.js @@ -408,7 +408,7 @@ TransactionDb.prototype.cacheScriptPubKey = function(txouts,cb) { TransactionDb.prototype._parseAddrData = function(k, data, ignoreCache) { var v = data.value.split(':'); - //console.log('[TransactionDb.js.375]',data.key,data.value); //TODO + // console.log('[TransactionDb.js.375]',data.key,data.value); var item = { key: data.key, ts: END_OF_WORLD_TS - parseInt(k[2]), @@ -416,7 +416,8 @@ TransactionDb.prototype._parseAddrData = function(k, data, ignoreCache) { index: parseInt(k[4]), value_sat: parseInt(v[0]), }; - if (ignoreCache) + + if (ignoreCache) return item; // Cache: @@ -426,10 +427,10 @@ TransactionDb.prototype._parseAddrData = function(k, data, ignoreCache) { if (v[1]==='1'){ item.isConfirmed = 1; item.isConfirmedCached = 1; - // console.log('[TransactionDb.js.356] CACHE HIT CONF:', item.key); //TODO + // console.log('[TransactionDb.js.356] CACHE HIT CONF:', item.key); // Sent, confirmed if (v[2] === '1'){ - // console.log('[TransactionDb.js.356] CACHE HIT SPENT:', item.key); //TODO + // console.log('[TransactionDb.js.356] CACHE HIT SPENT:', item.key); item.spentIsConfirmed = 1; item.spentIsConfirmedCached = 1; item.spentTxId = v[3]; @@ -437,11 +438,10 @@ TransactionDb.prototype._parseAddrData = function(k, data, ignoreCache) { item.spentTs = parseInt(v[5]); } // Scriptpubkey cached - // // TODO else if (v[2]) { item.scriptPubKey = v[2]; item.scriptPubKeyCached = 1; -// console.log('[TransactionDb.js.356] CACHE HIT SCRIPTPUBKEY:', item.key, v, item.scriptPubKey); //TODO +// console.log('[TransactionDb.js.356] CACHE HIT SCRIPTPUBKEY:', item.key, v, item.scriptPubKey); } } return item; diff --git a/test/integration/addrCache.js b/test/integration/addrCache.js index aca7634..815e76e 100644 --- a/test/integration/addrCache.js +++ b/test/integration/addrCache.js @@ -158,7 +158,41 @@ describe('Address cache ', function() { }, {onlyUnspent:1}); }); - + it('cache fix broken cases', function(done) { + txDb._db.put('txa2-2N7zvqQTUYFfhYvFs1NEzureMLvhwk5FSsk-9998599199253-16c0287dbea7e323431caff7f7e490da6de66530717f86f8dae9549b3355301a-0', '23000000:1399232338:0:a914a1d5be9f72224b5e83d00d7f5b9b674d456c573f87', function(){ + var a = new Address('2N7zvqQTUYFfhYvFs1NEzureMLvhwk5FSsk', txDb); + a.update(function(err) { + if (err) done(err); + a.balance.should.equal(0.23, 'balance'); + a.totalReceived.should.equal(0.23, 'totalReceived'); + a.txApperances.should.equal(1, 'txApperances'); + a.transactions.length.should.equal(1); + a.transactions[0].should.equal('16c0287dbea7e323431caff7f7e490da6de66530717f86f8dae9549b3355301a'); + return done(); + }); + }); + }); + it('cache fix broken cases 2)', function(done) { + txDb._db.put('txa2-2N7zvqQTUYFfhYvFs1NEzureMLvhwk5FSsk-9998599199253-16c0287dbea7e323431caff7f7e490da6de66530717f86f8dae9549b3355301a-0', '23000000:1399232338:0:a914a1d5be9f72224b5e83d00d7f5b9b674d456c573f87', function(){ + var a = new Address('2N7zvqQTUYFfhYvFs1NEzureMLvhwk5FSsk', txDb); + a.update(function(err) { + if (err) done(err); + a.unspent.length.should.equal(1); + a.unspent[0].confirmationsFromCache.should.equal(false); + a.unspent[0].confirmations.should.above(6); + a.unspent[0].scriptPubKey.should.equal('a914a1d5be9f72224b5e83d00d7f5b9b674d456c573f87'); + a.update(function(err) { + if (err) done(err); + a.unspent.length.should.equal(1); + a.unspent[0].confirmationsFromCache.should.equal(true); + a.unspent[0].confirmations.should.equal(6); + a.unspent[0].scriptPubKey.should.equal('a914a1d5be9f72224b5e83d00d7f5b9b674d456c573f87'); + return done(); + }, {onlyUnspent:1}); + }, {onlyUnspent:1}); + }); + }); + });