diff options
Diffstat (limited to 'js')
-rw-r--r-- | js/app/controllers/settingscontroller.coffee | 12 | ||||
-rw-r--r-- | js/app/services/businesslayer/feedbusinesslayer.coffee | 16 | ||||
-rw-r--r-- | js/app/services/persistence.coffee | 8 | ||||
-rw-r--r-- | js/public/app.js | 44 | ||||
-rw-r--r-- | js/tests/controllers/settingscontrollerSpec.coffee | 29 | ||||
-rw-r--r-- | js/tests/services/businesslayer/feedbusinesslayerSpec.coffee | 33 | ||||
-rw-r--r-- | js/tests/services/persistenceSpec.coffee | 13 |
7 files changed, 151 insertions, 4 deletions
diff --git a/js/app/controllers/settingscontroller.coffee b/js/app/controllers/settingscontroller.coffee index a1632a761..ef282c900 100644 --- a/js/app/controllers/settingscontroller.coffee +++ b/js/app/controllers/settingscontroller.coffee @@ -37,4 +37,16 @@ angular.module('News').controller 'SettingsController', console.error error $scope.error = true + + $scope.importGoogleReader = (fileContent) => + $scope.jsonError = false + ShowAll.setShowAll(true) + + try + parsedJSON = JSON.parse(fileContent) + FeedBusinessLayer.importGoogleReader(parsedJSON) + catch error + console.error error + $scope.jsonError = true + ]
\ No newline at end of file diff --git a/js/app/services/businesslayer/feedbusinesslayer.coffee b/js/app/services/businesslayer/feedbusinesslayer.coffee index f02252618..a2fa0df3e 100644 --- a/js/app/services/businesslayer/feedbusinesslayer.coffee +++ b/js/app/services/businesslayer/feedbusinesslayer.coffee @@ -172,6 +172,22 @@ FeedModel, NewLoading, _ExistsError, Utils) -> @_persistence.updateFeed(feed.id) + importGoogleReader: (json) -> + url = 'http://owncloud/googlereader' # hardcoded + + if angular.isUndefined(@_feedModel.getByUrl(url)) + feed = + title: 'Google Reader' + url: url + folderId: 0 + unreadCount: 0 + faviconLink: 'url('+@_utils.imagePath('core', 'loading.gif')+')' + + @_feedModel.add(feed) + + @_persistence.importGoogleReader(json) + + return new FeedBusinessLayer(ShowAll, FeedModel, Persistence, ActiveFeed, FeedType, ItemModel, NewLoading, Utils) diff --git a/js/app/services/persistence.coffee b/js/app/services/persistence.coffee index 06945f433..88d1d18cc 100644 --- a/js/app/services/persistence.coffee +++ b/js/app/services/persistence.coffee @@ -248,6 +248,14 @@ $rootScope) -> @_request.post 'news_feeds_update', params + importGoogleReader: (json) -> + params = + data: + json: json + + @_request.post 'news_feeds_import_googlereader', params + + ### FOLDER CONTROLLER ### diff --git a/js/public/app.js b/js/public/app.js index 855bcd895..7422fc83a 100644 --- a/js/public/app.js +++ b/js/public/app.js @@ -545,7 +545,7 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. var _this = this; $scope.feedBusinessLayer = FeedBusinessLayer; - return $scope["import"] = function(fileContent) { + $scope["import"] = function(fileContent) { var error; $scope.error = false; @@ -558,6 +558,20 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. return $scope.error = true; } }; + return $scope.importGoogleReader = function(fileContent) { + var error, parsedJSON; + + $scope.jsonError = false; + ShowAll.setShowAll(true); + try { + parsedJSON = JSON.parse(fileContent); + return FeedBusinessLayer.importGoogleReader(parsedJSON); + } catch (_error) { + error = _error; + console.error(error); + return $scope.jsonError = true; + } + }; } ]); @@ -898,6 +912,23 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. return _results; }; + FeedBusinessLayer.prototype.importGoogleReader = function(json) { + var feed, url; + + url = 'http://owncloud/googlereader'; + if (angular.isUndefined(this._feedModel.getByUrl(url))) { + feed = { + title: 'Google Reader', + url: url, + folderId: 0, + unreadCount: 0, + faviconLink: 'url(' + this._utils.imagePath('core', 'loading.gif') + ')' + }; + this._feedModel.add(feed); + } + return this._persistence.importGoogleReader(json); + }; + return FeedBusinessLayer; })(_BusinessLayer); @@ -2516,6 +2547,17 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. return this._request.post('news_feeds_update', params); }; + Persistence.prototype.importGoogleReader = function(json) { + var params; + + params = { + data: { + json: json + } + }; + return this._request.post('news_feeds_import_googlereader', params); + }; + /* FOLDER CONTROLLER */ diff --git a/js/tests/controllers/settingscontrollerSpec.coffee b/js/tests/controllers/settingscontrollerSpec.coffee index 88e16c969..dca53ff4b 100644 --- a/js/tests/controllers/settingscontrollerSpec.coffee +++ b/js/tests/controllers/settingscontrollerSpec.coffee @@ -56,4 +56,31 @@ describe 'SettingsController', -> @scope.import(xml) expect(@ShowAll.getShowAll()).toBe(true) -
\ No newline at end of file + + + it 'should set showall to true if importing json', => + json = "[\"test\"]" + + @scope.importGoogleReader(json) + + expect(@ShowAll.getShowAll()).toBe(true) + + + it 'should show an error if the json import failed', => + json = 'test' + + @scope.importGoogleReader(json) + + expect(@scope.jsonError).toBe(true) + + + it 'should import json', => + @FeedBusinessLayer.importGoogleReader = jasmine.createSpy('googlereader') + json = "{\"test\": \"abc\"}" + + @scope.importGoogleReader(json) + + expected = JSON.parse(json) + expect(@FeedBusinessLayer.importGoogleReader).toHaveBeenCalledWith( + expected + ) diff --git a/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee b/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee index f867443c7..5ac93f25e 100644 --- a/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee +++ b/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee @@ -344,4 +344,35 @@ describe 'FeedBusinessLayer', -> @FeedBusinessLayer.updateFeeds() - expect(@persistence.updateFeed).not.toHaveBeenCalled()
\ No newline at end of file + expect(@persistence.updateFeed).not.toHaveBeenCalled() + + + it 'should not import google reader json', => + @persistence.importGoogleReader = jasmine.createSpy('importGoogleReader') + + json = {"test": "hi"} + @FeedBusinessLayer.importGoogleReader(json) + + imported = @FeedModel.getByUrl('http://owncloud/googlereader') + expect(imported.title).toBe('Google Reader') + expect(imported.folderId).toBe(0) + expect(imported.unreadCount).toBe(0) + + + it 'should not create a google reader feed if it already exists', => + @persistence.importGoogleReader = jasmine.createSpy('importGoogleReader') + + @FeedModel.add({id: 3, url: 'http://owncloud/googlereader'}) + json = {"test": "hi"} + @FeedBusinessLayer.importGoogleReader(json) + + imported = @FeedModel.getByUrl('http://owncloud/googlereader') + expect(imported.folderId).not.toBeDefined() + + + it 'should create an import google reader request', => + @persistence.importGoogleReader = jasmine.createSpy('importGoogleReader') + json = {"test": "hi"} + @FeedBusinessLayer.importGoogleReader(json) + + expect(@persistence.importGoogleReader).toHaveBeenCalledWith(json)
\ No newline at end of file diff --git a/js/tests/services/persistenceSpec.coffee b/js/tests/services/persistenceSpec.coffee index 3fca95cc2..98bd96531 100644 --- a/js/tests/services/persistenceSpec.coffee +++ b/js/tests/services/persistenceSpec.coffee @@ -237,6 +237,17 @@ describe 'Persistence', -> expect(@req.post).toHaveBeenCalledWith('news_feeds_create', params) + it 'should do a proper import google reader request', => + params = + data: + json: {"some": "json"} + + @Persistence.importGoogleReader(params.data.json) + + + expect(@req.post).toHaveBeenCalledWith('news_feeds_import_googlereader', + params) + ### FOLDER CONTROLLER @@ -367,4 +378,4 @@ describe 'Persistence', -> onFailure: jasmine.any(Function) expect(@req.get).toHaveBeenCalledWith('news_usersettings_language', - expected)
\ No newline at end of file + expected) |