diff --git a/test/model/transaction.js b/test/model/transaction.js index 0b3e18d..6a50547 100644 --- a/test/model/transaction.js +++ b/test/model/transaction.js @@ -8,12 +8,15 @@ var mongoose= require('mongoose'), assert = require('assert'), config = require('../../config/config'), - Transaction = require('../../app/models/Transaction'); + Transaction = require('../../app/models/Transaction'), + TransactionItem = require('../../app/models/TransactionItem'), + fs = require('fs'); +var txItemsValid = JSON.parse(fs.readFileSync('test/model/txitems.json')); mongoose.connection.on('error', function(err) { console.log(err); }); -describe('Transaction fromIdWithInfo', function(){ +describe('Transaction', function(){ before(function(done) { mongoose.connect(config.db); @@ -26,20 +29,20 @@ describe('Transaction fromIdWithInfo', function(){ }); it('should pool tx\'s object from mongoose', function(done) { - var test_txid = '21798ddc9664ac0ef618f52b151dda82dafaf2e26d2bbef6cdaf55a6957ca237'; - Transaction.fromIdWithInfo(test_txid, function(err, tx) { + var txid = '21798ddc9664ac0ef618f52b151dda82dafaf2e26d2bbef6cdaf55a6957ca237'; + Transaction.fromIdWithInfo(txid, function(err, tx) { if (err) done(err); - assert.equal(tx.txid, test_txid); + assert.equal(tx.txid, txid); assert(!tx.info.isCoinBase); done(); }); }); it('should pool tx\'s info from bitcoind', function(done) { - var test_txid = '21798ddc9664ac0ef618f52b151dda82dafaf2e26d2bbef6cdaf55a6957ca237'; - Transaction.fromIdWithInfo(test_txid, function(err, tx) { + var txid = '21798ddc9664ac0ef618f52b151dda82dafaf2e26d2bbef6cdaf55a6957ca237'; + Transaction.fromIdWithInfo(txid, function(err, tx) { if (err) done(err); - assert.equal(tx.info.txid, test_txid); + assert.equal(tx.info.txid, txid); assert.equal(tx.info.blockhash, '000000000185678d3d7ecc9962c96418174431f93fe20bf216d5565272423f74'); assert.equal(tx.info.valueOut, 1.66174); assert.equal(tx.info.feeds, 0.0005 ); @@ -49,28 +52,57 @@ describe('Transaction fromIdWithInfo', function(){ }); }); - it('test a coinbase TX 2a104bab1782e9b6445583296d4a0ecc8af304e4769ceb64b890e8219c562399', function(done) { - var test_txid2 = '2a104bab1782e9b6445583296d4a0ecc8af304e4769ceb64b890e8219c562399'; - Transaction.fromIdWithInfo(test_txid2, function(err, tx) { + var txid1 = '2a104bab1782e9b6445583296d4a0ecc8af304e4769ceb64b890e8219c562399'; + it('test a coinbase TX ' + txid1, function(done) { + Transaction.fromIdWithInfo(txid1, function(err, tx) { if (err) done(err); assert(tx.info.isCoinBase); - assert.equal(tx.info.txid, test_txid2); + assert.equal(tx.info.txid, txid1); assert(!tx.info.feeds); done(); }); }); - it('test a broken TX 64496d005faee77ac5a18866f50af6b8dd1f60107d6795df34c402747af98608', function(done) { - var test_txid2 = '64496d005faee77ac5a18866f50af6b8dd1f60107d6795df34c402747af98608'; - Transaction.fromIdWithInfo(test_txid2, function(err, tx) { + var txid2 = '64496d005faee77ac5a18866f50af6b8dd1f60107d6795df34c402747af98608'; + it('test a broken TX ' + txid2, function(done) { + Transaction.fromIdWithInfo(txid2, function(err, tx) { if (err) done(err); - assert.equal(tx.info.txid, test_txid2); + assert.equal(tx.info.txid, txid2); assert.equal(tx.info.vin[0].addr, null); done(); }); }); - - + + + txItemsValid.forEach( function(v) { + it('test a exploding TX ' + v.txid, function(done) { + + // Remove first + TransactionItem.remove({txid: v.txid}, function(err) { + + Transaction.explodeTransactionItems(v.txid, function(err, tx) { + if (err) done(err); + + TransactionItem.find({txid: v.txid}).sort({ index:1 }).exec(function(err, readItems) { + + var match=0; + v.items.forEach(function(validItem){ + readItems.forEach(function(readItem){ + if ( readItem.addr === validItem.addr && + parseInt(readItem.index) === parseInt(validItem.index) && + parseFloat(readItem.value) === parseFloat(validItem.value) ) { + } + match=1; + }); + }); + var all = v.items.toString(); + assert(match, "Testing..." + readItems + "vs." + all); + done(); + }); + }); + }); + }); + }); }); diff --git a/test/model/txitems.json b/test/model/txitems.json new file mode 100644 index 0000000..bd0ffb4 --- /dev/null +++ b/test/model/txitems.json @@ -0,0 +1,22 @@ +[ + { + "txid": "21798ddc9664ac0ef618f52b151dda82dafaf2e26d2bbef6cdaf55a6957ca237", + "items": [ + { + "addr": "mwcFwXv2Yquy4vJA4nnNLAbHVjrPdC8Q1Z", + "value": 1.66224, + "index": 0 + }, + { + "addr": "mzjLe62faUqCSjkwQkwPAL5nYyR8K132fA", + "value": -1.34574, + "index": 0 + }, + { + "addr": "n28wb1cRGxPtfmsenYKFfsvnZ6kRapx3jF", + "value": -0.316, + "index": 1 + } + ] + } +]