From 76267670f3dcb6793a62a30477db830f482b4495 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Thu, 4 Apr 2013 21:18:43 +0200 Subject: finished feedbl methods --- js/app/services/bl/feedbl.coffee | 17 +++++++++++++- js/public/app.js | 21 +++++++++++++++++ js/tests/services/bl/feedblSpec.coffee | 42 +++++++++++++++++++++++++++++++--- 3 files changed, 76 insertions(+), 4 deletions(-) (limited to 'js') diff --git a/js/app/services/bl/feedbl.coffee b/js/app/services/bl/feedbl.coffee index d9524ae37..fa324f20f 100644 --- a/js/app/services/bl/feedbl.coffee +++ b/js/app/services/bl/feedbl.coffee @@ -73,7 +73,22 @@ angular.module('News').factory 'FeedBl', return @_feedModel.size() - # todo isvisible, move + isVisible: (feedId) -> + if @isActive(feedId) or @_showAll.getShowAll() + return true + else + return @_feedModel.getFeedUnreadCount(feedId) > 0 + + + move: (feedId, folderId) -> + feed = @_feedModel.getById(feedId) + if angular.isDefined(feed) and feed.folderId != folderId + @_feedModel.update({ + id: feedId, + folderId: folderId, + urlHash: feed.urlHash}) + @_persistence.moveFeed(feedId, folderId) + return new FeedBl(ShowAll, FeedModel, Persistence, ActiveFeed, FeedType, ItemModel) diff --git a/js/public/app.js b/js/public/app.js index c4aa53323..bdb196fbf 100644 --- a/js/public/app.js +++ b/js/public/app.js @@ -697,6 +697,27 @@ License along with this library. If not, see . return this._feedModel.size(); }; + FeedBl.prototype.isVisible = function(feedId) { + if (this.isActive(feedId) || this._showAll.getShowAll()) { + return true; + } else { + return this._feedModel.getFeedUnreadCount(feedId) > 0; + } + }; + + FeedBl.prototype.move = function(feedId, folderId) { + var feed; + feed = this._feedModel.getById(feedId); + if (angular.isDefined(feed) && feed.folderId !== folderId) { + this._feedModel.update({ + id: feedId, + folderId: folderId, + urlHash: feed.urlHash + }); + return this._persistence.moveFeed(feedId, folderId); + } + }; + return FeedBl; })(_Bl); diff --git a/js/tests/services/bl/feedblSpec.coffee b/js/tests/services/bl/feedblSpec.coffee index 241ba20f5..2ca742cc7 100644 --- a/js/tests/services/bl/feedblSpec.coffee +++ b/js/tests/services/bl/feedblSpec.coffee @@ -32,8 +32,10 @@ describe 'FeedBl', -> setFeedRead: @setFeedReadSpy } - beforeEach inject (@FeedBl, @FeedModel, @ItemModel) => - + beforeEach inject (@FeedBl, @FeedModel, @ItemModel, @FeedType, + @ShowAll, @ActiveFeed) => + @ShowAll.setShowAll(false) + @ActiveFeed.handle({type: @FeedType.Folder, id:0}) it 'should delete feeds', => @FeedModel.removeById = jasmine.createSpy('remove') @@ -116,4 +118,38 @@ describe 'FeedBl', -> @FeedModel.add({id: 5, unreadCount:2, urlHash: 'a2'}) count = @FeedBl.getNumberOfFeeds() - expect(count).toBe(2) \ No newline at end of file + expect(count).toBe(2) + + + it 'should be visible if its active', => + @ActiveFeed.handle({type: @FeedType.Feed, id:3}) + expect(@FeedBl.isVisible(3)).toBe(true) + + + it 'should be visible if show all is true', => + expect(@FeedBl.isVisible(3)).toBe(false) + + @ShowAll.setShowAll(true) + expect(@FeedBl.isVisible(3)).toBe(true) + + + it 'should be visible if unreadcount bigger than 0', => + @FeedModel.add({id: 2, unreadCount:134, urlHash: 'a1'}) + expect(@FeedBl.isVisible(2)).toBe(true) + + + it 'should not move the feed to a new folder', => + @persistence.moveFeed = jasmine.createSpy('Move feed') + @FeedModel.add({id: 2, unreadCount:134, urlHash: 'a1', folderId: 3}) + @FeedBl.move(2, 4) + + expect(@persistence.moveFeed).toHaveBeenCalledWith(2, 4) + expect(@FeedModel.getById(2).folderId).toBe(4) + + + it 'should not move the feed to the same folder', => + @persistence.moveFeed = jasmine.createSpy('Move feed') + @FeedModel.add({id: 2, unreadCount:134, urlHash: 'a1', folderId: 3}) + @FeedBl.move(2, 3) + + expect(@persistence.moveFeed).not.toHaveBeenCalled() \ No newline at end of file -- cgit v1.2.3