summaryrefslogtreecommitdiffstats
path: root/js/build/tests/controllers/itemcontrollerSpec.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/build/tests/controllers/itemcontrollerSpec.js')
-rw-r--r--js/build/tests/controllers/itemcontrollerSpec.js194
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);