diff options
-rw-r--r-- | js/build/app.js | 27 | ||||
-rw-r--r-- | js/controller/NavigationController.js | 18 | ||||
-rw-r--r-- | js/service/FeedResource.js | 7 | ||||
-rw-r--r-- | js/tests/unit/controller/NavigationControllerSpec.js | 67 | ||||
-rw-r--r-- | js/tests/unit/service/FeedResourceSpec.js | 9 |
5 files changed, 126 insertions, 2 deletions
diff --git a/js/build/app.js b/js/build/app.js index 40e1a4bb6..185447e6b 100644 --- a/js/build/app.js +++ b/js/build/app.js @@ -204,7 +204,27 @@ var $__build_47_app__ = function () { this.getFolders = function () { return FolderResource.getAll(); }; - console.log(ItemResource); + this.markFolderRead = function (folderId) { + FeedResource.markFolderRead(folderId); + for (var $__3 = FeedResource.getByFolderId(folderId)[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) { + try { + throw undefined; + } catch (feed) { + feed = $__4.value; + { + ItemResource.markFeedRead(feed.id); + } + } + } + }; + this.markFeedRead = function (feedId) { + ItemResource.markFeedRead(feedId); + FeedResource.markFeedRead(feedId); + }; + this.markRead = function () { + ItemResource.markRead(); + FeedResource.markRead(); + }; } ]); app.controller('SettingsController', [ @@ -343,6 +363,11 @@ var $__build_47_app__ = function () { }, getFolderUnreadCount: function (folderId) { return this.folderUnreadCount[$traceurRuntime.toProperty(folderId)] || 0; + }, + getByFolderId: function (folderId) { + return this.values.filter(function (v) { + return v.folderId === folderId; + }); } }, {}, Resource); return new FeedResource($http, BASE_URL); diff --git a/js/controller/NavigationController.js b/js/controller/NavigationController.js index bc0c13d13..292f98110 100644 --- a/js/controller/NavigationController.js +++ b/js/controller/NavigationController.js @@ -19,6 +19,22 @@ function (FeedResource, FolderResource, ItemResource) { return FolderResource.getAll(); }; - console.log(ItemResource); + this.markFolderRead = (folderId) => { + FeedResource.markFolderRead(folderId); + + for (let feed of FeedResource.getByFolderId(folderId)) { + ItemResource.markFeedRead(feed.id); + } + }; + + this.markFeedRead = (feedId) => { + ItemResource.markFeedRead(feedId); + FeedResource.markFeedRead(feedId); + }; + + this.markRead = () => { + ItemResource.markRead(); + FeedResource.markRead(); + }; });
\ No newline at end of file diff --git a/js/service/FeedResource.js b/js/service/FeedResource.js index 5880c83fd..3e7a2e8bd 100644 --- a/js/service/FeedResource.js +++ b/js/service/FeedResource.js @@ -72,6 +72,7 @@ app.factory('FeedResource', (Resource, $http, BASE_URL) => { this.updateUnreadCache(); } + markFolderRead (folderId) { for (let feed of this.values) { if (feed.folderId === folderId) { @@ -103,6 +104,12 @@ app.factory('FeedResource', (Resource, $http, BASE_URL) => { return this.folderUnreadCount[folderId] || 0; } + + getByFolderId (folderId) { + return this.values.filter(v => v.folderId === folderId); + } + + } return new FeedResource($http, BASE_URL); diff --git a/js/tests/unit/controller/NavigationControllerSpec.js b/js/tests/unit/controller/NavigationControllerSpec.js index a8d3a0f76..4d4e4bb10 100644 --- a/js/tests/unit/controller/NavigationControllerSpec.js +++ b/js/tests/unit/controller/NavigationControllerSpec.js @@ -33,4 +33,71 @@ describe('NavigationController', () => { })); + it('should mark Folders read', inject(($controller) => { + let FeedResource = { + markFolderRead: jasmine.createSpy('folder'), + getByFolderId: () => { + return [ + {id: 3}, + {id: 4} + ]; + } + }; + + let ItemResource = { + markFeedRead: jasmine.createSpy('feedfolder') + }; + + controller = $controller('NavigationController', { + FeedResource: FeedResource, + ItemResource: ItemResource + }); + + controller.markFolderRead(3); + + expect(FeedResource.markFolderRead).toHaveBeenCalledWith(3); + expect(ItemResource.markFeedRead.callCount).toBe(2); + })); + + + it('should mark a feed read', inject(($controller) => { + let FeedResource = { + markFeedRead: jasmine.createSpy('folder'), + }; + + let ItemResource = { + markFeedRead: jasmine.createSpy('feedfolder') + }; + + controller = $controller('NavigationController', { + FeedResource: FeedResource, + ItemResource: ItemResource + }); + + controller.markFeedRead(3); + + expect(FeedResource.markFeedRead).toHaveBeenCalledWith(3); + expect(ItemResource.markFeedRead).toHaveBeenCalledWith(3); + })); + + + it('should mark all read', inject(($controller) => { + let FeedResource = { + markRead: jasmine.createSpy('folder'), + }; + + let ItemResource = { + markRead: jasmine.createSpy('feedfolder') + }; + + controller = $controller('NavigationController', { + FeedResource: FeedResource, + ItemResource: ItemResource + }); + + controller.markRead(); + + expect(FeedResource.markRead).toHaveBeenCalled(); + expect(ItemResource.markRead).toHaveBeenCalled(); + })); });
\ No newline at end of file diff --git a/js/tests/unit/service/FeedResourceSpec.js b/js/tests/unit/service/FeedResourceSpec.js index a12536a9f..d14d7f716 100644 --- a/js/tests/unit/service/FeedResourceSpec.js +++ b/js/tests/unit/service/FeedResourceSpec.js @@ -56,6 +56,15 @@ describe('FeedResource', () => { })); + it('should get all of folder', inject((FeedResource) => { + + let folders = FeedResource.getByFolderId(3); + + expect(folders.length).toBe(2); + })); + + + it('should cache unreadcount', inject((FeedResource) => { expect(FeedResource.getUnreadCount()).toBe(70); |