diff --git a/src/js/ripple/transactionmanager.js b/src/js/ripple/transactionmanager.js index 7c26afb0..cc3e6c17 100644 --- a/src/js/ripple/transactionmanager.js +++ b/src/js/ripple/transactionmanager.js @@ -365,8 +365,6 @@ TransactionManager.prototype._request = function(tx) { return tx.emit('error', new RippleError('tejLocalSigningRequired', message)); } - tx.emit('presubmit'); - if (tx.finalized) { return; } @@ -557,9 +555,11 @@ TransactionManager.prototype._request = function(tx) { return; } - submitRequest.timeout(self._submissionTimeout, requestTimeout); - tx.submissions = submitRequest.broadcast(); + tx.emit('presubmit'); + submitRequest.timeout(self._submissionTimeout, requestTimeout); + + tx.submissions = submitRequest.broadcast(); tx.attempts++; tx.emit('postsubmit'); }; diff --git a/test/transaction-test.js b/test/transaction-test.js index 4e968876..79eb82e7 100644 --- a/test/transaction-test.js +++ b/test/transaction-test.js @@ -1560,33 +1560,34 @@ describe('Transaction', function() { transaction.submit(); }); - it.skip('Abort submission', function(done) { + it('Abort submission on presubmit', function(done) { var remote = new Remote(); - var transaction = new Transaction(remote).accountSet('r36xtKNKR43SeXnGn7kN4r4JdQzcrkqpWe'); - var account = remote.addAccount('r36xtKNKR43SeXnGn7kN4r4JdQzcrkqpWe'); + remote.setSecret('rJaT8TafQfYJqDm8aC5n3Yx5yWEL2Ery79', 'snPwFATthTkKnGjEW73q3TL4yci1Q'); + + var server = new Server(remote, 'wss://s1.ripple.com:443'); + server._computeFee = function() { return '12'; }; + server._connected = true; + + remote._servers.push(server); + remote._connected = true; + remote._ledger_current_index = 1; + + var transaction = new Transaction(remote).accountSet('rJaT8TafQfYJqDm8aC5n3Yx5yWEL2Ery79'); + var account = remote.account('rJaT8TafQfYJqDm8aC5n3Yx5yWEL2Ery79'); account._transactionManager._nextSequence = 1; - account._transactionManager._request = function(tx) { - setTimeout(function() { - tx.emit('success', { }); - }, 20); - }; + transaction.once('presubmit', function() { + transaction.abort(); + }); - transaction.complete = function() { - return this; - }; - - function submitCallback(err, res) { + transaction.submit(function(err, res) { setImmediate(function() { assert(err); assert.strictEqual(err.result, 'tejAbort'); done(); }); - }; - - transaction.submit(submitCallback); - transaction.abort(); + }); }); });