summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--js/build/app.js27
-rw-r--r--js/controller/NavigationController.js18
-rw-r--r--js/service/FeedResource.js7
-rw-r--r--js/tests/unit/controller/NavigationControllerSpec.js67
-rw-r--r--js/tests/unit/service/FeedResourceSpec.js9
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);