From 99ed1cea59f4106965016d7048ce7f35c37da7bf Mon Sep 17 00:00:00 2001 From: Dustin Deus Date: Sun, 19 Feb 2017 21:58:49 +0100 Subject: [PATCH] cover github issue in test suite --- test/hemera/index.spec.js | 81 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/test/hemera/index.spec.js b/test/hemera/index.spec.js index 436d6fa32..c8ce90731 100644 --- a/test/hemera/index.spec.js +++ b/test/hemera/index.spec.js @@ -387,6 +387,87 @@ describe('public interface', function () { }) }) +describe('Timeouts', function () { + var PORT = 6242 + var flags = ['--user', 'derek', '--pass', 'foobar'] + var authUrl = 'nats://derek:foobar@localhost:' + PORT + var server + + // Start up our own nats-server + before(function (done) { + server = HemeraTestsuite.start_server(PORT, flags, done) + }) + + // Shutdown our server after we are done + after(function () { + server.kill() + }) + + it('Issue #39 - Should get the correct results even when the answers are responded after a timeout', function (done) { + const nats = require('nats').connect(authUrl) + + const hemera = new Hemera(nats) + + let aError = 0 + let bError = 0 + let aResult = 0 + let bResult = 0 + + hemera.ready(() => { + hemera.add({ + topic: 'test', + cmd: 'A' + }, (resp, cb) => { + setTimeout(() => { + cb(null, { + ok: true + }) + }, 250) + }) + + hemera.add({ + topic: 'test', + cmd: 'B' + }, function (resp, cb) { + this.act({ + topic: 'test', + cmd: 'A', + timeout$: 100 + }, function (err, res) { + if (err) { + aError++ + cb(err) + } else { + aResult++ + cb(null, res) + } + }) + }) + + hemera.act({ + topic: 'test', + cmd: 'B', + timeout$: 150 + }, function (err, resp) { + if (err) { + bError++ + } else { + bResult++ + } + }) + + setTimeout(() => { + expect(aError).to.be.equals(1) + expect(aResult).to.be.equals(1) + expect(bError).to.be.equals(1) + expect(bResult).to.be.equals(1) + hemera.close() + done() + }, 300) + }) + }) +}) + describe('Timeouts', function () { var PORT = 6242 var flags = ['--user', 'derek', '--pass', 'foobar']