From 627eba53489b3ad4d04ab5bb156d7610ffe9dfc8 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 13 May 2014 11:15:06 +0200 Subject: [PATCH] Added ground work for OC.Share unit tests --- core/js/core.json | 1 + core/js/tests/specHelper.js | 3 + core/js/tests/specs/shareSpec.js | 97 ++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 core/js/tests/specs/shareSpec.js diff --git a/core/js/core.json b/core/js/core.json index 05c2a17a67..f1e0ba883d 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 d86cd81cda..b9be9188a4 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 0000000000..a487b71fdb --- /dev/null +++ b/core/js/tests/specs/shareSpec.js @@ -0,0 +1,97 @@ +/** +* ownCloud +* +* @author Vincent Petry +* @copyright 2014 Vincent Petry +* +* 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 . +* +*/ + +/* global oc_appconfig */ +describe('OC.Share tests', function() { + describe('dropdown', function() { + var $container; + var oldAppConfig; + var loadItemStub; + var autocompleteStub; + beforeEach(function() { + $('#testArea').append($('
')); + $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 = $('
').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 + }); +}); +