import './helpers/mockRequestAtlassian'; import { FORGE_GRAPHQL_SDK_ERROR_SOURCE, GRAPHQL_GATEWAY_SOURCE, } from '../../helpers/constants'; import api from '../../index'; import { MOCK_BUILD_INPUT, MOCK_ERROR_MESSAGE, MOCK_ERROR_TYPE, MOCK_MUTATION_ERROR_MESSAGE, } from '../fixtures/mocks'; import { mockRequestGraph } from './helpers/requestMocks'; const compassApp = api.compass.asApp(); // @ts-ignore const requestGraphSpy = jest.spyOn(compassApp.api, 'requestGraph'); describe('createEvent', () => { beforeEach(() => { jest.clearAllMocks(); }); test('successfully creates a compass event', async () => { mockRequestGraph(requestGraphSpy, [], { compass: { createCompassEvent: { success: true, errors: null, }, }, } as any); const resp = await compassApp.createEvent(MOCK_BUILD_INPUT); expect(resp.success).toBeTruthy(); expect(resp).toMatchInlineSnapshot(` Object { "errors": Array [], "success": true, } `); }); test('transforms GqlErrors', async () => { mockRequestGraph(requestGraphSpy, [ { message: MOCK_MUTATION_ERROR_MESSAGE, extensions: { errorSource: GRAPHQL_GATEWAY_SOURCE, classification: MOCK_ERROR_TYPE, }, }, ]); const resp = await compassApp.createEvent(MOCK_BUILD_INPUT); expect(resp.errors[0].errorSource).toEqual(GRAPHQL_GATEWAY_SOURCE); expect(resp.success).toBeFalsy(); }); test('errors if response cannot be parsed', async () => { mockRequestGraph(requestGraphSpy, [], { invalid_response: 'hello world', } as any); const resp = await compassApp.createEvent(MOCK_BUILD_INPUT); expect(resp.errors[0].errorSource).toEqual(FORGE_GRAPHQL_SDK_ERROR_SOURCE); expect(resp.errors[0].statusCode).toEqual(500); expect(resp.success).toBeFalsy(); }); test('transforms GqlErrors', async () => { mockRequestGraph(requestGraphSpy, [ { message: MOCK_ERROR_MESSAGE, extensions: { errorSource: GRAPHQL_GATEWAY_SOURCE, classification: MOCK_ERROR_TYPE, }, }, ]); const resp = await compassApp.createEvent(MOCK_BUILD_INPUT); expect(resp.errors[0].errorSource).toEqual(GRAPHQL_GATEWAY_SOURCE); expect(resp.success).toBeFalsy(); }); });