wip
This commit is contained in:
parent
17bbfcc6ce
commit
b3ed843057
@ -8,7 +8,6 @@ var log = index.log;
|
|||||||
var MempoolService = function(options) {
|
var MempoolService = function(options) {
|
||||||
BaseService.call(this, options);
|
BaseService.call(this, options);
|
||||||
this._db = this.node.services.db;
|
this._db = this.node.services.db;
|
||||||
this._tx = this.node.services.transaction;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
util.inherits(MempoolService, BaseService);
|
util.inherits(MempoolService, BaseService);
|
||||||
@ -65,18 +64,8 @@ MempoolService.prototype._onBlock = function(block) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
MempoolService.prototype._onTransaction = function(tx) {
|
MempoolService.prototype._onTransaction = function(tx) {
|
||||||
var txOps = this._getTxOperation(tx);
|
this._db.put(this._encoding.encodeMempoolTransactionKey(tx.id),
|
||||||
this._db.batch(txOps);
|
this._encoding.encodeMempoolTransactionValue(tx));
|
||||||
};
|
|
||||||
|
|
||||||
MempoolService.prototype._getTxOperations = function(tx) {
|
|
||||||
var inputValues = this._tx.getInputValues(tx);
|
|
||||||
tx.__inputValues = inputValues;
|
|
||||||
return {
|
|
||||||
type: 'put',
|
|
||||||
key: this._encoding.encodeMempoolTransactionKey(tx.id),
|
|
||||||
value: this._encoding.encodeMempoolTransactionValue(tx)
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
MempoolService.prototype.getTransaction = function(txid, callback) {
|
MempoolService.prototype.getTransaction = function(txid, callback) {
|
||||||
|
|||||||
@ -39,12 +39,61 @@ describe('Mempool Service', function() {
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('#getTransaction', function(done) {
|
describe('#stop', function() {
|
||||||
var get = sandbox.stub().callsArgWith(1, null, tx.toJSON());
|
it('should stop the service', function(done) {
|
||||||
|
mempoolService.stop(function() {
|
||||||
|
done();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('#getTransaction', function() {
|
||||||
|
|
||||||
|
it('should get a transaction', function(done) {
|
||||||
|
var get = sandbox.stub().callsArgWith(1, null, tx.toJSON());
|
||||||
|
var key = sandbox.stub();
|
||||||
|
mempoolService._encoding = { encodeMempoolTransactionKey: key };
|
||||||
|
mempoolService._db = { get: get };
|
||||||
|
mempoolService.getTransaction(tx.hash, function(err, mytx) {
|
||||||
|
if(err) {
|
||||||
|
return done(err);
|
||||||
|
}
|
||||||
|
expect(mytx).to.deep.equal(tx.toJSON());
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('#_onTransaction', function() {
|
||||||
|
|
||||||
|
it('should add the transaction to the database', function() {
|
||||||
|
var key = sandbox.stub();
|
||||||
|
var value = sandbox.stub();
|
||||||
|
mempoolService._encoding = {
|
||||||
|
encodeMempoolTransactionKey: key,
|
||||||
|
encodeMempoolTransactionValue: value
|
||||||
|
};
|
||||||
|
var put = sandbox.stub();
|
||||||
|
mempoolService._db = { put: put };
|
||||||
|
mempoolService._onTransaction({});
|
||||||
|
expect(key.calledOnce).to.be.true;
|
||||||
|
expect(value.calledOnce).to.be.true;
|
||||||
|
expect(put.calledOnce).to.be.true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('#_onBlock', function() {
|
||||||
|
it('should remove block\'s txs from database', function() {
|
||||||
|
var batch = sandbox.stub();
|
||||||
|
mempoolService._db = { batch: batch };
|
||||||
|
var block = { transactions: [ { id: 1 }, { id: 2 } ] };
|
||||||
|
mempoolService._onBlock(block);
|
||||||
|
expect(batch.calledOnce).to.be.true;
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user