summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Needham <tom@owncloud.com>2015-10-28 15:33:42 +0000
committerMorris Jobke <hey@morrisjobke.de>2015-10-29 09:01:47 +0100
commit628e4a9daf0870243baff8ea0f6447e04760cf78 (patch)
tree356372e1fa309122117f5034c5cda754082ed3f8
parent527ef76dd6e45c2776edbc90829323e0ca534214 (diff)
downloadnextcloud-server-628e4a9daf0870243baff8ea0f6447e04760cf78.tar.gz
nextcloud-server-628e4a9daf0870243baff8ea0f6447e04760cf78.zip
Add sharee list view js tests
-rw-r--r--core/js/tests/specs/sharedialogshareelistview.js158
1 files changed, 158 insertions, 0 deletions
diff --git a/core/js/tests/specs/sharedialogshareelistview.js b/core/js/tests/specs/sharedialogshareelistview.js
new file mode 100644
index 00000000000..d468ce790dc
--- /dev/null
+++ b/core/js/tests/specs/sharedialogshareelistview.js
@@ -0,0 +1,158 @@
+/**
+ * ownCloud
+ *
+ * @author Tom Needham
+ * @copyright 2015 Tom Needham <tom@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.ShareDialogShareeListView', function () {
+
+ var oldCurrentUser;
+ var fileInfoModel;
+ var configModel;
+ var shareModel;
+ var listView;
+ var setPermissionsStub;
+
+ beforeEach(function () {
+ /* jshint camelcase:false */
+ oldAppConfig = _.extend({}, oc_appconfig.core);
+ oc_appconfig.core.enforcePasswordForPublicLink = false;
+
+ $('#testArea').append('<input id="mailPublicNotificationEnabled" name="mailPublicNotificationEnabled" type="hidden" value="yes">');
+
+ fileInfoModel = new OCA.Files.FileInfoModel({
+ id: 123,
+ name: 'shared_file_name.txt',
+ path: '/subdir',
+ size: 100,
+ mimetype: 'text/plain',
+ permissions: 31,
+ sharePermissions: 31
+ });
+
+ var attributes = {
+ itemType: fileInfoModel.isDirectory() ? 'folder' : 'file',
+ itemSource: fileInfoModel.get('id'),
+ possiblePermissions: 31,
+ permissions: 31
+ };
+
+ shareModel = new OC.Share.ShareItemModel(attributes, {
+ configModel: configModel,
+ fileInfoModel: fileInfoModel
+ });
+
+ configModel = new OC.Share.ShareConfigModel({
+ enforcePasswordForPublicLink: false,
+ isResharingAllowed: true,
+ enforcePasswordForPublicLink: false,
+ isDefaultExpireDateEnabled: false,
+ isDefaultExpireDateEnforced: false,
+ defaultExpireDate: 7
+ });
+
+ listView = new OC.Share.ShareDialogShareeListView({
+ configModel: configModel,
+ model: shareModel
+ });
+
+ // required for proper event propagation when simulating clicks in some cases (jquery bugs)
+ $('#testArea').append(listView.$el);
+
+ shareModel.set({
+ linkShare: {isLinkShare: false}
+ });
+
+ oldCurrentUser = OC.currentUser;
+ OC.currentUser = 'user0';
+ setPermissionsStub = sinon.stub(listView.model, 'setPermissions');
+ });
+
+ afterEach(function () {
+ OC.currentUser = oldCurrentUser;
+ /* jshint camelcase:false */
+ oc_appconfig.core = oldAppConfig;
+ listView.remove();
+ setPermissionsStub.restore();
+ });
+
+ describe('Manages checkbox events correctly', function () {
+ it('Checks cruds boxes when edit box checked', function () {
+ shareModel.set('shares', [{
+ id: 100,
+ item_source: 123,
+ permissions: 1,
+ share_type: OC.Share.SHARE_TYPE_USER,
+ share_with: 'user1',
+ share_with_displayname: 'User One'
+ }]);
+ listView.render();
+ listView.$el.find("input[name='edit']").click();
+ expect(listView.$el.find("input[name='update']").is(':checked')).toEqual(true);
+ expect(setPermissionsStub.called).toEqual(true);
+ });
+
+ it('Checks edit box when create/update/delete are checked', function () {
+ shareModel.set('shares', [{
+ id: 100,
+ item_source: 123,
+ permissions: 1,
+ share_type: OC.Share.SHARE_TYPE_USER,
+ share_with: 'user1',
+ share_with_displayname: 'User One'
+ }]);
+ listView.render();
+ listView.$el.find("input[name='update']").click();
+ expect(listView.$el.find("input[name='edit']").is(':checked')).toEqual(true);
+ expect(setPermissionsStub.called).toEqual(true);
+ });
+
+ it('shows cruds checkboxes when toggled', function () {
+ shareModel.set('shares', [{
+ id: 100,
+ item_source: 123,
+ permissions: 1,
+ share_type: OC.Share.SHARE_TYPE_USER,
+ share_with: 'user1',
+ share_with_displayname: 'User One'
+ }]);
+ listView.render();
+ listView.$el.find('a.showCruds').click();
+ expect(listView.$el.find('li.cruds').hasClass('hidden')).toEqual(false);
+ });
+
+ it('sends notification to user when checkbox clicked', function () {
+ shareModel.set('shares', [{
+ id: 100,
+ item_source: 123,
+ permissions: 1,
+ share_type: OC.Share.SHARE_TYPE_USER,
+ share_with: 'user1',
+ share_with_displayname: 'User One'
+ }]);
+ listView.render();
+ var notificationStub = sinon.stub(listView.model, 'sendNotificationForShare');
+ listView.$el.find("input[name='mailNotification']").click();
+ expect(notificationStub.called).toEqual(true);
+ notificationStub.restore();
+ });
+
+ });
+
+});