From 2391e6bf62e0a3624685a2a7c72bdb7de499bef2 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Thu, 12 Sep 2013 00:59:39 +0200 Subject: fix #342 --- js/app/controllers/settingscontroller.coffee | 8 ++-- .../businesslayer/feedbusinesslayer.coffee | 20 ++------- js/app/services/persistence.coffee | 8 ++-- js/public/app.js | 44 +++++++++---------- js/tests/controllers/settingscontrollerSpec.coffee | 21 +++++----- .../businesslayer/feedbusinesslayerSpec.coffee | 49 ++++------------------ js/tests/services/persistenceSpec.coffee | 8 ++-- 7 files changed, 54 insertions(+), 104 deletions(-) (limited to 'js') diff --git a/js/app/controllers/settingscontroller.coffee b/js/app/controllers/settingscontroller.coffee index b7cea8d21..120dfed49 100644 --- a/js/app/controllers/settingscontroller.coffee +++ b/js/app/controllers/settingscontroller.coffee @@ -37,14 +37,16 @@ angular.module('News').controller 'SettingsController', $scope.error = true - $scope.importGoogleReader = (fileContent) => + $scope.importArticles = (fileContent) => $scope.jsonError = false - ShowAll.setShowAll(true) + $scope.loading = true try parsedJSON = JSON.parse(fileContent) - FeedBusinessLayer.importGoogleReader(parsedJSON) + FeedBusinessLayer.importArticles parsedJSON, -> + $scope.loading = false catch error $scope.jsonError = true + $scope.loading = false ] \ No newline at end of file diff --git a/js/app/services/businesslayer/feedbusinesslayer.coffee b/js/app/services/businesslayer/feedbusinesslayer.coffee index cff714ac0..9b5f08a1c 100644 --- a/js/app/services/businesslayer/feedbusinesslayer.coffee +++ b/js/app/services/businesslayer/feedbusinesslayer.coffee @@ -174,25 +174,11 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, NewestItem)-> @_feedModel.removeByUrl(url) - 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) - + importArticles: (json, callback) -> onSuccess = (response) => - id = response.data.feeds[0].id - @load(id) + callback() - @_persistence.importGoogleReader(json, onSuccess) + @_persistence.importArticles(json, onSuccess) return new FeedBusinessLayer(ShowAll, FeedModel, Persistence, ActiveFeed, diff --git a/js/app/services/persistence.coffee b/js/app/services/persistence.coffee index e1562fc46..559601f69 100644 --- a/js/app/services/persistence.coffee +++ b/js/app/services/persistence.coffee @@ -254,13 +254,15 @@ $rootScope, $q) -> @_request.post 'news_feeds_update', params - importGoogleReader: (json, onSuccess) -> + importArticles: (json, onSuccess) -> params = data: json: json - onSuccess: onSuccess + onSuccess: => + @getAllFeeds() + onSuccess() - @_request.post 'news_feeds_import_googlereader', params + @_request.post 'news_feeds_import_articles', params ### diff --git a/js/public/app.js b/js/public/app.js index 7f0b6c8f4..cd822b6a4 100644 --- a/js/public/app.js +++ b/js/public/app.js @@ -796,16 +796,19 @@ License along with this library. If not, see . return $scope.error = true; } }; - return $scope.importGoogleReader = function(fileContent) { + return $scope.importArticles = function(fileContent) { var error, parsedJSON; $scope.jsonError = false; - ShowAll.setShowAll(true); + $scope.loading = true; try { parsedJSON = JSON.parse(fileContent); - return FeedBusinessLayer.importGoogleReader(parsedJSON); + return FeedBusinessLayer.importArticles(parsedJSON, function() { + return $scope.loading = false; + }); } catch (_error) { error = _error; - return $scope.jsonError = true; + $scope.jsonError = true; + return $scope.loading = false; } }; } @@ -1128,26 +1131,13 @@ License along with this library. If not, see . return this._feedModel.removeByUrl(url); }; - FeedBusinessLayer.prototype.importGoogleReader = function(json) { - var feed, onSuccess, url, + FeedBusinessLayer.prototype.importArticles = function(json, callback) { + var onSuccess, _this = this; - 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); - } onSuccess = function(response) { - var id; - id = response.data.feeds[0].id; - return _this.load(id); + return callback(); }; - return this._persistence.importGoogleReader(json, onSuccess); + return this._persistence.importArticles(json, onSuccess); }; return FeedBusinessLayer; @@ -2802,15 +2792,19 @@ License along with this library. If not, see . return this._request.post('news_feeds_update', params); }; - Persistence.prototype.importGoogleReader = function(json, onSuccess) { - var params; + Persistence.prototype.importArticles = function(json, onSuccess) { + var params, + _this = this; params = { data: { json: json }, - onSuccess: onSuccess + onSuccess: function() { + _this.getAllFeeds(); + return onSuccess(); + } }; - return this._request.post('news_feeds_import_googlereader', params); + return this._request.post('news_feeds_import_articles', params); }; /* diff --git a/js/tests/controllers/settingscontrollerSpec.coffee b/js/tests/controllers/settingscontrollerSpec.coffee index 4f028975f..beb404261 100644 --- a/js/tests/controllers/settingscontrollerSpec.coffee +++ b/js/tests/controllers/settingscontrollerSpec.coffee @@ -30,13 +30,14 @@ describe 'SettingsController', -> $provide.value 'Persistence', @persistence return - beforeEach inject ($controller, @FeedBusinessLayer, @FolderBusinessLayer, - @ShowAll) => + beforeEach inject ($controller, @ShowAll) => @scope = {} @replace = '$scope': @scope 'FolderBusinessLayer': import: jasmine.createSpy('import') + 'FeedBusinessLayer': + importArticles: jasmine.createSpy('import') @controller = $controller('SettingsController', @replace) @@ -63,29 +64,27 @@ describe 'SettingsController', -> expect(@ShowAll.getShowAll()).toBe(true) - it 'should set showall to true if importing json', => + it 'should set loading to true if importing json', => json = "[\"test\"]" - @scope.importGoogleReader(json) - - expect(@ShowAll.getShowAll()).toBe(true) + @scope.importArticles(json) + expect(@scope.loading).toBe(true) it 'should show an error if the json import failed', => json = 'test' - @scope.importGoogleReader(json) + @scope.importArticles(json) expect(@scope.jsonError).toBe(true) it 'should import json', => - @FeedBusinessLayer.importGoogleReader = jasmine.createSpy('googlereader') json = "{\"test\": \"abc\"}" - @scope.importGoogleReader(json) + @scope.importArticles(json) expected = JSON.parse(json) - expect(@FeedBusinessLayer.importGoogleReader).toHaveBeenCalledWith( - expected + expect(@replace.FeedBusinessLayer.importArticles).toHaveBeenCalledWith( + expected, jasmine.any(Function) ) diff --git a/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee b/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee index 92bbe4b2d..26e5a2973 100644 --- a/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee +++ b/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee @@ -332,49 +332,16 @@ describe 'FeedBusinessLayer', -> expect(@FeedModel.getByUrl('john')).toBe(undefined) - it 'should not import google reader json', => - @persistence.importGoogleReader = jasmine.createSpy('importGoogleReader') + it 'should create an import article request', => + callback = jasmine.createSpy('called') + @persistence.importArticles = jasmine.createSpy('importArticles') + @persistence.importArticles.andCallFake (data, onSuccess) => + onSuccess() json = {"test": "hi"} - @FeedBusinessLayer.importGoogleReader(json) + @FeedBusinessLayer.importArticles(json, callback) - 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', => - returned = - data: - feeds: [ - {id: 3, url: 'hi'} - ] - @persistence.getItems = jasmine.createSpy('importGoogleReader') - @persistence.importGoogleReader = jasmine.createSpy('importGoogleReader') - @persistence.importGoogleReader.andCallFake (data, onSuccess) => - @FeedModel.handle(returned.data.feeds) - onSuccess(returned) - - json = {"test": "hi"} - @FeedBusinessLayer.importGoogleReader(json) - - expect(@persistence.importGoogleReader).toHaveBeenCalledWith(json, + expect(@persistence.importArticles).toHaveBeenCalledWith(json, jasmine.any(Function)) - expect(@persistence.getItems).toHaveBeenCalledWith( - @FeedType.Feed, returned.data.feeds[0].id, 0 - ) - expect(@ActiveFeed.getId()).toBe(returned.data.feeds[0].id) - expect(@ActiveFeed.getType()).toBe(@FeedType.Feed) + expect(callback).toHaveBeenCalled() diff --git a/js/tests/services/persistenceSpec.coffee b/js/tests/services/persistenceSpec.coffee index 3a8a79050..e9f12f669 100644 --- a/js/tests/services/persistenceSpec.coffee +++ b/js/tests/services/persistenceSpec.coffee @@ -233,16 +233,16 @@ describe 'Persistence', -> expect(@req.post).toHaveBeenCalledWith('news_feeds_create', params) - it 'should do a proper import google reader request', => + it 'should do a proper import articles request', => params = data: json: {"some": "json"} - onSuccess: -> + onSuccess: jasmine.any(Function) - @Persistence.importGoogleReader(params.data.json, params.onSuccess) + @Persistence.importArticles(params.data.json, ->) - expect(@req.post).toHaveBeenCalledWith('news_feeds_import_googlereader', + expect(@req.post).toHaveBeenCalledWith('news_feeds_import_articles', params) -- cgit v1.2.3