summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-05-09 12:57:35 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-05-09 12:57:35 +0200
commitb8b4dfb4969e1baf84a14fb65a5dc153b0f5fae4 (patch)
tree27e211e26f442efd72a7f34903953ad57b1a9b76 /js
parentfe0de2ab84a88cb4c742f4f10fd43716934b7282 (diff)
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
Diffstat (limited to 'js')
-rw-r--r--js/app/services/businesslayer/feedbusinesslayer.coffee7
-rw-r--r--js/app/services/businesslayer/folderbusinesslayer.coffee29
-rw-r--r--js/app/services/businesslayer/subscriptionsbusinesslayer.coffee20
-rw-r--r--js/app/services/persistence.coffee24
-rw-r--r--js/public/app.js124
-rw-r--r--js/tests/services/businesslayer/feedbusinesslayerSpec.coffee18
-rw-r--r--js/tests/services/businesslayer/folderbusinesslayerSpec.coffee13
-rw-r--r--js/tests/services/businesslayer/subsriptionsbusinesslayerSpec.coffee16
-rw-r--r--js/tests/services/persistenceSpec.coffee24
9 files changed, 200 insertions, 75 deletions
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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
}
};
- 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 <http://www.gnu.org/licenses/>.
__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 <http://www.gnu.org/licenses/>.
};
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 <http://www.gnu.org/licenses/>.
}
};
- 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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
__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 <http://www.gnu.org/licenses/>.
}
};
- 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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
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
###