mqrpc
Version:
💫 Easy RPC over RabbitMQ
31 lines (30 loc) • 1.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ava_1 = require("ava");
const RpcServer_1 = require("../../lib/RpcServer");
const errors_1 = require("../../lib/RpcServer/errors");
ava_1.default.beforeEach(t => {
t.context.server = new RpcServer_1.default({ amqpClient: { amqpUrl: '' } });
});
ava_1.default('[unit] #call throws when no procedure name is given', t => {
return t.throws(t.context.server.call('', []), errors_1.InvalidCall);
});
ava_1.default('[unit] #call throws when the procedure does not exist', t => {
return t.throws(t.context.server.call('noop', []), errors_1.NoSuchProcedure);
});
ava_1.default('[unit] #call returns what the procedure resolves', async (t) => {
t.context.server.register('meaning.of.life', () => 42);
t.is(await t.context.server.call('meaning.of.life', []), 42);
});
ava_1.default('[unit] #call throws wrapped procedure errors', async (t) => {
t.plan(5);
t.context.server.register('meaning.of.life', () => Promise.reject(new Error('42')));
return t.context.server.call('meaning.of.life', [])
.catch(err => {
t.true(err instanceof errors_1.ProcedureFailed);
t.truthy(err.cause);
t.true(err.cause instanceof Error);
t.is(err.cause.message, '42');
t.is(err.stack, err.cause.stack);
});
});