UNPKG

mqrpc

Version:

💫 Easy RPC over RabbitMQ

50 lines (49 loc) • 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ava_1 = require("ava"); const sinon = require("sinon"); const _config_1 = require("../_config"); const RpcClient_1 = require("../../lib/RpcClient"); const errors_1 = require("../../lib/RpcClient/errors"); const Timer_1 = require("../../lib/Timer"); ava_1.default.beforeEach(async (t) => { t.context.client = new RpcClient_1.default({ amqpClient: { amqpUrl: _config_1.AMQP_URL }, rpcClient: { idleTimeout: 30, callTimeout: 100 } }); await t.context.client.init(); t.context.sandbox = sinon.sandbox.create(); t.context.sandbox.stub(t.context.client.amqpClient.channel, 'publish').resolves(); }); ava_1.default.afterEach(t => t.context.sandbox.restore()); ava_1.default('[unit] #term calls #term on the Amqp client', async (t) => { const spy = t.context.sandbox.spy(t.context.client.amqpClient, 'term'); await t.context.client.term(); sinon.assert.calledOnce(spy); t.pass(); }); ava_1.default('[unit] #term rejects all pending calls', async (t) => { const promises = [ t.context.client.call('marco'), t.context.client.call('polo') ]; await t.context.client.term(); await Promise.all(promises.map(promise => { return t.throws(promise, errors_1.CallTerminated); })); }); ava_1.default('[unit] #term clears all call timeouts', async (t) => { const spy = t.context.sandbox.spy(t.context.client.callTimer, 'clear'); await t.context.client.term(); sinon.assert.calledOnce(spy); t.pass(); }); ava_1.default('[unit] #term is idempotent', async (t) => { await t.context.client.term(); await t.notThrows(t.context.client.term()); }); ava_1.default('[unit] #term can wait for pending calls', async (t) => { const callPromise = t.context.client.call('marco'); await t.context.client.term({ waitForCalls: 500 }); await t.throws(callPromise, Timer_1.TimeoutExpired); });