]> source.dussan.org Git - nextcloud-server.git/commitdiff
Added ground work for OC.Share unit tests
authorVincent Petry <pvince81@owncloud.com>
Tue, 13 May 2014 09:15:06 +0000 (11:15 +0200)
committerVincent Petry <pvince81@owncloud.com>
Tue, 13 May 2014 09:15:06 +0000 (11:15 +0200)
core/js/core.json
core/js/tests/specHelper.js
core/js/tests/specs/shareSpec.js [new file with mode: 0644]

index 05c2a17a679839dbb7e57fb7de2c322c18ef56de..f1e0ba883d0f0d9378cabacab46303c2307edaa1 100644 (file)
@@ -14,6 +14,7 @@
                "jquery.ocdialog.js",
                "oc-dialogs.js",
                "js.js",
+               "share.js",
                "octemplate.js",
                "eventsource.js",
                "config.js",
index d86cd81cda86b58a20c0879b3061c708bf895c22..b9be9188a4e77f20c179ce5c26a703fa397927c5 100644 (file)
@@ -63,6 +63,9 @@ window.oc_config = {
        session_lifetime: 600 * 1000,
        session_keepalive: false
 };
+window.oc_appconfig = {
+       core: {}
+};
 window.oc_defaults = {};
 
 // global setup for all tests
diff --git a/core/js/tests/specs/shareSpec.js b/core/js/tests/specs/shareSpec.js
new file mode 100644 (file)
index 0000000..a487b71
--- /dev/null
@@ -0,0 +1,97 @@
+/**
+* ownCloud
+*
+* @author Vincent Petry
+* @copyright 2014 Vincent Petry <pvince81@owncloud.com>
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+* License as published by the Free Software Foundation; either
+* version 3 of the License, or any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+*
+* You should have received a copy of the GNU Affero General Public
+* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+
+/* global oc_appconfig */
+describe('OC.Share tests', function() {
+       describe('dropdown', function() {
+               var $container;
+               var oldAppConfig;
+               var loadItemStub;
+               var autocompleteStub;
+               beforeEach(function() {
+                       $('#testArea').append($('<div id="shareContainer"></div>'));
+                       $container = $('#shareContainer');
+                       /* jshint camelcase:false */
+                       oldAppConfig = oc_appconfig.core;
+                       loadItemStub = sinon.stub(OC.Share, 'loadItem');
+
+                       loadItemStub.returns({
+                               reshare: [],
+                               shares: []
+                       });
+
+                       autocompleteStub = sinon.stub($.fn, 'autocomplete', function() {
+                               // dummy container with the expected attributes
+                               var $el = $('<div></div>').data('ui-autocomplete', {});
+                               return $el;
+                       });
+               });
+               afterEach(function() {
+                       /* jshint camelcase:false */
+                       oc_appconfig.core = oldAppConfig;
+                       loadItemStub.restore();
+
+                       autocompleteStub.restore();
+               });
+               it('calls loadItem with the correct arguments', function() {
+                       OC.Share.showDropDown(
+                               'file',
+                               123,
+                               $container,
+                               'http://localhost/dummylink',
+                               31,
+                               'shared_file_name.txt'
+                       );
+                       expect(loadItemStub.calledOnce).toEqual(true);
+                       expect(loadItemStub.calledWith('file', 123)).toEqual(true);
+               });
+               it('shows the dropdown with default values', function() {
+                       var $el;
+                       OC.Share.showDropDown(
+                               'file',
+                               123,
+                               $container,
+                               'http://localhost/dummylink',
+                               31,
+                               'shared_file_name.txt'
+                       );
+                       $el = $container.find('#dropdown');
+                       expect($el.length).toEqual(1);
+                       expect($el.attr('data-item-type')).toEqual('file');
+                       expect($el.attr('data-item-source')).toEqual('123');
+                       // TODO: expect that other parts are rendered correctly
+               });
+               it('shows default expiration date when set', function() {
+                       oc_appconfig.core.defaultExpireDateEnabled = "yes";
+                       oc_appconfig.core.defaultExpireDate = '';
+                       // TODO: expect that default date was set
+               });
+               it('shows default expiration date is set but disabled', function() {
+                       oc_appconfig.core.defaultExpireDateEnabled = "no";
+                       oc_appconfig.core.defaultExpireDate = '';
+                       // TODO: expect that default date was NOT set
+               });
+               // TODO: test password field visibility (whenever enforced or not)
+               // TODO: check link share field visibility based on whether it is allowed
+               // TODO: check public upload visibility based on config
+       });
+});
+