import NatsAdaptor from "../src/adaptors/nats"; import { RequestError } from "../src/error"; import { Message } from "../src/messages"; import Service from "../src/service"; let srv!: Service; const natsServer = '127.0.0.1:4222'; const serviceName = "test-service"; const adaptorName = "nats"; const subject = "test"; beforeEach(() => { srv = new Service(serviceName); }); afterEach(async () => { await srv.stop(); }); test('nats adaptor success', async () => { const dataExpected = "hello success"; const statusCodeExpected = 200; srv.addAdaptor(adaptorName, new NatsAdaptor({ servers: [natsServer] })); srv.subscribe(adaptorName, subject, async (msg: Message) => { return {data: msg.data, statusCode: statusCodeExpected}; }); await srv.listen(); const res = await srv.request(adaptorName, {service: serviceName, subject: subject, data: dataExpected}); expect(res.data).toBe(dataExpected); expect(res.statusCode).toBe(statusCodeExpected); }); test('nats adaptor error', async () => { const dataExpected = "hello error"; const statusCodeExpected = 500; srv.addAdaptor(adaptorName, new NatsAdaptor({ servers: [natsServer] })); srv.subscribe(adaptorName, subject, async (msg: Message) => { return {data: msg.data, statusCode: statusCodeExpected}; }); await srv.listen(); expect(srv.request(adaptorName, {service: serviceName, subject: subject, data: dataExpected})).rejects.toThrow(RequestError); });