diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-25 17:07:12 +0100 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-25 17:07:12 +0100 |
commit | 29b4fc15528cd88ab1b7b77aa7b9b4632042dd0c (patch) | |
tree | 32692d7a0f220d9af34c5f3c30ae5475ea63f028 /js | |
parent | fc16477ba35bc36504f1bebcabeca3b67cdbbf50 (diff) |
provide feedcontroller skeleton methods
Diffstat (limited to 'js')
-rw-r--r-- | js/app/controllers/controllers.coffee | 9 | ||||
-rw-r--r-- | js/app/controllers/feedcontroller.coffee | 72 | ||||
-rw-r--r-- | js/config/testacular_conf.js | 1 | ||||
-rw-r--r-- | js/public/app.js | 76 | ||||
-rw-r--r-- | js/tests/controllers/feedcontrollerSpec.coffee | 51 | ||||
-rw-r--r-- | js/tests/services/models/feedmodelSpec.coffee | 3 |
6 files changed, 201 insertions, 11 deletions
diff --git a/js/app/controllers/controllers.coffee b/js/app/controllers/controllers.coffee index 27603ef52..59f2db39e 100644 --- a/js/app/controllers/controllers.coffee +++ b/js/app/controllers/controllers.coffee @@ -29,10 +29,13 @@ angular.module('News').controller 'SettingsController', angular.module('News').controller 'FeedController', -['$scope', '_FeedController', 'FolderModel', 'FeedModel', -($scope, _FeedController, FolderModel, FeedModel)-> +['$scope', '_FeedController', 'FolderModel', 'FeedModel', 'ActiveFeed', +'ShowAll', 'FeedType', 'StarredCount', +($scope, _FeedController, FolderModel, FeedModel, ActiveFeed, +ShowAll, FeedType, StarredCount)-> - return new _FeedController($scope, FolderModel, FeedModel) + return new _FeedController($scope, FolderModel, FeedModel, ActiveFeed, + ShowAll, FeedType, StarredCount) ] angular.module('News').controller 'ItemController', diff --git a/js/app/controllers/feedcontroller.coffee b/js/app/controllers/feedcontroller.coffee index a641a8a9c..535ed00ac 100644 --- a/js/app/controllers/feedcontroller.coffee +++ b/js/app/controllers/feedcontroller.coffee @@ -25,7 +25,77 @@ angular.module('News').factory '_FeedController', -> class FeedController - constructor: (@$scope, @folderModel, @feedModel) -> + constructor: (@$scope, @_folderModel, @_feedModel, @_active, + @_showAll, @_feedType, @_starredCount) -> + + # bind internal stuff to scope + @$scope.feeds = @_feedModel.getAll() + @$scope.folders = @_folderModel.getAll() + @$scope.feedType = @_feedType + + @$scope.isFeedActive = (type, id) => + return @isFeedActive(type, id) + + @$scope.isShown = (type, id) => + return @isShown(type, id) + + @$scope.getUnreadCount = (type, id) => + return @getUnreadCount(type, id) + + @$scope.isShowAll = => + return @isShowAll() + + @$scope.loadFeed = (type, id) => + @loadFeed(type, id) + + @$scope.hasFeeds = (folderId) => + return @hasFeeds(folderId) + + @$scope.delete = (type, id) => + @delete(type, id) + + @$scope.markAllRead = (type, id) => + @markAllRead(type, id) + + @$scope.getFeedsOfFolder = (folderId) => + return @getFeedsOfFolder(folderId) + + @$scope.setShowAll = (showAll) => + @setShowAll(showAll) + + + isFeedActive: (type, id) -> + return type == @_active.getType() and id = @_active.getId() + + + isShown: (type, id) -> + if @isShowAll() + return true + else + return @getUnreadCount(type, id) > 0 + + + isShowAll: -> + return @_showAll.getShowAll() + + + getUnreadCount: (type, id) -> + + + loadFeed: (type, id) -> + + + hasFeeds: (folderId) -> + + + delete: (type, id) -> + + + markAllRead: (type, id) -> + + + getFeedsOfFolder: (folderId) -> + return FeedController
\ No newline at end of file diff --git a/js/config/testacular_conf.js b/js/config/testacular_conf.js index 1a91d5d5c..e1f62aed8 100644 --- a/js/config/testacular_conf.js +++ b/js/config/testacular_conf.js @@ -42,6 +42,7 @@ files = [ 'build/app/directives/*.js', 'build/app/filters/*.js', 'build/app/services/**/*.js', + 'build/app/controllers/**/*.js', 'build/tests/**/*Spec.js' ]; diff --git a/js/public/app.js b/js/public/app.js index f711b637e..12d4dd9aa 100644 --- a/js/public/app.js +++ b/js/public/app.js @@ -97,8 +97,8 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. ]); angular.module('News').controller('FeedController', [ - '$scope', '_FeedController', 'FolderModel', 'FeedModel', function($scope, _FeedController, FolderModel, FeedModel) { - return new _FeedController($scope, FolderModel, FeedModel); + '$scope', '_FeedController', 'FolderModel', 'FeedModel', 'ActiveFeed', 'ShowAll', 'FeedType', 'StarredCount', function($scope, _FeedController, FolderModel, FeedModel, ActiveFeed, ShowAll, FeedType, StarredCount) { + return new _FeedController($scope, FolderModel, FeedModel, ActiveFeed, ShowAll, FeedType, StarredCount); } ]); @@ -140,12 +140,78 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. var FeedController; FeedController = (function() { - function FeedController($scope, folderModel, feedModel) { + function FeedController($scope, _folderModel, _feedModel, _active, _showAll, _feedType, _starredCount) { + var _this = this; this.$scope = $scope; - this.folderModel = folderModel; - this.feedModel = feedModel; + this._folderModel = _folderModel; + this._feedModel = _feedModel; + this._active = _active; + this._showAll = _showAll; + this._feedType = _feedType; + this._starredCount = _starredCount; + this.$scope.feeds = this._feedModel.getAll(); + this.$scope.folders = this._folderModel.getAll(); + this.$scope.feedType = this._feedType; + this.$scope.isFeedActive = function(type, id) { + return _this.isFeedActive(type, id); + }; + this.$scope.isShown = function(type, id) { + return _this.isShown(type, id); + }; + this.$scope.getUnreadCount = function(type, id) { + return _this.getUnreadCount(type, id); + }; + this.$scope.isShowAll = function() { + return _this.isShowAll(); + }; + this.$scope.loadFeed = function(type, id) { + return _this.loadFeed(type, id); + }; + this.$scope.hasFeeds = function(folderId) { + return _this.hasFeeds(folderId); + }; + this.$scope["delete"] = function(type, id) { + return _this["delete"](type, id); + }; + this.$scope.markAllRead = function(type, id) { + return _this.markAllRead(type, id); + }; + this.$scope.getFeedsOfFolder = function(folderId) { + return _this.getFeedsOfFolder(folderId); + }; + this.$scope.setShowAll = function(showAll) { + return _this.setShowAll(showAll); + }; } + FeedController.prototype.isFeedActive = function(type, id) { + return type === this._active.getType() && (id = this._active.getId()); + }; + + FeedController.prototype.isShown = function(type, id) { + if (this.isShowAll()) { + return true; + } else { + return this.getUnreadCount(type, id) > 0; + } + }; + + FeedController.prototype.isShowAll = function() { + return this._showAll.getShowAll(); + }; + + FeedController.prototype.getUnreadCount = function(type, id) {}; + + FeedController.prototype.loadFeed = function(type, id) {}; + + FeedController.prototype.hasFeeds = function(folderId) {}; + + FeedController.prototype["delete"] = function(type, id) {}; + + FeedController.prototype.markAllRead = function(type, id) {}; + + FeedController.prototype.getFeedsOfFolder = function(folderId) {}; + return FeedController; })(); diff --git a/js/tests/controllers/feedcontrollerSpec.coffee b/js/tests/controllers/feedcontrollerSpec.coffee index a8b1df227..a356e8f81 100644 --- a/js/tests/controllers/feedcontrollerSpec.coffee +++ b/js/tests/controllers/feedcontrollerSpec.coffee @@ -24,4 +24,53 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. describe '_FeedController', -> - beforeEach module 'News'
\ No newline at end of file + beforeEach module 'News' + + + beforeEach inject (@_FeedController, @ActiveFeed, @ShowAll, @FeedType, + @StarredCount) => + @scope = {} + @feedModel = + getAll: -> + @folderModel = + getAll: -> + @controller = new @_FeedController(@scope, @folderModel, @feedModel, @ActiveFeed, + @ShowAll, @FeedType, @StarredCount) + + + it 'should make folders available', => + @folderModel = + getAll: jasmine.createSpy('FolderModel') + + new @_FeedController(@scope, @folderModel, @feedModel, @_ActiveFeed) + + expect(@folderModel.getAll).toHaveBeenCalled() + + + it 'should make feeds availabe', => + @feedModel = + getAll: jasmine.createSpy('FeedModel') + + new @_FeedController(@scope, @folderModel, @feedModel, @_ActiveFeed) + + expect(@feedModel.getAll).toHaveBeenCalled() + + + it 'should make feedtype available', => + expect(@scope.feedType).toBe(@FeedType) + + + it 'should check the active feed', => + @ActiveFeed.getType = => + return @FeedType.Feed + @ActiveFeed.getId = => + return 5 + + expect(@scope.isFeedActive(@FeedType.Feed, 5)).toBeTruthy() + + + it 'should provide ShowAll', => + expect(@scope.isShowAll()).toBeFalsy() + + @ShowAll.handle(true) + expect(@scope.isShowAll()).toBeTruthy()
\ No newline at end of file diff --git a/js/tests/services/models/feedmodelSpec.coffee b/js/tests/services/models/feedmodelSpec.coffee index faa95d36a..9732d0e82 100644 --- a/js/tests/services/models/feedmodelSpec.coffee +++ b/js/tests/services/models/feedmodelSpec.coffee @@ -43,4 +43,5 @@ describe '_FeedModel', -> model = new @_FeedModel(utils) model.add(item) - expect(utils.imagePath).toHaveBeenCalledWith('news', 'rss.svg')
\ No newline at end of file + expect(utils.imagePath).toHaveBeenCalledWith('news', 'rss.svg') + |