]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fixed folder icon update routine when share owner exists
authorVincent Petry <pvince81@owncloud.com>
Fri, 15 Aug 2014 14:19:50 +0000 (16:19 +0200)
committerVincent Petry <pvince81@owncloud.com>
Fri, 15 Aug 2014 14:19:50 +0000 (16:19 +0200)
Whenever a folder has a "data-share-owner" attribute, the icon is now
properly updated to a shared folder icon.

apps/files/tests/js/filelistSpec.js
core/js/share.js
core/js/tests/specHelper.js
core/js/tests/specs/shareSpec.js

index 0580177c5ff9bdc643b9a83b0f268b450aedfc0b..cad564323b4aaf4a7aafe674d104438fc933d255 100644 (file)
@@ -938,16 +938,6 @@ describe('OCA.Files.FileList tests', function() {
        describe('file previews', function() {
                var previewLoadStub;
 
-               function getImageUrl($el) {
-                       // might be slightly different cross-browser
-                       var url = $el.css('background-image');
-                       var r = url.match(/url\(['"]?([^'")]*)['"]?\)/);
-                       if (!r) {
-                               return url;
-                       }
-                       return r[1];
-               }
-
                beforeEach(function() {
                        previewLoadStub = sinon.stub(OCA.Files.FileList.prototype, 'lazyLoadPreview');
                });
@@ -961,7 +951,7 @@ describe('OCA.Files.FileList tests', function() {
                        };
                        var $tr = fileList.add(fileData);
                        var $td = $tr.find('td.filename');
-                       expect(getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/file.svg');
+                       expect(OC.TestUtil.getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/file.svg');
                        expect(previewLoadStub.notCalled).toEqual(true);
                });
                it('renders default icon for dir when none provided and no preview is available', function() {
@@ -971,7 +961,7 @@ describe('OCA.Files.FileList tests', function() {
                        };
                        var $tr = fileList.add(fileData);
                        var $td = $tr.find('td.filename');
-                       expect(getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/folder.svg');
+                       expect(OC.TestUtil.getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/folder.svg');
                        expect(previewLoadStub.notCalled).toEqual(true);
                });
                it('renders provided icon for file when provided', function() {
@@ -982,7 +972,7 @@ describe('OCA.Files.FileList tests', function() {
                        };
                        var $tr = fileList.add(fileData);
                        var $td = $tr.find('td.filename');
-                       expect(getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/application-pdf.svg');
+                       expect(OC.TestUtil.getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/application-pdf.svg');
                        expect(previewLoadStub.notCalled).toEqual(true);
                });
                it('renders preview when no icon was provided and preview is available', function() {
@@ -993,11 +983,11 @@ describe('OCA.Files.FileList tests', function() {
                        };
                        var $tr = fileList.add(fileData);
                        var $td = $tr.find('td.filename');
-                       expect(getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/file.svg');
+                       expect(OC.TestUtil.getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/file.svg');
                        expect(previewLoadStub.calledOnce).toEqual(true);
                        // third argument is callback
                        previewLoadStub.getCall(0).args[0].callback(OC.webroot + '/somepath.png');
-                       expect(getImageUrl($td)).toEqual(OC.webroot + '/somepath.png');
+                       expect(OC.TestUtil.getImageUrl($td)).toEqual(OC.webroot + '/somepath.png');
                });
                it('renders default file type icon when no icon was provided and no preview is available', function() {
                        var fileData = {
@@ -1007,7 +997,7 @@ describe('OCA.Files.FileList tests', function() {
                        };
                        var $tr = fileList.add(fileData);
                        var $td = $tr.find('td.filename');
-                       expect(getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/file.svg');
+                       expect(OC.TestUtil.getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/file.svg');
                        expect(previewLoadStub.notCalled).toEqual(true);
                });
        });
index f6165602f6cf4c942e65fcad78b89aca777438f4..99a767b47f24428b82d26d5fddc48b2bc681dac7 100644 (file)
@@ -231,7 +231,7 @@ OC.Share={
                var shareFolderIcon;
                var image = OC.imagePath('core', 'actions/share');
                // update folder icon
-               if (type === 'dir' && (hasShares || hasLink)) {
+               if (type === 'dir' && (hasShares || hasLink || owner)) {
                        if (hasLink) {
                                shareFolderIcon = OC.imagePath('core', 'filetypes/folder-public');
                        }
index 3d208d9ef3f4a6953af4208045e07f60612f6d26..66e5d3578b2a73831b17caafd9268e5ac3daf9f3 100644 (file)
@@ -82,6 +82,26 @@ window.Snap.prototype = {
        var fakeServer = null,
                $testArea = null;
 
+       /**
+        * Utility functions for testing
+        */
+       var TestUtil = {
+               /**
+                * Returns the image URL set on the given element
+                * @param $el element
+                * @return {String} image URL
+                */
+               getImageUrl: function($el) {
+                       // might be slightly different cross-browser
+                       var url = $el.css('background-image');
+                       var r = url.match(/url\(['"]?([^'")]*)['"]?\)/);
+                       if (!r) {
+                               return url;
+                       }
+                       return r[1];
+               }
+       };
+
        beforeEach(function() {
                // test area for elements that need absolute selector access or measure widths/heights
                // which wouldn't work for detached or hidden elements
@@ -103,6 +123,10 @@ window.Snap.prototype = {
                // make it globally available, so that other tests can define
                // custom responses
                window.fakeServer = fakeServer;
+
+               if (!OC.TestUtil) {
+                       OC.TestUtil = TestUtil;
+               }
        });
 
        afterEach(function() {
index 893f816833b60928434469b9d39f066a9da972df..1fd36dfff04d66945c1e0d587a01a0d0b6a7dfc6 100644 (file)
@@ -562,7 +562,52 @@ describe('OC.Share tests', function() {
                        });
                });
 
-               // TODO: add unit tests for folder icons
+               describe('displaying the folder icon', function() {
+                       function checkIcon(expectedImage) {
+                               var imageUrl = OC.TestUtil.getImageUrl($file.find('.filename'));
+                               expectedIcon = OC.imagePath('core', expectedImage);
+                               expect(imageUrl).toEqual(expectedIcon);
+                       }
+
+                       it('shows a plain folder icon for non-shared folders', function() {
+                               $file.attr('data-type', 'dir');
+                               OC.Share.markFileAsShared($file);
+
+                               checkIcon('filetypes/folder');
+                       });
+                       it('shows a shared folder icon for folders shared with another user', function() {
+                               $file.attr('data-type', 'dir');
+                               OC.Share.markFileAsShared($file, true);
+
+                               checkIcon('filetypes/folder-shared');
+                       });
+                       it('shows a shared folder icon for folders shared with the current user', function() {
+                               $file.attr('data-type', 'dir');
+                               $file.attr('data-share-owner', 'someoneelse');
+                               OC.Share.markFileAsShared($file);
+
+                               checkIcon('filetypes/folder-shared');
+                       });
+                       it('shows a link folder icon for folders shared with link', function() {
+                               $file.attr('data-type', 'dir');
+                               OC.Share.markFileAsShared($file, false, true);
+
+                               checkIcon('filetypes/folder-public');
+                       });
+                       it('shows a link folder icon for folders shared with both link and another user', function() {
+                               $file.attr('data-type', 'dir');
+                               OC.Share.markFileAsShared($file, true, true);
+
+                               checkIcon('filetypes/folder-public');
+                       });
+                       it('shows a link folder icon for folders reshared with link', function() {
+                               $file.attr('data-type', 'dir');
+                               $file.attr('data-share-owner', 'someoneelse');
+                               OC.Share.markFileAsShared($file, false, true);
+
+                               checkIcon('filetypes/folder-public');
+                       });
+               });
                // TODO: add unit tests for share recipients
        });
 });