diff --git a/core/js/sharedialogview.js b/core/js/sharedialogview.js index f5ba3639e06aa8043d2bae7c2527de5a01d7da13..fbb3a9158107cc7ccc3bff3e9cdcbba9775f813e 100644 --- a/core/js/sharedialogview.js +++ b/core/js/sharedialogview.js @@ -281,6 +281,12 @@ .attr('disabled', false); $loading.addClass('hidden') .removeClass('inlineblock'); + }, error: function(obj, msg) { + OC.Notification.showTemporary(msg); + $(e.target).attr('disabled', false) + .autocomplete('search', $(e.target).val()); + $loading.addClass('hidden') + .removeClass('inlineblock'); }}); }, diff --git a/core/js/tests/specs/sharedialogviewSpec.js b/core/js/tests/specs/sharedialogviewSpec.js index 3a94379789a47bc748e4f2bad328a3d109e4d621..23214a7fe86a333fdb7689e74f52076520cd369c 100644 --- a/core/js/tests/specs/sharedialogviewSpec.js +++ b/core/js/tests/specs/sharedialogviewSpec.js @@ -990,6 +990,43 @@ describe('OC.Share.ShareDialogView', function() { addShareStub.restore(); }); + + it('calls addShare after selection and fail to share', function() { + dialog.render(); + + var shareWith = $('.shareWithField')[0]; + var $shareWith = $(shareWith); + var addShareStub = sinon.stub(shareModel, 'addShare'); + var autocompleteOptions = autocompleteStub.getCall(0).args[0]; + autocompleteOptions.select(new $.Event('select', {target: shareWith}), { + item: { + label: 'User Two', + value: { + shareType: OC.Share.SHARE_TYPE_USER, + shareWith: 'user2' + } + } + }); + + expect(addShareStub.calledOnce).toEqual(true); + expect(addShareStub.firstCall.args[0]).toEqual({ + shareType: OC.Share.SHARE_TYPE_USER, + shareWith: 'user2' + }); + + //Input is locked + expect($shareWith.val()).toEqual('User Two'); + expect($shareWith.attr('disabled')).toEqual('disabled'); + + //Callback is called + addShareStub.firstCall.args[1].error(); + + //Input is unlocked + expect($shareWith.val()).toEqual('User Two'); + expect($shareWith.attr('disabled')).toEqual(undefined); + + addShareStub.restore(); + }); }); describe('reshare permissions', function() { it('does not show sharing options when sharing not allowed', function() {