summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-05 12:07:04 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-05 12:07:04 +0200
commita6d1cc915aed37ad6731ab28728d2f4e58f5b6da (patch)
treeeac3b6412d6eb14ad9468358dac9abb22d7f2539 /js
parent54a67849bd6fe0608c9940bfa1b87b24c07ba41e (diff)
implemented bare itembl methods
Diffstat (limited to 'js')
-rw-r--r--js/app/controllers/controllers.coffee6
-rw-r--r--js/app/controllers/itemcontroller.coffee4
-rw-r--r--js/app/services/bl/itembl.coffee32
-rw-r--r--js/public/app.js54
-rw-r--r--js/tests/controllers/itemcontrollerSpec.coffee12
-rw-r--r--js/tests/services/bl/itemblSpec.coffee37
6 files changed, 113 insertions, 32 deletions
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 <http://www.gnu.org/licenses/>.
###
-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 <http://www.gnu.org/licenses/>.
]);
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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
(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)
+