summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/js/core.json1
-rw-r--r--core/js/tests/specHelper.js3
-rw-r--r--core/js/tests/specs/shareSpec.js97
3 files changed, 101 insertions, 0 deletions
diff --git a/core/js/core.json b/core/js/core.json
index 05c2a17a679..f1e0ba883d0 100644
--- a/core/js/core.json
+++ b/core/js/core.json
@@ -14,6 +14,7 @@
"jquery.ocdialog.js",
"oc-dialogs.js",
"js.js",
+ "share.js",
"octemplate.js",
"eventsource.js",
"config.js",
diff --git a/core/js/tests/specHelper.js b/core/js/tests/specHelper.js
index d86cd81cda8..b9be9188a4e 100644
--- a/core/js/tests/specHelper.js
+++ b/core/js/tests/specHelper.js
@@ -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
index 00000000000..a487b71fdbb
--- /dev/null
+++ b/core/js/tests/specs/shareSpec.js
@@ -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
+ });
+});
+