diff options
Diffstat (limited to 'js/build/tests/controllers/itemcontrollerSpec.js')
-rw-r--r-- | js/build/tests/controllers/itemcontrollerSpec.js | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/js/build/tests/controllers/itemcontrollerSpec.js b/js/build/tests/controllers/itemcontrollerSpec.js new file mode 100644 index 000000000..bf4ea4afc --- /dev/null +++ b/js/build/tests/controllers/itemcontrollerSpec.js @@ -0,0 +1,194 @@ +// Generated by CoffeeScript 1.6.3 +/* + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt dev@bernhard-posselt.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/>. +*/ + + +(function() { + describe('ItemController', function() { + var _this = this; + beforeEach(module('News')); + beforeEach(module(function($provide) { + _this.imagePath = jasmine.createSpy('imagePath'); + _this.utils = { + imagePath: _this.imagePath + }; + $provide.value('Utils', _this.utils); + _this.persistence = { + getItems: function() {}, + readItem: function() {} + }; + $provide.value('Persistence', _this.persistence); + })); + beforeEach(inject(function($controller, ItemBusinessLayer, FeedBusinessLayer, $rootScope, FeedLoading, AutoPageLoading, FeedModel, ItemModel, ActiveFeed, FeedType, NewestItem) { + var replace; + _this.ItemBusinessLayer = ItemBusinessLayer; + _this.FeedBusinessLayer = FeedBusinessLayer; + _this.FeedLoading = FeedLoading; + _this.AutoPageLoading = AutoPageLoading; + _this.FeedModel = FeedModel; + _this.ItemModel = ItemModel; + _this.ActiveFeed = ActiveFeed; + _this.FeedType = FeedType; + _this.NewestItem = NewestItem; + _this.ActiveFeed.handle({ + type: _this.FeedType.Folder, + id: 3 + }); + _this.scope = $rootScope.$new(); + replace = { + $scope: _this.scope + }; + return _this.controller = $controller('ItemController', replace); + })); + it('should make ItemBusinessLayer availabe', function() { + return expect(_this.scope.itemBusinessLayer).toBe(_this.ItemBusinessLayer); + }); + it('should make FeedBusinessLayer availabe', function() { + return expect(_this.scope.feedBusinessLayer).toBe(_this.FeedBusinessLayer); + }); + it('should make feedloading available', function() { + expect(_this.scope.isLoading()).toBe(false); + _this.FeedLoading.increase(); + return expect(_this.scope.isLoading()).toBe(true); + }); + it('should make autopagin available', function() { + expect(_this.scope.isAutoPaging()).toBe(false); + _this.AutoPageLoading.increase(); + return expect(_this.scope.isAutoPaging()).toBe(true); + }); + it('should return the feedtitle', function() { + var item; + item = { + id: 3, + faviconLink: null, + url: 'hi', + title: 'heheh' + }; + _this.FeedModel.add(item); + return expect(_this.scope.getFeedTitle(3)).toBe(item.title); + }); + it('should return no value if feedtitle is not found', function() { + return expect(_this.scope.getFeedTitle(3)).toBe(''); + }); + it('should return no value if relative date gets no value', function() { + return expect(_this.scope.getRelativeDate()).toBe(''); + }); + it('should set an item read on readItem broadcast', function() { + var item1; + item1 = { + id: 4, + guidHash: 'abc', + feedId: 3 + }; + _this.ItemModel.add(item1); + item1.setUnread(); + expect(item1.isRead()).toBe(false); + _this.scope.$broadcast('readItem', 4); + return expect(item1.isRead()).toBe(true); + }); + it('should not autopage if there are no items', function() { + _this.persistence.getItems = jasmine.createSpy('getItems'); + _this.scope.$broadcast('autoPage'); + return expect(_this.persistence.getItems).not.toHaveBeenCalled(); + }); + it('should autoPage with the lowest Item Id', function() { + var item1; + _this.NewestItem.handle(25); + _this.persistence.getItems = jasmine.createSpy('getItems'); + item1 = { + id: 4, + guidHash: 'abc', + feedId: 3 + }; + _this.ItemModel.add(item1); + item1 = { + id: 3, + guidHash: 'abcd', + feedId: 3 + }; + _this.ItemModel.add(item1); + item1 = { + id: 6, + guidHash: 'abce', + feedId: 1 + }; + _this.ItemModel.add(item1); + _this.scope.$broadcast('autoPage'); + return expect(_this.persistence.getItems).toHaveBeenCalledWith(_this.FeedType.Folder, 3, 3, jasmine.any(Function)); + }); + it('should not prevent autopaging if there are no items', function() { + var item1; + _this.scope.$broadcast('autoPage'); + _this.persistence.getItems = jasmine.createSpy('getItems'); + item1 = { + id: 3, + guidHash: 'abcd', + feedId: 3 + }; + _this.ItemModel.add(item1); + _this.scope.$broadcast('autoPage'); + return expect(_this.persistence.getItems).toHaveBeenCalledWith(_this.FeedType.Folder, 3, 3, jasmine.any(Function)); + }); + it('should not send multiple autopage requests at once', function() { + var item1; + _this.persistence.getItems = jasmine.createSpy('getItems'); + item1 = { + id: 3, + guidHash: 'abcd', + feedId: 3 + }; + _this.ItemModel.add(item1); + _this.scope.$broadcast('autoPage'); + item1 = { + id: 2, + guidHash: 'abcd', + feedId: 3 + }; + _this.ItemModel.add(item1); + _this.scope.$broadcast('autoPage'); + return expect(_this.persistence.getItems).not.toHaveBeenCalledWith(_this.FeedType.Folder, 2, 3, jasmine.any(Function)); + }); + return it('should allow another autopaging request if the last one finished', function() { + var item1; + _this.NewestItem.handle(25); + _this.persistence.getItems = jasmine.createSpy('getItems'); + _this.persistence.getItems.andCallFake(function(type, id, offset, onSuccess) { + return onSuccess(); + }); + item1 = { + id: 3, + guidHash: 'abcd', + feedId: 3 + }; + _this.ItemModel.add(item1); + _this.scope.$broadcast('autoPage'); + item1 = { + id: 2, + guidHash: 'abcd', + feedId: 3 + }; + _this.ItemModel.add(item1); + _this.scope.$broadcast('autoPage'); + return expect(_this.persistence.getItems.callCount).toBe(2); + }); + }); + +}).call(this); |