summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-03-25 17:07:12 +0100
committerBernhard Posselt <nukeawhale@gmail.com>2013-03-25 17:07:12 +0100
commit29b4fc15528cd88ab1b7b77aa7b9b4632042dd0c (patch)
tree32692d7a0f220d9af34c5f3c30ae5475ea63f028 /js
parentfc16477ba35bc36504f1bebcabeca3b67cdbbf50 (diff)
provide feedcontroller skeleton methods
Diffstat (limited to 'js')
-rw-r--r--js/app/controllers/controllers.coffee9
-rw-r--r--js/app/controllers/feedcontroller.coffee72
-rw-r--r--js/config/testacular_conf.js1
-rw-r--r--js/public/app.js76
-rw-r--r--js/tests/controllers/feedcontrollerSpec.coffee51
-rw-r--r--js/tests/services/models/feedmodelSpec.coffee3
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')
+