diff --git a/app/assets/javascripts/admin/subscriptions/controllers/products_panel_controller.js.coffee b/app/assets/javascripts/admin/subscriptions/controllers/products_panel_controller.js.coffee index 928654ace3..9d95874a21 100644 --- a/app/assets/javascripts/admin/subscriptions/controllers/products_panel_controller.js.coffee +++ b/app/assets/javascripts/admin/subscriptions/controllers/products_panel_controller.js.coffee @@ -20,4 +20,4 @@ angular.module("admin.subscriptions").controller "ProductsPanelController", ($sc keys = Object.keys(response.data.errors) StatusMessage.display 'failure', response.data.errors[keys[0]][0] else - StatusMessage.display 'success', t('js.changes_saved') + StatusMessage.display 'failure', t('js.admin.subscriptions.error_saving') diff --git a/config/locales/en.yml b/config/locales/en.yml index 8cb0a17c7f..f1945520a0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2642,6 +2642,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using customer_placeholder: "customer@example.org" valid_email_error: "Please enter a valid email address" subscriptions: + error_saving: "Error saving subscription" new: please_select_a_shop: "Please select a shop" insufficient_stock: "Insufficient stock available, only %{on_hand} remaining" diff --git a/spec/javascripts/unit/admin/subscriptions/controllers/products_panel_controller_spec.js.coffee b/spec/javascripts/unit/admin/subscriptions/controllers/products_panel_controller_spec.js.coffee new file mode 100644 index 0000000000..73ebf11ac3 --- /dev/null +++ b/spec/javascripts/unit/admin/subscriptions/controllers/products_panel_controller_spec.js.coffee @@ -0,0 +1,44 @@ +describe "ProductsPanelController", -> + scope = null + StatusMessage = null + subscription = { shop_id: 1 } + + beforeEach -> + module('admin.subscriptions') + inject ($controller, $rootScope, _StatusMessage_) -> + scope = $rootScope + scope.object = subscription + StatusMessage = _StatusMessage_ + $controller 'ProductsPanelController', {$scope: scope, StatusMessage: _StatusMessage_} + + describe "saving subscription", -> + update_promise_resolve = null + update_promise_reject = null + update_promise = null + + beforeEach -> + update_promise = new Promise (resolve, reject) -> + update_promise_resolve = resolve + update_promise_reject = reject + subscription.update = jasmine.createSpy('update').and.returnValue(update_promise) + StatusMessage.display = jasmine.createSpy('display') + + it "updates subscription and updates status message while in progress and on success", -> + scope.save() + + expect(subscription.update).toHaveBeenCalled() + expect(StatusMessage.display).toHaveBeenCalledWith('progress', 'Saving...') + expect(scope.saving).toEqual(true) + + update_promise.then -> + expect(StatusMessage.display.calls.all()[1].args).toEqual(['success', 'Changes saved.']) + expect(scope.saving).toEqual(false) + update_promise_resolve() + + it "updates status message on errors", -> + scope.save() + + update_promise.catch -> + expect(StatusMessage.display.calls.all()[1].args).toEqual(['failure', 'Error saving subscription']) + expect(scope.saving).toEqual(false) + update_promise_reject("error")