UNPKG

@pact-foundation/pact

Version:
107 lines 4.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const messageConsumerPact_1 = require("./messageConsumerPact"); describe('MessageConsumer', () => { let consumer; beforeEach(() => { consumer = new messageConsumerPact_1.MessageConsumerPact({ consumer: 'myconsumer', provider: 'myprovider', }); }); const testMessage = { contents: { foo: 'bar', }, }; describe('#constructor', () => { it('creates a Consumer when all mandatory parameters are provided', () => { expect(consumer).toBeTypeOf('object'); expect(typeof consumer.verify).toBe('function'); }); }); describe('#dsl', () => { describe('when an empty description has been given', () => { it('it should throw an error', () => { expect(() => { consumer.expectsToReceive(''); }).toThrow(Error); }); }); describe('when an empty content object has been given', () => { it('it should throw an error', () => { expect(() => { consumer.withContent({}); }).toThrow(Error); }); }); describe('when an empty metadata object has been given', () => { it('it should throw an error', () => { expect(() => { consumer.withMetadata({}); }).toThrow(Error); }); }); }); describe('#verify', () => { describe('when given a valid handler and message', () => { it('verifies the consumer message', async () => { const stubbedConsumer = new messageConsumerPact_1.MessageConsumerPact({ consumer: 'myconsumer', provider: 'myprovider', }); // biome-ignore lint/suspicious/noExplicitAny: accessing private getServiceFactory method for test stubbing const stub = stubbedConsumer; // Stub out service factory stub.getServiceFactory = () => ({ createMessage: () => Promise.resolve('message created'), }); stubbedConsumer .given('some state') .expectsToReceive('A message about something') .withContent({ foo: 'bar' }) .withMetadata({ baz: 'bat' }); await stubbedConsumer.verify(() => Promise.resolve('yay!')); }); }); }); describe('handler transformers', () => { describe('#asynchronousbodyHandler', () => { describe('when given a function that succeeds', () => { it('returns a Handler object that returns a completed promise', async () => { const failFn = () => Promise.resolve('yay!'); const hFn = (0, messageConsumerPact_1.asynchronousBodyHandler)(failFn); await hFn(testMessage); }); }); describe('when given a function that throws an Exception', () => { it('returns a Handler object that returns a rejected promise', async () => { const failFn = () => Promise.reject(new Error('fail')); const hFn = (0, messageConsumerPact_1.asynchronousBodyHandler)(failFn); await expect(hFn(testMessage)).rejects.toThrow(); }); }); }); describe('#synchronousbodyHandler', () => { describe('when given a function that succeeds', () => { it('returns a Handler object that returns a completed promise', async () => { const failFn = () => { /* do nothing! */ }; const hFn = (0, messageConsumerPact_1.synchronousBodyHandler)(failFn); await hFn(testMessage); }); }); describe('when given a function that throws an Exception', () => { it('returns a Handler object that returns a rejected promise', async () => { const failFn = () => { throw new Error('fail'); }; const hFn = (0, messageConsumerPact_1.synchronousBodyHandler)(failFn); await expect(hFn(testMessage)).rejects.toThrow(); }); }); }); }); }); //# sourceMappingURL=messageConsumerPact.spec.js.map