summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/js/shareitemmodel.js17
-rw-r--r--core/js/tests/specs/shareitemmodelSpec.js57
2 files changed, 72 insertions, 2 deletions
diff --git a/core/js/shareitemmodel.js b/core/js/shareitemmodel.js
index d883497433f..0c8b5f6f199 100644
--- a/core/js/shareitemmodel.js
+++ b/core/js/shareitemmodel.js
@@ -297,8 +297,7 @@
* @returns {boolean}
*/
hasUserShares: function() {
- var shares = this.get('shares');
- return _.isArray(shares) && shares.length > 0;
+ return this.getSharesWithCurrentItem().length > 0;
},
/**
@@ -408,6 +407,20 @@
},
/**
+ * Returns all share entries that only apply to the current item
+ * (file/folder)
+ *
+ * @return {Array.<OC.Share.Types.ShareInfo>}
+ */
+ getSharesWithCurrentItem: function() {
+ var shares = this.get('shares') || [];
+ var fileId = this.fileInfoModel.get('id');
+ return _.filter(shares, function(share) {
+ return share.item_source === fileId;
+ });
+ },
+
+ /**
* @param shareIndex
* @returns {string}
*/
diff --git a/core/js/tests/specs/shareitemmodelSpec.js b/core/js/tests/specs/shareitemmodelSpec.js
index 07a6fbdc23f..b169962f1d6 100644
--- a/core/js/tests/specs/shareitemmodelSpec.js
+++ b/core/js/tests/specs/shareitemmodelSpec.js
@@ -304,6 +304,63 @@ describe('OC.Share.ShareItemModel', function() {
expect(share.expiration).toEqual(1403900000);
});
});
+ describe('hasUserShares', function() {
+ it('returns false when no user shares exist', function() {
+ loadItemStub.yields({
+ reshare: {},
+ shares: []
+ });
+
+ model.fetch();
+
+ expect(model.hasUserShares()).toEqual(false);
+ });
+ it('returns true when user shares exist on the current item', function() {
+ loadItemStub.yields({
+ reshare: {},
+ shares: [{
+ id: 1,
+ share_type: OC.Share.SHARE_TYPE_USER,
+ share_with: 'user1',
+ item_source: '123'
+ }]
+ });
+
+ model.fetch();
+
+ expect(model.hasUserShares()).toEqual(true);
+ });
+ it('returns true when group shares exist on the current item', function() {
+ loadItemStub.yields({
+ reshare: {},
+ shares: [{
+ id: 1,
+ share_type: OC.Share.SHARE_TYPE_GROUP,
+ share_with: 'group1',
+ item_source: '123'
+ }]
+ });
+
+ model.fetch();
+
+ expect(model.hasUserShares()).toEqual(true);
+ });
+ it('returns false when share exist on parent item', function() {
+ loadItemStub.yields({
+ reshare: {},
+ shares: [{
+ id: 1,
+ share_type: OC.Share.SHARE_TYPE_GROUP,
+ share_with: 'group1',
+ item_source: '111'
+ }]
+ });
+
+ model.fetch();
+
+ expect(model.hasUserShares()).toEqual(false);
+ });
+ });
describe('Util', function() {
it('parseTime should properly parse strings', function() {