diff --git a/packages/javascript-api/src/lib/services/api-base/api-base.spec.ts b/packages/javascript-api/src/lib/services/api-base/api-base.spec.ts index c68e395c..be9feb4b 100644 --- a/packages/javascript-api/src/lib/services/api-base/api-base.spec.ts +++ b/packages/javascript-api/src/lib/services/api-base/api-base.spec.ts @@ -397,6 +397,30 @@ describe('ApiBase', () => { }, ); }); + + it('should handle error with complex error in "errors" property', (done) => { + Qminder.setKey(API_KEY); + + const response: any = { + ok: false, + statusCode: 409, + errors: { email: 'Email already in use' }, + }; + + fetchSpy.mockReturnValue(new MockResponse(response)); + + Qminder.ApiBase.request('TEST').then( + () => done(new Error('Should have errored')), + (error: ComplexError) => { + expect(error.error).toEqual({ email: 'Email already in use' }); + expect(error.message).toEqual( + 'Error occurred! Check error property for more information!', + ); + expect(error instanceof ComplexError).toBeTruthy(); + done(); + }, + ); + }); }); describe('queryGraph()', () => { diff --git a/packages/javascript-api/src/lib/services/api-base/api-base.ts b/packages/javascript-api/src/lib/services/api-base/api-base.ts index 8bcfc38c..6dabe0a8 100644 --- a/packages/javascript-api/src/lib/services/api-base/api-base.ts +++ b/packages/javascript-api/src/lib/services/api-base/api-base.ts @@ -174,6 +174,9 @@ export class ApiBase { if (Object.prototype.hasOwnProperty.call(response, 'error')) { return new ComplexError(response.error); } + if (Object.prototype.hasOwnProperty.call(response, 'errors')) { + return new ComplexError(response.errors); + } return new UnknownError(); }