From 628e4a9daf0870243baff8ea0f6447e04760cf78 Mon Sep 17 00:00:00 2001 From: Tom Needham Date: Wed, 28 Oct 2015 15:33:42 +0000 Subject: [PATCH] Add sharee list view js tests --- .../tests/specs/sharedialogshareelistview.js | 158 ++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 core/js/tests/specs/sharedialogshareelistview.js diff --git a/core/js/tests/specs/sharedialogshareelistview.js b/core/js/tests/specs/sharedialogshareelistview.js new file mode 100644 index 0000000000..d468ce790d --- /dev/null +++ b/core/js/tests/specs/sharedialogshareelistview.js @@ -0,0 +1,158 @@ +/** + * ownCloud + * + * @author Tom Needham + * @copyright 2015 Tom Needham + * + * 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.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(''); + + 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(); + }); + + }); + +});