diff options
Diffstat (limited to 'js/build/tests')
22 files changed, 3592 insertions, 0 deletions
diff --git a/js/build/tests/controllers/feedcontrollerSpec.js b/js/build/tests/controllers/feedcontrollerSpec.js new file mode 100644 index 000000000..810a5fa09 --- /dev/null +++ b/js/build/tests/controllers/feedcontrollerSpec.js @@ -0,0 +1,233 @@ +// 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('FeedController', 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 = {}; + $provide.value('Persistence', _this.persistence); + })); + beforeEach(inject(function($controller, FolderBusinessLayer, FeedBusinessLayer, $rootScope, unreadCountFormatter, FeedModel, SubscriptionsBusinessLayer, StarredBusinessLayer, $window, _ExistsError, FolderModel, FeedType) { + var replace; + _this.FolderBusinessLayer = FolderBusinessLayer; + _this.FeedBusinessLayer = FeedBusinessLayer; + _this.unreadCountFormatter = unreadCountFormatter; + _this.FeedModel = FeedModel; + _this.SubscriptionsBusinessLayer = SubscriptionsBusinessLayer; + _this.StarredBusinessLayer = StarredBusinessLayer; + _this.$window = $window; + _this._ExistsError = _ExistsError; + _this.FolderModel = FolderModel; + _this.FeedType = FeedType; + _this.scope = $rootScope.$new(); + replace = { + $scope: _this.scope + }; + _this.$window.document.title = ''; + return _this.controller = $controller('FeedController', replace); + })); + it('isAddingFolder should return false in the beginning', function() { + return expect(_this.scope.isAddingFolder()).toBeFalsy(); + }); + it('isAddingFeed should return false in the beginning', function() { + return expect(_this.scope.isAddingFeed()).toBeFalsy(); + }); + it('should make unreadCountFormatter available', function() { + return expect(_this.scope.unreadCountFormatter).toBe(_this.unreadCountFormatter); + }); + it('should make FeedBusinessLayer available', function() { + return expect(_this.scope.feedBusinessLayer).toBe(_this.FeedBusinessLayer); + }); + it('should make FolderBusinessLayer available', function() { + return expect(_this.scope.folderBusinessLayer).toBe(_this.FolderBusinessLayer); + }); + it('should make SubscriptionsBusinessLayer available', function() { + return expect(_this.scope.subscriptionsBusinessLayer).toBe(_this.SubscriptionsBusinessLayer); + }); + it('should make StarredBusinessLayer available', function() { + return expect(_this.scope.starredBusinessLayer).toBe(_this.StarredBusinessLayer); + }); + it('should set the window title to the total unread count', function() { + var item; + expect(_this.$window.document.title).toBe(''); + _this.scope.getTotalUnreadCount(); + expect(_this.$window.document.title).toBe('News | ownCloud'); + item = { + id: 3, + unreadCount: 5, + faviconLink: 'test', + url: 'hi' + }; + _this.FeedModel.add(item); + _this.scope.getTotalUnreadCount(); + return expect(_this.$window.document.title).toBe('News (5) | ownCloud'); + }); + it('should show 99+ if in window title when more than 99 unread count', function() { + var item, item1; + item = { + id: 3, + unreadCount: 1, + faviconLink: 'test', + url: 'hi' + }; + item1 = { + id: 5, + unreadCount: 999, + faviconLink: 'test', + url: 'his' + }; + _this.FeedModel.add(item); + _this.FeedModel.add(item1); + _this.scope.getTotalUnreadCount(); + return expect(_this.$window.document.title).toBe('News (999+) | ownCloud'); + }); + it('should move a feed if moveFeedToFolder is broadcasted', function() { + var item; + item = { + id: 3, + unreadCount: 1, + faviconLink: 'test', + url: 'hi' + }; + _this.FeedModel.add(item); + _this.persistence.moveFeed = jasmine.createSpy('move feed'); + _this.scope.$broadcast('moveFeedToFolder', { + feedId: 3, + folderId: 1 + }); + return expect(_this.persistence.moveFeed).toHaveBeenCalledWith(3, 1); + }); + it('should set isAddingFolder to true if there were no problems', function() { + _this.persistence.createFolder = jasmine.createSpy('create'); + _this.scope.addFolder(' Ola'); + return expect(_this.scope.isAddingFolder()).toBe(true); + }); + it('should set isAddingFolder to false after a failed request', function() { + _this.persistence.createFolder = jasmine.createSpy('create'); + _this.persistence.createFolder.andCallFake(function(name, id, onSuccess, onFailure) { + return onFailure(); + }); + _this.scope.addFolder(' Ola'); + return expect(_this.scope.isAddingFolder()).toBe(false); + }); + it('should show an error if the folder exists and reset the input', function() { + _this.FolderBusinessLayer.create = jasmine.createSpy('create'); + _this.FolderBusinessLayer.create.andCallFake(function() { + throw new _this._ExistsError('ye'); + }); + _this.scope.addFolder(' Ola'); + expect(_this.scope.folderExistsError).toBe(true); + return expect(_this.scope.isAddingFolder()).toBe(false); + }); + it('should reset the add folder form and set the created as selected', function() { + var data; + _this.persistence.createFolder = jasmine.createSpy('create'); + data = { + data: { + folders: [ + { + id: 3, + name: 'soba' + } + ] + }, + status: 'success' + }; + _this.persistence.createFolder.andCallFake(function(id, parent, onSuccess) { + _this.FolderModel.handle(data.data.folders); + return onSuccess(data); + }); + _this.scope.addFolder(' Soba'); + expect(_this.scope.folderName).toBe(''); + expect(_this.scope.addNewFolder).toBe(false); + expect(_this.scope.isAddingFolder()).toBe(false); + return expect(_this.scope.folderId.name).toBe('soba'); + }); + it('should set isAddingFeed to true if there were no problems', function() { + _this.persistence.createFeed = jasmine.createSpy('create'); + _this.scope.addFeed('Ola'); + return expect(_this.scope.isAddingFeed()).toBe(true); + }); + it('should set isAddingFeed to false after a failed request', function() { + _this.persistence.createFeed = jasmine.createSpy('create'); + _this.persistence.createFeed.andCallFake(function(name, id, onSuccess, onFailure) { + return onFailure(); + }); + _this.scope.addFolder(' Ola'); + return expect(_this.scope.isAddingFeed()).toBe(false); + }); + it('should show an error if the feed exists and reset the input', function() { + _this.FeedBusinessLayer.create = jasmine.createSpy('create'); + _this.FeedBusinessLayer.create.andCallFake(function() { + throw new _this._ExistsError('ye'); + }); + _this.scope.addFeed(' Ola'); + expect(_this.scope.feedExistsError).toBe(true); + return expect(_this.scope.isAddingFeed()).toBe(false); + }); + it('should open the parent folder of the added feed', function() { + var item; + item = { + opened: false, + id: 3, + name: 'john' + }; + _this.FolderModel.add(item); + _this.scope.addFeed(' Ola', 3); + return expect(item.opened).toBe(true); + }); + return it('should reset the add feed form and load the added feed', function() { + var data; + _this.persistence.createFeed = jasmine.createSpy('create'); + _this.persistence.getItems = jasmine.createSpy('load'); + data = { + data: { + feeds: [ + { + id: 3, + url: 'http://soba', + title: 'hi' + } + ] + }, + status: 'success' + }; + _this.persistence.createFeed.andCallFake(function(id, parent, onSuccess) { + _this.FeedModel.handle(data.data.feeds); + return onSuccess(data); + }); + _this.scope.addFeed(' Soba'); + expect(_this.scope.feedUrl).toBe(''); + expect(_this.scope.isAddingFeed()).toBe(false); + return expect(_this.persistence.getItems).toHaveBeenCalledWith(_this.FeedType.Feed, 3, 0); + }); + }); + +}).call(this); 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); diff --git a/js/build/tests/controllers/settingscontrollerSpec.js b/js/build/tests/controllers/settingscontrollerSpec.js new file mode 100644 index 000000000..1b6d7dff0 --- /dev/null +++ b/js/build/tests/controllers/settingscontrollerSpec.js @@ -0,0 +1,86 @@ +// 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('SettingsController', function() { + var _this = this; + beforeEach(module('News')); + beforeEach(module(function($provide) { + _this.persistence = {}; + $provide.value('Persistence', _this.persistence); + })); + beforeEach(inject(function($controller, FeedBusinessLayer, FolderBusinessLayer, ShowAll) { + _this.FeedBusinessLayer = FeedBusinessLayer; + _this.FolderBusinessLayer = FolderBusinessLayer; + _this.ShowAll = ShowAll; + _this.scope = {}; + _this.replace = { + '$scope': _this.scope, + 'FolderBusinessLayer': { + "import": jasmine.createSpy('import') + } + }; + return _this.controller = $controller('SettingsController', _this.replace); + })); + it('should make FeedBl available', function() { + return expect(_this.scope.feedBl).toBe(_this.FeedBl); + }); + it('should show an error if the xml import failed', function() { + var xml; + xml = 'test'; + _this.replace.FolderBusinessLayer["import"].andCallFake(function() { + throw new Error(); + }); + _this.scope["import"](xml); + expect(_this.replace.FolderBusinessLayer["import"]).toHaveBeenCalledWith(xml); + return expect(_this.scope.error).toBe(true); + }); + it('should set showall to true if importing', function() { + var xml; + xml = 'test'; + _this.scope["import"](xml); + return expect(_this.ShowAll.getShowAll()).toBe(true); + }); + it('should set showall to true if importing json', function() { + var json; + json = "[\"test\"]"; + _this.scope.importGoogleReader(json); + return expect(_this.ShowAll.getShowAll()).toBe(true); + }); + it('should show an error if the json import failed', function() { + var json; + json = 'test'; + _this.scope.importGoogleReader(json); + return expect(_this.scope.jsonError).toBe(true); + }); + return it('should import json', function() { + var expected, json; + _this.FeedBusinessLayer.importGoogleReader = jasmine.createSpy('googlereader'); + json = "{\"test\": \"abc\"}"; + _this.scope.importGoogleReader(json); + expected = JSON.parse(json); + return expect(_this.FeedBusinessLayer.importGoogleReader).toHaveBeenCalledWith(expected); + }); + }); + +}).call(this); diff --git a/js/build/tests/services/activefeedSpec.js b/js/build/tests/services/activefeedSpec.js new file mode 100644 index 000000000..bba0949ca --- /dev/null +++ b/js/build/tests/services/activefeedSpec.js @@ -0,0 +1,49 @@ +// 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('ActiveFeed', function() { + var _this = this; + beforeEach(module('News')); + beforeEach(inject(function(ActiveFeed, FeedType) { + _this.ActiveFeed = ActiveFeed; + _this.FeedType = FeedType; + return _this.data = { + id: 5, + type: 3 + }; + })); + it('should be Subscriptions by default', function() { + return expect(_this.ActiveFeed.getType()).toBe(_this.FeedType.Subscriptions); + }); + it('should set the correct feed id', function() { + _this.ActiveFeed.handle(_this.data); + return expect(_this.ActiveFeed.getId()).toBe(5); + }); + return it('should set the correct feed type', function() { + _this.ActiveFeed.handle(_this.data); + return expect(_this.ActiveFeed.getType()).toBe(3); + }); + }); + +}).call(this); diff --git a/js/build/tests/services/businesslayer/businesslayerSpec.js b/js/build/tests/services/businesslayer/businesslayerSpec.js new file mode 100644 index 000000000..8a5a9c1b2 --- /dev/null +++ b/js/build/tests/services/businesslayer/businesslayerSpec.js @@ -0,0 +1,88 @@ +// 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() { + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + describe('BusinessLayer', function() { + var _this = this; + beforeEach(module('News')); + beforeEach(inject(function(_BusinessLayer, ActiveFeed, FeedType, ItemModel) { + var TestBusinessLayer, type; + _this._BusinessLayer = _BusinessLayer; + _this.ActiveFeed = ActiveFeed; + _this.FeedType = FeedType; + _this.ItemModel = ItemModel; + type = _this.FeedType.Starred; + _this.getItemsSpy = jasmine.createSpy('getItems'); + _this.persistence = { + getItems: _this.getItemsSpy + }; + TestBusinessLayer = (function(_super) { + __extends(TestBusinessLayer, _super); + + function TestBusinessLayer(activeFeed, persistence, itemModel) { + TestBusinessLayer.__super__.constructor.call(this, activeFeed, persistence, itemModel, type); + } + + return TestBusinessLayer; + + })(_this._BusinessLayer); + return _this.BusinessLayer = new TestBusinessLayer(_this.ActiveFeed, _this.persistence, _this.ItemModel); + })); + it('should reset the item cache when a different feed is being loaded', function() { + _this.ItemModel.clear = jasmine.createSpy('clear'); + _this.ActiveFeed.handle({ + id: 0, + type: _this.FeedType.Starred + }); + _this.BusinessLayer.load(2); + expect(_this.ItemModel.clear).toHaveBeenCalled(); + _this.ActiveFeed.handle({ + id: 2, + type: _this.FeedType.Feed + }); + _this.BusinessLayer.load(2); + return expect(_this.ItemModel.clear).toHaveBeenCalled(); + }); + it('should send a get all items query when feed changed', function() { + _this.persistence.getItems = jasmine.createSpy('latest'); + _this.ActiveFeed.handle({ + id: 3, + type: _this.FeedType.Feed + }); + _this.BusinessLayer.load(3); + return expect(_this.persistence.getItems).toHaveBeenCalledWith(_this.FeedType.Starred, 3, 0); + }); + return it('should be active when its selected', function() { + expect(_this.BusinessLayer.isActive(0)).toBe(false); + _this.ActiveFeed.handle({ + type: _this.FeedType.Starred, + id: 0 + }); + return expect(_this.BusinessLayer.isActive(0)).toBe(true); + }); + }); + +}).call(this); diff --git a/js/build/tests/services/businesslayer/feedbusinesslayerSpec.js b/js/build/tests/services/businesslayer/feedbusinesslayerSpec.js new file mode 100644 index 000000000..592b90057 --- /dev/null +++ b/js/build/tests/services/businesslayer/feedbusinesslayerSpec.js @@ -0,0 +1,478 @@ +// 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('FeedBusinessLayer', function() { + var _this = this; + beforeEach(module('News')); + beforeEach(module(function($provide) { + _this.setFeedReadSpy = jasmine.createSpy('setFeedRead'); + _this.getItemsSpy = jasmine.createSpy('Get Items'); + _this.persistence = { + setFeedRead: _this.setFeedReadSpy, + getItems: _this.getItemsSpy, + createFeed: function() {}, + test: 'feedbusinesslayer' + }; + _this.imagePath = jasmine.createSpy('imagePath'); + _this.utils = { + imagePath: _this.imagePath + }; + $provide.value('Persistence', _this.persistence); + $provide.value('Utils', _this.utils); + })); + beforeEach(inject(function(FeedBusinessLayer, FeedModel, ItemModel, FeedType, ShowAll, ActiveFeed, _ExistsError, $timeout, NewestItem, $rootScope) { + _this.FeedBusinessLayer = FeedBusinessLayer; + _this.FeedModel = FeedModel; + _this.ItemModel = ItemModel; + _this.FeedType = FeedType; + _this.ShowAll = ShowAll; + _this.ActiveFeed = ActiveFeed; + _this._ExistsError = _ExistsError; + _this.$timeout = $timeout; + _this.NewestItem = NewestItem; + _this.$rootScope = $rootScope; + _this.ShowAll.setShowAll(false); + return _this.ActiveFeed.handle({ + type: _this.FeedType.Folder, + id: 0 + }); + })); + it('should delete feeds', function() { + var data; + data = null; + _this.$rootScope.$on('undoMessage', function(scope, data) { + return data = data; + }); + _this.FeedModel.removeById = jasmine.createSpy('remove').andCallFake(function() { + return { + id: 3, + title: 'test' + }; + }); + _this.persistence.deleteFeed = jasmine.createSpy('deletequery'); + _this.FeedBusinessLayer["delete"](3); + expect(_this.FeedModel.removeById).toHaveBeenCalledWith(3); + return expect(_this.persistence.deleteFeed).toHaveBeenCalledWith(3); + }); + it('should return the number of unread feeds', function() { + var count; + _this.FeedModel.add({ + id: 3, + unreadCount: 134, + url: 'a1' + }); + count = _this.FeedBusinessLayer.getUnreadCount(3); + return expect(count).toBe(134); + }); + it('should return all feeds of a folder', function() { + var feed1, feed2, feed3, feeds; + feed1 = { + id: 3, + unreadCount: 134, + url: 'a1', + folderId: 3 + }; + feed2 = { |