summaryrefslogtreecommitdiffstats
path: root/js/build/tests/controllers/feedcontrollerSpec.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/build/tests/controllers/feedcontrollerSpec.js')
-rw-r--r--js/build/tests/controllers/feedcontrollerSpec.js233
1 files changed, 233 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);