From a6d1cc915aed37ad6731ab28728d2f4e58f5b6da Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Fri, 5 Apr 2013 12:07:04 +0200 Subject: implemented bare itembl methods --- js/app/controllers/controllers.coffee | 6 +-- js/app/controllers/itemcontroller.coffee | 4 +- js/app/services/bl/itembl.coffee | 32 +++++++++++++-- js/public/app.js | 54 ++++++++++++++++++-------- js/tests/controllers/itemcontrollerSpec.coffee | 12 +++--- js/tests/services/bl/itemblSpec.coffee | 37 +++++++++++++++++- 6 files changed, 113 insertions(+), 32 deletions(-) (limited to 'js') diff --git a/js/app/controllers/controllers.coffee b/js/app/controllers/controllers.coffee index 77c178fef..190f8dd0b 100644 --- a/js/app/controllers/controllers.coffee +++ b/js/app/controllers/controllers.coffee @@ -39,8 +39,8 @@ StarredBl, unreadCountFormatter)-> ] angular.module('News').controller 'ItemController', -['$scope', '_ItemController', 'ItemModel', 'FeedModel', 'FeedLoading', -($scope, _ItemController, ItemModel, FeedModel, FeedLoading)-> +['$scope', '_ItemController', 'ItemBl', 'FeedModel', 'FeedLoading', +($scope, _ItemController, ItemBl, FeedModel, FeedLoading)-> - return new _ItemController($scope, ItemModel, FeedModel, FeedLoading) + return new _ItemController($scope, ItemBl, FeedModel, FeedLoading) ] \ No newline at end of file diff --git a/js/app/controllers/itemcontroller.coffee b/js/app/controllers/itemcontroller.coffee index 0a2c1229e..2daf13335 100644 --- a/js/app/controllers/itemcontroller.coffee +++ b/js/app/controllers/itemcontroller.coffee @@ -25,9 +25,9 @@ angular.module('News').factory '_ItemController', -> class ItemController - constructor: (@_$scope, @_itemModel, @_feedModel, @_feedLoading) -> + constructor: (@_$scope, @_itemBl, @_feedModel, @_feedLoading) -> - @_$scope.items = @_itemModel.getAll() + @_$scope.itemBl = @_itemBl @_$scope.isLoading = => return @_feedLoading.isLoading() diff --git a/js/app/services/bl/itembl.coffee b/js/app/services/bl/itembl.coffee index 5b34aa4f4..8c718d653 100644 --- a/js/app/services/bl/itembl.coffee +++ b/js/app/services/bl/itembl.coffee @@ -21,12 +21,38 @@ License along with this library. If not, see . ### -angular.module('News').factory 'ItemBl', -> +angular.module('News').factory 'ItemBl', +['ItemModel', 'Persistence', 'ActiveFeed', 'FeedType', +(ItemModel, Persistence, ActiveFeed, FeedType) -> class ItemBl - constructor: (@_itemModel, @_persistence) -> + constructor: (@_itemModel, @_persistence, @_activeFeed, @_feedType) -> + getAll: -> + return @_itemModel.getAll() - return new ItemBl() + noFeedActive: -> + return @_activeFeed.getType() != @_feedType.Feed + + + isKeptUnread: (itemId) -> + + + toggleKeepUnread: (itemId) -> + + + toggleStarred: (itemId) -> + + + setRead: (itemId) -> + + + getFeedTitle: (itemId) -> + + + + return new ItemBl(ItemModel, Persistence, ActiveFeed, FeedType) + +] \ No newline at end of file diff --git a/js/public/app.js b/js/public/app.js index 448778e9d..718c89a02 100644 --- a/js/public/app.js +++ b/js/public/app.js @@ -177,8 +177,8 @@ License along with this library. If not, see . ]); angular.module('News').controller('ItemController', [ - '$scope', '_ItemController', 'ItemModel', 'FeedModel', 'FeedLoading', function($scope, _ItemController, ItemModel, FeedModel, FeedLoading) { - return new _ItemController($scope, ItemModel, FeedModel, FeedLoading); + '$scope', '_ItemController', 'ItemBl', 'FeedModel', 'FeedLoading', function($scope, _ItemController, ItemBl, FeedModel, FeedLoading) { + return new _ItemController($scope, ItemBl, FeedModel, FeedLoading); } ]); @@ -323,13 +323,13 @@ License along with this library. If not, see . var ItemController; ItemController = (function() { - function ItemController(_$scope, _itemModel, _feedModel, _feedLoading) { + function ItemController(_$scope, _itemBl, _feedModel, _feedLoading) { var _this = this; this._$scope = _$scope; - this._itemModel = _itemModel; + this._itemBl = _itemBl; this._feedModel = _feedModel; this._feedLoading = _feedLoading; - this._$scope.items = this._itemModel.getAll(); + this._$scope.itemBl = this._itemBl; this._$scope.isLoading = function() { return _this._feedLoading.isLoading(); }; @@ -804,20 +804,42 @@ License along with this library. If not, see . (function() { - angular.module('News').factory('ItemBl', function() { - var ItemBl; - ItemBl = (function() { + angular.module('News').factory('ItemBl', [ + 'ItemModel', 'Persistence', 'ActiveFeed', 'FeedType', function(ItemModel, Persistence, ActiveFeed, FeedType) { + var ItemBl; + ItemBl = (function() { - function ItemBl(_itemModel, _persistence) { - this._itemModel = _itemModel; - this._persistence = _persistence; - } + function ItemBl(_itemModel, _persistence, _activeFeed, _feedType) { + this._itemModel = _itemModel; + this._persistence = _persistence; + this._activeFeed = _activeFeed; + this._feedType = _feedType; + } - return ItemBl; + ItemBl.prototype.getAll = function() { + return this._itemModel.getAll(); + }; - })(); - return new ItemBl(); - }); + ItemBl.prototype.noFeedActive = function() { + return this._activeFeed.getType() !== this._feedType.Feed; + }; + + ItemBl.prototype.isKeptUnread = function(itemId) {}; + + ItemBl.prototype.toggleKeepUnread = function(itemId) {}; + + ItemBl.prototype.toggleStarred = function(itemId) {}; + + ItemBl.prototype.setRead = function(itemId) {}; + + ItemBl.prototype.getFeedTitle = function(itemId) {}; + + return ItemBl; + + })(); + return new ItemBl(ItemModel, Persistence, ActiveFeed, FeedType); + } + ]); }).call(this); diff --git a/js/tests/controllers/itemcontrollerSpec.coffee b/js/tests/controllers/itemcontrollerSpec.coffee index 19cce6c6f..35aff7141 100644 --- a/js/tests/controllers/itemcontrollerSpec.coffee +++ b/js/tests/controllers/itemcontrollerSpec.coffee @@ -27,16 +27,14 @@ describe '_ItemController', -> beforeEach module 'News' beforeEach inject (@_ItemController, @ActiveFeed, @ShowAll, @FeedType, - @StarredCount, @FeedModel, @FolderModel, @ItemModel) => + @StarredCount, @FeedModel, @FolderModel, @ItemModel, + @ItemBl) => @scope = {} @persistence = { getItems: -> } - @controller = new @_ItemController(@scope, @ItemModel, @FeedModel) + @controller = new @_ItemController(@scope, @ItemBl, @FeedModel) - it 'should make items availabe', => - @ItemModel.getAll = jasmine.createSpy('ItemModel') - new @_ItemController(@scope, @ItemModel) - - expect(@ItemModel.getAll).toHaveBeenCalled() + it 'should make ItemBl availabe', => + expect(@scope.itemBl).toBe(@ItemBl) diff --git a/js/tests/services/bl/itemblSpec.coffee b/js/tests/services/bl/itemblSpec.coffee index 158b09467..ff2bbd80a 100644 --- a/js/tests/services/bl/itemblSpec.coffee +++ b/js/tests/services/bl/itemblSpec.coffee @@ -33,4 +33,39 @@ describe 'ItemBl', -> } - beforeEach inject (@ItemModel, @ItemBl, @StatusFlag) => + beforeEach inject (@ItemModel, @ItemBl, @StatusFlag, @ActiveFeed + @FeedType) => + + + it 'should return all items', => + item1 = {id: 6, feedId: 5, guidHash: 'a1'} + item2 = {id: 3, feedId: 5, guidHash: 'a2'} + item3 = {id: 2, feedId: 5, guidHash: 'a3'} + + @ItemModel.add(item1) + @ItemModel.add(item2) + @ItemModel.add(item3) + + items = @ItemBl.getAll() + + expect(items).toContain(item1) + expect(items).toContain(item2) + expect(items).toContain(item3) + + + it 'should tell if no feed is active', => + @ActiveFeed.handle({type: @FeedType.Folder, id: 0}) + expect(@ItemBl.noFeedActive()).toBe(true) + + @ActiveFeed.handle({type: @FeedType.Subscriptions, id: 0}) + expect(@ItemBl.noFeedActive()).toBe(true) + + @ActiveFeed.handle({type: @FeedType.Starred, id: 0}) + expect(@ItemBl.noFeedActive()).toBe(true) + + @ActiveFeed.handle({type: @FeedType.Shared, id: 0}) + expect(@ItemBl.noFeedActive()).toBe(true) + + @ActiveFeed.handle({type: @FeedType.Feed, id: 0}) + expect(@ItemBl.noFeedActive()).toBe(false) + -- cgit v1.2.3