summaryrefslogtreecommitdiffstats
path: root/js/build/tests
diff options
context:
space:
mode:
Diffstat (limited to 'js/build/tests')
-rw-r--r--js/build/tests/controllers/feedcontrollerSpec.js233
-rw-r--r--js/build/tests/controllers/itemcontrollerSpec.js194
-rw-r--r--js/build/tests/controllers/settingscontrollerSpec.js86
-rw-r--r--js/build/tests/services/activefeedSpec.js49
-rw-r--r--js/build/tests/services/businesslayer/businesslayerSpec.js88
-rw-r--r--js/build/tests/services/businesslayer/feedbusinesslayerSpec.js478
-rw-r--r--js/build/tests/services/businesslayer/folderbusinesslayerSpec.js577
-rw-r--r--js/build/tests/services/businesslayer/itembusinesslayerSpec.js330
-rw-r--r--js/build/tests/services/businesslayer/starredbusinesslayerSpec.js69
-rw-r--r--js/build/tests/services/businesslayer/subsriptionsbusinesslayerSpec.js130
-rw-r--r--js/build/tests/services/feedtypeSpec.js48
-rw-r--r--js/build/tests/services/languageSpec.js61
-rw-r--r--js/build/tests/services/models/feedmodelSpec.js175
-rw-r--r--js/build/tests/services/models/foldermodelSpec.js140
-rw-r--r--js/build/tests/services/models/itemmodelSpec.js160
-rw-r--r--js/build/tests/services/newestitemSpec.js41
-rw-r--r--js/build/tests/services/opmlparserSpec.js167
-rw-r--r--js/build/tests/services/persistenceSpec.js398
-rw-r--r--js/build/tests/services/showallSpec.js46
-rw-r--r--js/build/tests/services/starredcountSpec.js44
-rw-r--r--js/build/tests/services/statusflagSpec.js39
-rw-r--r--js/build/tests/services/unreadcountformaterSpec.js39
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 = {