From 4a8217744e1d1ca60d158c3497a09b92f857a7fd Mon Sep 17 00:00:00 2001 From: Duda Dornelles Date: Wed, 18 Feb 2015 13:17:30 -0200 Subject: #294 - using server error message on ajax if message is provided --- .../test/spec/helpers/monitored_ajax_call.spec.js | 41 ++++++++++++++++++++++ .../test/spec/mail_view/data/mail_sender.spec.js | 25 +++---------- web-ui/test/spec/services/mail_service.spec.js | 4 +-- 3 files changed, 48 insertions(+), 22 deletions(-) create mode 100644 web-ui/test/spec/helpers/monitored_ajax_call.spec.js (limited to 'web-ui/test') diff --git a/web-ui/test/spec/helpers/monitored_ajax_call.spec.js b/web-ui/test/spec/helpers/monitored_ajax_call.spec.js new file mode 100644 index 00000000..bf7a2db4 --- /dev/null +++ b/web-ui/test/spec/helpers/monitored_ajax_call.spec.js @@ -0,0 +1,41 @@ +define(['helpers/monitored_ajax'], function (monitoredAjax) { + 'use strict'; + describe('monitoredAjaxCall', function () { + describe('when dealing with errors', function () { + + _.each( + { + timeout: 'a timeout occurred', + error: 'problems talking to server', + parseerror: 'got invalid response from server' + }, function (errorMessage, errorType) { + it('shows message for a server ' + errorType, function () { + var component = { trigger: function () {}}; + spyOn(component, 'trigger'); + var d = $.Deferred(); + spyOn($, 'ajax').and.returnValue(d); + + monitoredAjax(component, '/', {}); + d.reject({ responseJSON: {}}, errorType, ''); + + expect(component.trigger).toHaveBeenCalledWith(document, Pixelated.events.ui.userAlerts.displayMessage, + { message: errorMessage }); + }); + }); + + it('shows the error message sent by the server if it exists', function () { + var component = { trigger: function () {}}; + spyOn(component, 'trigger'); + var d = $.Deferred(); + spyOn($, 'ajax').and.returnValue(d); + + monitoredAjax(component, '/', {}); + d.reject({ responseJSON: { message: 'Server Message'}}, 'error', ''); + + expect(component.trigger).toHaveBeenCalledWith(document, Pixelated.events.ui.userAlerts.displayMessage, + { message: 'Server Message' }); + }); + + }); + }); +}); \ No newline at end of file diff --git a/web-ui/test/spec/mail_view/data/mail_sender.spec.js b/web-ui/test/spec/mail_view/data/mail_sender.spec.js index 9b6c2828..6a1d356c 100644 --- a/web-ui/test/spec/mail_view/data/mail_sender.spec.js +++ b/web-ui/test/spec/mail_view/data/mail_sender.spec.js @@ -47,29 +47,14 @@ describeComponent('mail_view/data/mail_sender', function () { expect(JSON.parse($.ajax.calls.mostRecent().args[1].data).body).toEqual(mail.body); }); - it('displays generic error message when sending an email fails in the service', function () { - var deferred; - deferred = $.Deferred(); - deferred.reject({responseJSON: {}}, 500, 'Internal Server Error'); - - var messageEvent = spyOnEvent(document, Pixelated.events.ui.userAlerts.displayMessage); - spyOn($, 'ajax').and.returnValue(deferred); + it('uses the monitored ajax call to delegate for errors', function () { + var monitoredAjaxCall = require('helpers/monitored_ajax'); + spyOn(monitoredAjaxCall, 'call').and.returnValue($.Deferred()); this.component.trigger(Pixelated.events.mail.send, mail); + this.component.trigger(Pixelated.events.mail.saveDraft, mail); - expect(messageEvent).toHaveBeenTriggeredOnAndWith(document, {message: 'Ops! something went wrong, try again later.'}); + expect(monitoredAjaxCall.call.calls.count()).toEqual(2); }); - it('displays error message returned by the service when sending an email fails in the service', function () { - var deferred; - deferred = $.Deferred(); - deferred.reject({responseJSON: {message: 'test: error message'}}, 422, 'Unprocessable Entity'); - - var messageEvent = spyOnEvent(document, Pixelated.events.ui.userAlerts.displayMessage); - spyOn($, 'ajax').and.returnValue(deferred); - - this.component.trigger(Pixelated.events.mail.send, mail); - - expect(messageEvent).toHaveBeenTriggeredOnAndWith(document, {message: 'Error sending mail: test: error message'}); - }); }); diff --git a/web-ui/test/spec/services/mail_service.spec.js b/web-ui/test/spec/services/mail_service.spec.js index 685ad5bc..1a5cb9f7 100644 --- a/web-ui/test/spec/services/mail_service.spec.js +++ b/web-ui/test/spec/services/mail_service.spec.js @@ -164,12 +164,12 @@ describeComponent('services/mail_service', function () { it('will trigger an error message when a message cannot be deleted', function() { var deferred = $.Deferred(); - var spyAjax = spyOn($, 'ajax').and.returnValue(deferred); + spyOn($, 'ajax').and.returnValue(deferred); var spyEvent = spyOnEvent(document, Pixelated.events.ui.userAlerts.displayMessage); this.component.trigger(Pixelated.events.mail.delete, {mail: {ident: '43'}}); - deferred.reject(); + deferred.reject({responseJSON: {}}); expect(spyEvent).toHaveBeenTriggeredOnAndWith(document, {message: i18n('Could not delete email')} ); }); -- cgit v1.2.3