diff options
Diffstat (limited to 'apps/files_sharing')
-rw-r--r-- | apps/files_sharing/js/share.js | 10 | ||||
-rw-r--r-- | apps/files_sharing/tests/js/shareSpec.js | 48 |
2 files changed, 33 insertions, 25 deletions
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index 8a63593883b..e833612fb51 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -75,7 +75,9 @@ OCA.Sharing.sharesLoaded = true; } else{ - // this will update the icons for all the visible elements + // this will update the icons for all the currently visible elements + // additionally added elements when scrolling down will be + // updated in the _renderRow override OC.Share.updateIcons('file', fileList); } }); @@ -113,11 +115,11 @@ OC.Share.showDropDown(itemType, $tr.data('id'), appendTo, true, possiblePermissions, filename); } $('#dropdown').on('sharesChanged', function(ev) { + var recipients = _.pluck(ev.shares[OC.Share.SHARE_TYPE_USER], 'share_with_displayname'); + var groupRecipients = _.pluck(ev.shares[OC.Share.SHARE_TYPE_GROUP], 'share_with_displayname'); + recipients = recipients.concat(groupRecipients); // note: we only update the data attribute because updateIcon() // is called automatically after this event - var userShares = ev.itemShares[OC.Share.SHARE_TYPE_USER] || []; - var groupShares = ev.itemShares[OC.Share.SHARE_TYPE_GROUP] || []; - var recipients = _.union(userShares, groupShares); if (recipients.length) { $tr.attr('data-share-recipients', OCA.Sharing.Util.formatRecipients(recipients)); } diff --git a/apps/files_sharing/tests/js/shareSpec.js b/apps/files_sharing/tests/js/shareSpec.js index 1b75ad7a9fd..455addaccc0 100644 --- a/apps/files_sharing/tests/js/shareSpec.js +++ b/apps/files_sharing/tests/js/shareSpec.js @@ -71,6 +71,7 @@ describe('OCA.Sharing.Util tests', function() { delete OCA.Sharing.sharesLoaded; delete OC.Share.droppedDown; OC.Share.statuses = {}; + OC.Share.currentShares = {}; }); describe('Sharing data in table row', function() { @@ -205,6 +206,12 @@ describe('OCA.Sharing.Util tests', function() { describe('Share action', function() { var showDropDownStub; + function makeDummyShareItem(displayName) { + return { + share_with_displayname: displayName + }; + } + beforeEach(function() { showDropDownStub = sinon.stub(OC.Share, 'showDropDown', function() { $('#testArea').append($('<div id="dropdown"></div>')); @@ -236,11 +243,12 @@ describe('OCA.Sharing.Util tests', function() { expect(showDropDownStub.calledOnce).toEqual(true); // simulate what the dropdown does - var itemShares = {}; - itemShares[OC.Share.SHARE_TYPE_USER] = ['User One', 'User Two']; - itemShares[OC.Share.SHARE_TYPE_GROUP] = ['Group One', 'Group Two']; - OC.Share.itemShares = itemShares; - $('#dropdown').trigger(new $.Event('sharesChanged', {itemShares: itemShares})); + var shares = {}; + OC.Share.itemShares[OC.Share.SHARE_TYPE_USER] = ['user1', 'user2']; + OC.Share.itemShares[OC.Share.SHARE_TYPE_GROUP] = ['group1', 'group2']; + shares[OC.Share.SHARE_TYPE_USER] = _.map(['User One', 'User Two'], makeDummyShareItem); + shares[OC.Share.SHARE_TYPE_GROUP] = _.map(['Group One', 'Group Two'], makeDummyShareItem); + $('#dropdown').trigger(new $.Event('sharesChanged', {shares: shares})); expect($tr.attr('data-share-recipients')).toEqual('Group One, Group Two, User One, User Two'); @@ -249,7 +257,7 @@ describe('OCA.Sharing.Util tests', function() { expect($action.find('>span').text()).toEqual('Shared with Group One, Group Two, User One, User Two'); expect(OC.basename($action.find('img').attr('src'))).toEqual('share.svg'); }); - it('removes share icon after unsharing a shared file', function() { + it('updates share icon after updating shares of a file', function() { var $action, $tr; OC.Share.statuses = {1: {link: false, path: '/subdir'}}; fileList.setFiles([{ @@ -272,10 +280,10 @@ describe('OCA.Sharing.Util tests', function() { expect(showDropDownStub.calledOnce).toEqual(true); // simulate what the dropdown does - var itemShares = {}; - itemShares[OC.Share.SHARE_TYPE_USER] = ['User One', 'User Two', 'User Three']; - OC.Share.itemShares = itemShares; - $('#dropdown').trigger(new $.Event('sharesChanged', {itemShares: itemShares})); + var shares = {}; + OC.Share.itemShares[OC.Share.SHARE_TYPE_USER] = ['user1', 'user2', 'user3']; + shares[OC.Share.SHARE_TYPE_USER] = _.map(['User One', 'User Two', 'User Three'], makeDummyShareItem); + $('#dropdown').trigger(new $.Event('sharesChanged', {shares: shares})); expect($tr.attr('data-share-recipients')).toEqual('User One, User Three, User Two'); @@ -285,7 +293,7 @@ describe('OCA.Sharing.Util tests', function() { expect($action.find('>span').text()).toEqual('Shared with User One, User Three, User Two'); expect(OC.basename($action.find('img').attr('src'))).toEqual('share.svg'); }); - it('updates share icon after modifying shares on a shared file', function() { + it('removes share icon after removing all shares from a file', function() { var $action, $tr; OC.Share.statuses = {1: {link: false, path: '/subdir'}}; fileList.setFiles([{ @@ -309,9 +317,8 @@ describe('OCA.Sharing.Util tests', function() { expect(showDropDownStub.calledOnce).toEqual(true); // simulate what the dropdown does - var itemShares = {}; - OC.Share.itemShares = itemShares; - $('#dropdown').trigger(new $.Event('sharesChanged', {itemShares: itemShares})); + OC.Share.itemShares = {}; + $('#dropdown').trigger(new $.Event('sharesChanged', {shares: {}})); expect($tr.attr('data-share-recipients')).not.toBeDefined(); @@ -342,10 +349,10 @@ describe('OCA.Sharing.Util tests', function() { expect(showDropDownStub.calledOnce).toEqual(true); // simulate what the dropdown does - var itemShares = {}; - itemShares[OC.Share.SHARE_TYPE_USER] = ['User Two']; - OC.Share.itemShares = itemShares; - $('#dropdown').trigger(new $.Event('sharesChanged', {itemShares: itemShares})); + var shares = {}; + OC.Share.itemShares[OC.Share.SHARE_TYPE_USER] = ['user2']; + shares[OC.Share.SHARE_TYPE_USER] = _.map(['User Two'], makeDummyShareItem); + $('#dropdown').trigger(new $.Event('sharesChanged', {shares: shares})); expect($tr.attr('data-share-recipients')).toEqual('User Two'); @@ -380,9 +387,8 @@ describe('OCA.Sharing.Util tests', function() { expect(showDropDownStub.calledOnce).toEqual(true); // simulate what the dropdown does - var itemShares = {}; - OC.Share.itemShares = itemShares; - $('#dropdown').trigger(new $.Event('sharesChanged', {itemShares: itemShares})); + OC.Share.itemShares = {}; + $('#dropdown').trigger(new $.Event('sharesChanged', {shares: {}})); expect($tr.attr('data-share-recipients')).not.toBeDefined(); |