import './helpers/mockRequestAtlassian'; import { CompassEventType } from '@atlassian/forge-graphql-types'; import api from '../../index'; import { MOCK_COMPONENT_ID, MOCK_EVENT_SOURCE_ID, MOCK_EVENT_SOURCE_INPUT, MOCK_EXTERNAL_EVENT_SOURCE_ID, } from '../fixtures/mocks'; import { mockAttachEventSource, mockCreateEventSource, } from './helpers/requestMocks'; const compassApp = api.compass.asApp(); const createEventSourceSpy = jest.spyOn(compassApp, 'createEventSource'); const attachEventSourceSpy = jest.spyOn(compassApp, 'attachEventSource'); const REQUEST_ARG = { componentId: MOCK_COMPONENT_ID, eventSource: MOCK_EVENT_SOURCE_INPUT(), }; describe('addEventSource', () => { beforeEach(() => { jest.clearAllMocks(); }); test('successfully added source', async () => { mockCreateEventSource(createEventSourceSpy); mockAttachEventSource(attachEventSourceSpy); const eventSourceResp = await compassApp.addEventSource(REQUEST_ARG); expect(attachEventSourceSpy).toMatchSnapshot(); expect(eventSourceResp).toEqual({ errors: [], success: true, data: { eventSource: { eventType: CompassEventType.Deployment, id: MOCK_EVENT_SOURCE_ID, externalEventSourceId: MOCK_EXTERNAL_EVENT_SOURCE_ID, }, }, }); }); test('create event source fails', async () => { const createEventSourceErrorMsg = 'Create event source failed'; mockCreateEventSource(createEventSourceSpy, MOCK_EVENT_SOURCE_ID, [ { message: createEventSourceErrorMsg }, ]); const eventSourceResp = await compassApp.addEventSource(REQUEST_ARG); expect(attachEventSourceSpy).not.toBeCalled(); expect(eventSourceResp).toEqual({ errors: [{ message: createEventSourceErrorMsg }], success: false, data: { eventSource: {} }, }); }); test('attach event source fails', async () => { const attachEventSourceErrorMsg = 'Attach event source failed'; mockCreateEventSource(createEventSourceSpy); mockAttachEventSource(attachEventSourceSpy, [ { message: attachEventSourceErrorMsg }, ]); const eventSourceResp = await compassApp.addEventSource(REQUEST_ARG); expect(attachEventSourceSpy).toMatchSnapshot(); expect(eventSourceResp).toEqual({ errors: [{ message: attachEventSourceErrorMsg }], success: false, data: { eventSource: {} }, }); }); });