54 lines
1.7 KiB
JavaScript
54 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
var sinon = require('sinon');
|
|
var should = require('chai').should();
|
|
var Sequelize = require('sequelize');
|
|
|
|
var bitcore = require('bitcore');
|
|
|
|
var TransactionService = require('../../lib/services/transaction');
|
|
|
|
describe('TransactionService', function() {
|
|
|
|
var service = new TransactionService();
|
|
var schema = sinon.stub();
|
|
|
|
var rawTransaction = '01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0704ffff001d0104ffffffff0100f2052a0100000043410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac00000000';
|
|
var transactionId = '0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098';
|
|
|
|
schema.Transaction = {};
|
|
schema.Transaction.find = sinon.stub();
|
|
|
|
var transactionResult = sinon.stub();
|
|
transactionResult.getDataValue = function() { return rawTransaction; };
|
|
|
|
it('initializes correctly', function() {
|
|
(new TransactionService()).should.exist();
|
|
});
|
|
|
|
describe('get', function() {
|
|
it('allows the user to fetch a transaction using its hash', function(callback) {
|
|
schema.Transaction.find.onFirstCall().returns({
|
|
then: function(f) {
|
|
return {
|
|
then: function(g) {
|
|
return g(f(transactionResult));
|
|
}
|
|
};
|
|
}
|
|
});
|
|
|
|
service.getTransaction(schema, transactionId).then(function(transaction) {
|
|
transaction.should.be.an.instanceof(bitcore.Transaction);
|
|
transaction.toString().should.equal(rawTransaction);
|
|
callback();
|
|
});
|
|
});
|
|
it('fails on a non-string argument', function() {
|
|
(function() {
|
|
return service.getTransaction();
|
|
}).should.throw(bitcore.errors.InvalidArgument);
|
|
});
|
|
});
|
|
});
|