From b8b4dfb4969e1baf84a14fb65a5dc153b0f5fae4 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Thu, 9 May 2013 12:57:35 +0200 Subject: only make one request for mark all read and mark folder read, fix #171, fix a bug that prevented readding of feeds when its folder was deleted, fix a bug that would not allow mark read for feeds when the app was started for the first time --- .../businesslayer/feedbusinesslayer.coffee | 7 +- .../businesslayer/folderbusinesslayer.coffee | 29 +++-- .../subscriptionsbusinesslayer.coffee | 20 +++- js/app/services/persistence.coffee | 24 ++++ js/public/app.js | 124 +++++++++++++++------ .../businesslayer/feedbusinesslayerSpec.coffee | 18 +-- .../businesslayer/folderbusinesslayerSpec.coffee | 13 ++- .../subsriptionsbusinesslayerSpec.coffee | 16 ++- js/tests/services/persistenceSpec.coffee | 24 +++- 9 files changed, 200 insertions(+), 75 deletions(-) (limited to 'js') diff --git a/js/app/services/businesslayer/feedbusinesslayer.coffee b/js/app/services/businesslayer/feedbusinesslayer.coffee index eb8d27de6..b2eb4f293 100644 --- a/js/app/services/businesslayer/feedbusinesslayer.coffee +++ b/js/app/services/businesslayer/feedbusinesslayer.coffee @@ -64,7 +64,7 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue, NewestItem)-> @_undoQueue.add(feed.title, callback, 10*1000, undoCallback) - markFeedRead: (feedId) -> + markRead: (feedId) -> feed = @_feedModel.getById(feedId) newestItemId = @_newestItem.getId() @@ -75,11 +75,6 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue, NewestItem)-> item.setRead() - markAllRead: -> - for feed in @_feedModel.getAll() - @markFeedRead(feed.id) - - getNumberOfFeeds: -> return @_feedModel.size() diff --git a/js/app/services/businesslayer/folderbusinesslayer.coffee b/js/app/services/businesslayer/folderbusinesslayer.coffee index e35866f21..53b434154 100644 --- a/js/app/services/businesslayer/folderbusinesslayer.coffee +++ b/js/app/services/businesslayer/folderbusinesslayer.coffee @@ -24,15 +24,16 @@ License along with this library. If not, see . angular.module('News').factory 'FolderBusinessLayer', ['_BusinessLayer', 'FolderModel', 'FeedBusinessLayer', 'Persistence', 'FeedType', 'ActiveFeed', 'ItemModel', 'ShowAll', '_ExistsError', 'OPMLParser', -'UndoQueue', +'UndoQueue', 'NewestItem', 'FeedModel', (_BusinessLayer, FolderModel, FeedBusinessLayer, Persistence, FeedType, -ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue) -> +ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue, +NewestItem, FeedModel) -> class FolderBusinessLayer extends _BusinessLayer constructor: (@_folderModel, @_feedBusinessLayer, @_showAll, activeFeed, persistence, @_feedType, itemModel, @_opmlParser, - @_undoQueue) -> + @_undoQueue, @_newestItem, @_feedModel) -> super(activeFeed, persistence, itemModel, @_feedType.Folder) @@ -41,12 +42,19 @@ ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue) -> delete: (folderId) -> + feeds = [] folder = @_folderModel.removeById(folderId) + + # also delete feeds + for feed in @_feedBusinessLayer.getFeedsOfFolder(folderId) + feeds.push(@_feedModel.removeById(feed.id)) callback = => @_persistence.deleteFolder(folderId) undoCallback = => @_folderModel.add(folder) + for feed in feeds + @_feedModel.create(feed) @_undoQueue.add(folder.name, callback, 10*1000, undoCallback) @@ -74,9 +82,16 @@ ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue) -> @_persistence.collapseFolder(folder.id) - markFolderRead: (folderId) -> - for feed in @_feedBusinessLayer.getFeedsOfFolder(folderId) - @_feedBusinessLayer.markFeedRead(feed.id) + markRead: (folderId) -> + newestItemId = @_newestItem.getId() + folder = @_folderModel.getById(folderId) + + if newestItemId != 0 and angular.isDefined(folder) + for feed in @_feedBusinessLayer.getFeedsOfFolder(folderId) + feed.unreadCount = 0 + for item in @_itemModel.getAll() + item.setRead() + @_persistence.setFolderRead(folderId, newestItemId) getUnreadCount: (folderId) -> @@ -164,6 +179,6 @@ ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue) -> return new FolderBusinessLayer(FolderModel, FeedBusinessLayer, ShowAll, ActiveFeed, Persistence, FeedType, ItemModel, - OPMLParser, UndoQueue) + OPMLParser, UndoQueue, NewestItem, FeedModel) ] \ No newline at end of file diff --git a/js/app/services/businesslayer/subscriptionsbusinesslayer.coffee b/js/app/services/businesslayer/subscriptionsbusinesslayer.coffee index 23cedc955..8c0025946 100644 --- a/js/app/services/businesslayer/subscriptionsbusinesslayer.coffee +++ b/js/app/services/businesslayer/subscriptionsbusinesslayer.coffee @@ -23,14 +23,14 @@ License along with this library. If not, see . angular.module('News').factory 'SubscriptionsBusinessLayer', ['_BusinessLayer', 'FeedBusinessLayer', 'Persistence', 'ShowAll', 'ActiveFeed', -'FeedType', 'ItemModel', +'FeedType', 'ItemModel', 'FeedModel', 'NewestItem', (_BusinessLayer, FeedBusinessLayer, Persistence, ShowAll, ActiveFeed, FeedType, -ItemModel) -> +ItemModel, FeedModel, NewestItem) -> class SubscriptionsBusinessLayer extends _BusinessLayer constructor: (@_feedBusinessLayer, @_showAll, feedType, - persistence, activeFeed, itemModel) -> + persistence, activeFeed, itemModel, @_feedModel, @_newestItem) -> super(activeFeed, persistence, itemModel, feedType.Subscriptions) isVisible: -> @@ -45,8 +45,15 @@ ItemModel) -> return visible - markAllRead: -> - @_feedBusinessLayer.markAllRead() + markRead: -> + newestItemId = @_newestItem.getId() + + if newestItemId != 0 + for feed in @_feedModel.getAll() + feed.unreadCount = 0 + for item in @_itemModel.getAll() + item.setRead() + @_persistence.setAllRead(newestItemId) getUnreadCount: -> @@ -54,5 +61,6 @@ ItemModel) -> return new SubscriptionsBusinessLayer(FeedBusinessLayer, ShowAll, FeedType, - Persistence, ActiveFeed, ItemModel) + Persistence, ActiveFeed, ItemModel, + FeedModel, NewestItem) ] diff --git a/js/app/services/persistence.coffee b/js/app/services/persistence.coffee index 771f6a5fb..a5905e745 100644 --- a/js/app/services/persistence.coffee +++ b/js/app/services/persistence.coffee @@ -126,6 +126,17 @@ $rootScope) -> @_request.post 'news_items_unread', params + setAllRead: (highestItemId) -> + ### + sets all items as read + ### + params = + data: + highestItemId: highestItemId + + @_request.post 'news_items_all_read', params + + ### FEED CONTROLLER ### @@ -325,6 +336,19 @@ $rootScope) -> @_request.post 'news_folders_rename', params + setFolderRead: (folderId, highestItemId) -> + ### + sets all items of a folder as read + ### + params = + routeParams: + folderId: folderId + data: + highestItemId: highestItemId + + @_request.post 'news_folders_read', params + + ### EXPORT CONTROLLER diff --git a/js/public/app.js b/js/public/app.js index 91a50de34..482a42104 100644 --- a/js/public/app.js +++ b/js/public/app.js @@ -859,7 +859,7 @@ License along with this library. If not, see . return this._undoQueue.add(feed.title, callback, 10 * 1000, undoCallback); }; - FeedBusinessLayer.prototype.markFeedRead = function(feedId) { + FeedBusinessLayer.prototype.markRead = function(feedId) { var feed, item, newestItemId, _i, _len, _ref, _results; feed = this._feedModel.getById(feedId); @@ -877,18 +877,6 @@ License along with this library. If not, see . } }; - FeedBusinessLayer.prototype.markAllRead = function() { - var feed, _i, _len, _ref, _results; - - _ref = this._feedModel.getAll(); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - feed = _ref[_i]; - _results.push(this.markFeedRead(feed.id)); - } - return _results; - }; - FeedBusinessLayer.prototype.getNumberOfFeeds = function() { return this._feedModel.size(); }; @@ -1061,19 +1049,21 @@ License along with this library. If not, see . __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; angular.module('News').factory('FolderBusinessLayer', [ - '_BusinessLayer', 'FolderModel', 'FeedBusinessLayer', 'Persistence', 'FeedType', 'ActiveFeed', 'ItemModel', 'ShowAll', '_ExistsError', 'OPMLParser', 'UndoQueue', function(_BusinessLayer, FolderModel, FeedBusinessLayer, Persistence, FeedType, ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue) { + '_BusinessLayer', 'FolderModel', 'FeedBusinessLayer', 'Persistence', 'FeedType', 'ActiveFeed', 'ItemModel', 'ShowAll', '_ExistsError', 'OPMLParser', 'UndoQueue', 'NewestItem', 'FeedModel', function(_BusinessLayer, FolderModel, FeedBusinessLayer, Persistence, FeedType, ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue, NewestItem, FeedModel) { var FolderBusinessLayer; FolderBusinessLayer = (function(_super) { __extends(FolderBusinessLayer, _super); - function FolderBusinessLayer(_folderModel, _feedBusinessLayer, _showAll, activeFeed, persistence, _feedType, itemModel, _opmlParser, _undoQueue) { + function FolderBusinessLayer(_folderModel, _feedBusinessLayer, _showAll, activeFeed, persistence, _feedType, itemModel, _opmlParser, _undoQueue, _newestItem, _feedModel) { this._folderModel = _folderModel; this._feedBusinessLayer = _feedBusinessLayer; this._showAll = _showAll; this._feedType = _feedType; this._opmlParser = _opmlParser; this._undoQueue = _undoQueue; + this._newestItem = _newestItem; + this._feedModel = _feedModel; FolderBusinessLayer.__super__.constructor.call(this, activeFeed, persistence, itemModel, this._feedType.Folder); } @@ -1082,15 +1072,29 @@ License along with this library. If not, see . }; FolderBusinessLayer.prototype["delete"] = function(folderId) { - var callback, folder, undoCallback, + var callback, feed, feeds, folder, undoCallback, _i, _len, _ref, _this = this; + feeds = []; folder = this._folderModel.removeById(folderId); + _ref = this._feedBusinessLayer.getFeedsOfFolder(folderId); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + feed = _ref[_i]; + feeds.push(this._feedModel.removeById(feed.id)); + } callback = function() { return _this._persistence.deleteFolder(folderId); }; undoCallback = function() { - return _this._folderModel.add(folder); + var _j, _len1, _results; + + _this._folderModel.add(folder); + _results = []; + for (_j = 0, _len1 = feeds.length; _j < _len1; _j++) { + feed = feeds[_j]; + _results.push(_this._feedModel.create(feed)); + } + return _results; }; return this._undoQueue.add(folder.name, callback, 10 * 1000, undoCallback); }; @@ -1125,16 +1129,24 @@ License along with this library. If not, see . } }; - FolderBusinessLayer.prototype.markFolderRead = function(folderId) { - var feed, _i, _len, _ref, _results; + FolderBusinessLayer.prototype.markRead = function(folderId) { + var feed, folder, item, newestItemId, _i, _j, _len, _len1, _ref, _ref1; - _ref = this._feedBusinessLayer.getFeedsOfFolder(folderId); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - feed = _ref[_i]; - _results.push(this._feedBusinessLayer.markFeedRead(feed.id)); + newestItemId = this._newestItem.getId(); + folder = this._folderModel.getById(folderId); + if (newestItemId !== 0 && angular.isDefined(folder)) { + _ref = this._feedBusinessLayer.getFeedsOfFolder(folderId); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + feed = _ref[_i]; + feed.unreadCount = 0; + } + _ref1 = this._itemModel.getAll(); + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + item = _ref1[_j]; + item.setRead(); + } + return this._persistence.setFolderRead(folderId, newestItemId); } - return _results; }; FolderBusinessLayer.prototype.getUnreadCount = function(folderId) { @@ -1261,7 +1273,7 @@ License along with this library. If not, see . return FolderBusinessLayer; })(_BusinessLayer); - return new FolderBusinessLayer(FolderModel, FeedBusinessLayer, ShowAll, ActiveFeed, Persistence, FeedType, ItemModel, OPMLParser, UndoQueue); + return new FolderBusinessLayer(FolderModel, FeedBusinessLayer, ShowAll, ActiveFeed, Persistence, FeedType, ItemModel, OPMLParser, UndoQueue, NewestItem, FeedModel); } ]); @@ -1516,15 +1528,17 @@ License along with this library. If not, see . __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; angular.module('News').factory('SubscriptionsBusinessLayer', [ - '_BusinessLayer', 'FeedBusinessLayer', 'Persistence', 'ShowAll', 'ActiveFeed', 'FeedType', 'ItemModel', function(_BusinessLayer, FeedBusinessLayer, Persistence, ShowAll, ActiveFeed, FeedType, ItemModel) { + '_BusinessLayer', 'FeedBusinessLayer', 'Persistence', 'ShowAll', 'ActiveFeed', 'FeedType', 'ItemModel', 'FeedModel', 'NewestItem', function(_BusinessLayer, FeedBusinessLayer, Persistence, ShowAll, ActiveFeed, FeedType, ItemModel, FeedModel, NewestItem) { var SubscriptionsBusinessLayer; SubscriptionsBusinessLayer = (function(_super) { __extends(SubscriptionsBusinessLayer, _super); - function SubscriptionsBusinessLayer(_feedBusinessLayer, _showAll, feedType, persistence, activeFeed, itemModel) { + function SubscriptionsBusinessLayer(_feedBusinessLayer, _showAll, feedType, persistence, activeFeed, itemModel, _feedModel, _newestItem) { this._feedBusinessLayer = _feedBusinessLayer; this._showAll = _showAll; + this._feedModel = _feedModel; + this._newestItem = _newestItem; SubscriptionsBusinessLayer.__super__.constructor.call(this, activeFeed, persistence, itemModel, feedType.Subscriptions); } @@ -1542,8 +1556,23 @@ License along with this library. If not, see . } }; - SubscriptionsBusinessLayer.prototype.markAllRead = function() { - return this._feedBusinessLayer.markAllRead(); + SubscriptionsBusinessLayer.prototype.markRead = function() { + var feed, item, newestItemId, _i, _j, _len, _len1, _ref, _ref1; + + newestItemId = this._newestItem.getId(); + if (newestItemId !== 0) { + _ref = this._feedModel.getAll(); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + feed = _ref[_i]; + feed.unreadCount = 0; + } + _ref1 = this._itemModel.getAll(); + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + item = _ref1[_j]; + item.setRead(); + } + return this._persistence.setAllRead(newestItemId); + } }; SubscriptionsBusinessLayer.prototype.getUnreadCount = function() { @@ -1553,7 +1582,7 @@ License along with this library. If not, see . return SubscriptionsBusinessLayer; })(_BusinessLayer); - return new SubscriptionsBusinessLayer(FeedBusinessLayer, ShowAll, FeedType, Persistence, ActiveFeed, ItemModel); + return new SubscriptionsBusinessLayer(FeedBusinessLayer, ShowAll, FeedType, Persistence, ActiveFeed, ItemModel, FeedModel, NewestItem); } ]); @@ -2530,6 +2559,21 @@ License along with this library. If not, see . return this._request.post('news_items_unread', params); }; + Persistence.prototype.setAllRead = function(highestItemId) { + /* + sets all items as read + */ + + var params; + + params = { + data: { + highestItemId: highestItemId + } + }; + return this._request.post('news_items_all_read', params); + }; + /* FEED CONTROLLER */ @@ -2803,6 +2847,24 @@ License along with this library. If not, see . return this._request.post('news_folders_rename', params); }; + Persistence.prototype.setFolderRead = function(folderId, highestItemId) { + /* + sets all items of a folder as read + */ + + var params; + + params = { + routeParams: { + folderId: folderId + }, + data: { + highestItemId: highestItemId + } + }; + return this._request.post('news_folders_read', params); + }; + /* EXPORT CONTROLLER */ diff --git a/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee b/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee index 63268224e..a41426922 100644 --- a/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee +++ b/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee @@ -95,7 +95,7 @@ describe 'FeedBusinessLayer', -> it 'should not mark feed read when no highest item id', => @persistence.setFeedRead = jasmine.createSpy('setFeedRead') - @FeedBusinessLayer.markFeedRead(5) + @FeedBusinessLayer.markRead(5) expect(@persistence.setFeedRead).not.toHaveBeenCalled() @@ -107,7 +107,7 @@ describe 'FeedBusinessLayer', -> @ItemModel.add({id: 6, feedId: 5, guidHash: 'a1'}) @ItemModel.add({id: 3, feedId: 5, guidHash: 'a2'}) @ItemModel.add({id: 2, feedId: 5, guidHash: 'a3'}) - @FeedBusinessLayer.markFeedRead(5) + @FeedBusinessLayer.markRead(5) expect(@persistence.setFeedRead).toHaveBeenCalledWith(5, 25) expect(@FeedModel.getById(5).unreadCount).toBe(0) @@ -116,20 +116,6 @@ describe 'FeedBusinessLayer', -> expect(@ItemModel.getById(2).isRead()).toBeTruthy() - it 'should mark all as read', => - @NewestItem.handle(25) - @persistence.setFeedRead = jasmine.createSpy('setFeedRead') - @FeedModel.add({id: 3, unreadCount:134, folderId: 3, url: 'a1'}) - @FeedModel.add({id: 5, unreadCount:2, folderId: 2, url: 'a2'}) - @FeedModel.add({id: 1, unreadCount:12, folderId: 3, url: 'a3'}) - - @FeedBusinessLayer.markAllRead() - - expect(@FeedModel.getById(3).unreadCount).toBe(0) - expect(@FeedModel.getById(1).unreadCount).toBe(0) - expect(@FeedModel.getById(5).unreadCount).toBe(0) - - it 'should get the correct unread count for subscribtions', => @FeedModel.add({id: 3, unreadCount:134, url: 'a1'}) @FeedModel.add({id: 5, unreadCount:2, url: 'a2'}) diff --git a/js/tests/services/businesslayer/folderbusinesslayerSpec.coffee b/js/tests/services/businesslayer/folderbusinesslayerSpec.coffee index 56d90de86..4d23d5b8d 100644 --- a/js/tests/services/businesslayer/folderbusinesslayerSpec.coffee +++ b/js/tests/services/businesslayer/folderbusinesslayerSpec.coffee @@ -46,13 +46,18 @@ describe 'FolderBusinessLayer', -> it 'should delete folders', => + @FeedModel.add({id: 5, unreadCount:2, folderId: 3, url: 'a1'}) @FolderModel.removeById = jasmine.createSpy('remove').andCallFake -> return {id: 3, name: 'test'} + @FeedModel.removeById = jasmine.createSpy('remove').andCallFake -> + return {id: 5, name: 'test', folderId: 3} + @persistence.deleteFolder = jasmine.createSpy('deletequery') @FolderBusinessLayer.delete(3) @$timeout.flush() expect(@FolderModel.removeById).toHaveBeenCalledWith(3) + expect(@FeedModel.removeById).toHaveBeenCalledWith(5) expect(@persistence.deleteFolder).toHaveBeenCalledWith(3) @@ -83,17 +88,21 @@ describe 'FolderBusinessLayer', -> it 'should mark folder as read', => @NewestItem.handle(25) - @persistence.setFeedRead = jasmine.createSpy('setFeedRead') + @FolderModel.add({id: 3, opened: false, name: 'ho'}) + + @persistence.setFolderRead = jasmine.createSpy('setFeedRead') @FeedModel.add({id: 3, unreadCount:134, folderId: 3, url: 'a1'}) @FeedModel.add({id: 5, unreadCount:2, folderId: 2, url: 'a2'}) @FeedModel.add({id: 1, unreadCount:12, folderId: 3, url: 'a3'}) - @FolderBusinessLayer.markFolderRead(3) + @FolderBusinessLayer.markRead(3) expect(@FeedModel.getById(3).unreadCount).toBe(0) expect(@FeedModel.getById(1).unreadCount).toBe(0) expect(@FeedModel.getById(5).unreadCount).toBe(2) + expect(@persistence.setFolderRead).toHaveBeenCalledWith(3, 25) + it 'should get the correct unread count', => @FeedModel.add({id: 5, unreadCount:2, folderId: 2, url: 'a1'}) diff --git a/js/tests/services/businesslayer/subsriptionsbusinesslayerSpec.coffee b/js/tests/services/businesslayer/subsriptionsbusinesslayerSpec.coffee index 6193a9795..9e3437b3c 100644 --- a/js/tests/services/businesslayer/subsriptionsbusinesslayerSpec.coffee +++ b/js/tests/services/businesslayer/subsriptionsbusinesslayerSpec.coffee @@ -68,15 +68,19 @@ describe 'SubscriptionsBusinessLayer', -> expect(@SubscriptionsBusinessLayer.isVisible()).toBe(true) - it 'should mark all feeds as read', => + it 'should mark all as read', => @NewestItem.handle(25) - item = {id: 3, unreadCount: 132, url: 'hi'} - @FeedModel.add(item) + @persistence.setAllRead = jasmine.createSpy('setFeedRead') + @FeedModel.add({id: 3, unreadCount:134, folderId: 3, url: 'a1'}) + @FeedModel.add({id: 5, unreadCount:2, folderId: 2, url: 'a2'}) + @FeedModel.add({id: 1, unreadCount:12, folderId: 3, url: 'a3'}) - @SubscriptionsBusinessLayer.markAllRead() + @SubscriptionsBusinessLayer.markRead() - expect(item.unreadCount).toBe(0) - expect(@persistence.setFeedRead).toHaveBeenCalled() + expect(@FeedModel.getById(3).unreadCount).toBe(0) + expect(@FeedModel.getById(1).unreadCount).toBe(0) + expect(@FeedModel.getById(5).unreadCount).toBe(0) + expect(@persistence.setAllRead).toHaveBeenCalledWith(25) it 'should get the correct unread count', => diff --git a/js/tests/services/persistenceSpec.coffee b/js/tests/services/persistenceSpec.coffee index e42d3bb17..16f8cbd69 100644 --- a/js/tests/services/persistenceSpec.coffee +++ b/js/tests/services/persistenceSpec.coffee @@ -117,6 +117,14 @@ describe 'Persistence', -> expect(@req.post).toHaveBeenCalledWith('news_items_unread', params) + it 'shoud send a correct request for marking all items read', => + params = + data: + highestItemId: 4 + + @Persistence.setAllRead(params.data.highestItemId) + + ### FEED CONTROLLER @@ -153,7 +161,7 @@ describe 'Persistence', -> expect(@req.post).toHaveBeenCalledWith('news_feeds_move', params) - it 'shoud send a correct request for marking all items read', => + it 'shoud send a correct request for marking all items of a feed read', => params = data: highestItemId: 4 @@ -298,6 +306,20 @@ describe 'Persistence', -> expect(@req.post).toHaveBeenCalledWith('news_folders_rename', params) + it 'shoud send a correct request for marking all items of a folders read', => + params = + data: + highestItemId: 4 + routeParams: + folderId: 3 + + @Persistence.setFolderRead(params.routeParams.folderId, + params.data.highestItemId) + + + expect(@req.post).toHaveBeenCalledWith('news_folders_read', params) + + ### EXPORT CONTROLLER ### -- cgit v1.2.3