summaryrefslogtreecommitdiffstats
path: root/js/tests
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-13 17:28:07 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-13 17:28:38 +0200
commit38e4b6d7e973bc99811139066a7a047b4bd76a4c (patch)
treefb88f63c0a69cc527956715333dddd20d3b94f0b /js/tests
parent8df86d1991e25dfaef8623e2f4945c67dbc5f318 (diff)
implement opml import, fix #23
Diffstat (limited to 'js/tests')
-rw-r--r--js/tests/controllers/settingscontrollerSpec.coffee22
-rw-r--r--js/tests/services/bl/folderblSpec.coffee210
2 files changed, 230 insertions, 2 deletions
diff --git a/js/tests/controllers/settingscontrollerSpec.coffee b/js/tests/controllers/settingscontrollerSpec.coffee
index aa66b6878..cedf5eb44 100644
--- a/js/tests/controllers/settingscontrollerSpec.coffee
+++ b/js/tests/controllers/settingscontrollerSpec.coffee
@@ -21,7 +21,25 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
###
-describe '_SettingsController', ->
+describe 'SettingsController', ->
+ beforeEach module 'News'
- beforeEach module 'News' \ No newline at end of file
+ beforeEach inject ($controller, @FeedBl, @FolderBl) =>
+ @scope = {}
+ @replace =
+ '$scope': @scope
+ @controller = $controller('SettingsController', @replace)
+
+
+ it 'should make FeedBl available', =>
+ expect(@scope.feedBl).toBe(@FeedBl)
+
+
+ it 'should show an error if the xml import failed', =>
+ xml = 'test'
+
+ @scope.import(xml)
+
+ expect(@scope.error).toBe(true)
+ \ No newline at end of file
diff --git a/js/tests/services/bl/folderblSpec.coffee b/js/tests/services/bl/folderblSpec.coffee
index 3ca761f7d..ba7e94de5 100644
--- a/js/tests/services/bl/folderblSpec.coffee
+++ b/js/tests/services/bl/folderblSpec.coffee
@@ -29,6 +29,7 @@ describe 'FolderBl', ->
angular.module('News').factory 'Persistence', =>
@persistence =
createFolder: ->
+ createFeed: ->
beforeEach inject (@FolderBl, @FolderModel, @FeedModel, @ShowAll,
@ActiveFeed, @FeedType, @_ExistsError) =>
@@ -220,3 +221,212 @@ describe 'FolderBl', ->
expect(@FolderModel.getById(3).opened).toBeTruthy()
expect(@persistence.openFolder).toHaveBeenCalledWith(3)
+
+ it 'should not import on empty opml', =>
+ @persistence.createFolder = jasmine.createSpy('create folder')
+ @persistence.createFeed = jasmine.createSpy('create feed')
+
+ xml = '<?xml version="1.0" ?>
+ <opml version="1.1">
+ <!--Generated by NewsBlur - www.newsblur.com-->
+ <head>
+ <title>
+ NewsBlur Feeds
+ </title>
+ <dateCreated>
+ 2013-03-14 16:44:01.356965
+ </dateCreated>
+ <dateModified>
+ 2013-03-14 16:44:01.356965
+ </dateModified>
+ </head>
+ <body>
+
+ </body>
+ </opml>'
+
+ @FolderBl.import(xml)
+
+ expect(@persistence.createFolder).not.toHaveBeenCalled()
+ expect(@persistence.createFeed).not.toHaveBeenCalled()
+
+
+ it 'should import a folder', =>
+ @persistence.createFolder = jasmine.createSpy('create folder')
+ @persistence.createFeed = jasmine.createSpy('create feed')
+
+ xml = '<?xml version="1.0" ?>
+ <opml version="1.1">
+ <!--Generated by NewsBlur - www.newsblur.com-->
+ <head>
+ <title>
+ NewsBlur Feeds
+ </title>
+ <dateCreated>
+ 2013-03-14 16:44:01.356965
+ </dateCreated>
+ <dateModified>
+ 2013-03-14 16:44:01.356965
+ </dateModified>
+ </head>
+ <body>
+ <outline text="Design" title="Design" />
+ </body>
+ </opml>'
+
+ @FolderBl.import(xml)
+
+ expect(@persistence.createFolder).toHaveBeenCalledWith('Design', 0,
+ jasmine.any(Function))
+ expect(@persistence.createFeed).not.toHaveBeenCalled()
+
+
+ it 'should import a feed', =>
+ @persistence.createFolder = jasmine.createSpy('create folder')
+ @persistence.createFeed = jasmine.createSpy('create feed')
+
+ xml = '<?xml version="1.0" ?>
+ <opml version="1.1">
+ <!--Generated by NewsBlur - www.newsblur.com-->
+ <head>
+ <title>
+ NewsBlur Feeds
+ </title>
+ <dateCreated>
+ 2013-03-14 16:44:01.356965
+ </dateCreated>
+ <dateModified>
+ 2013-03-14 16:44:01.356965
+ </dateModified>
+ </head>
+ <body>
+ <outline htmlUrl="http://worrydream.com/" text=
+ "&lt;div&gt;Bret Victor\'s website&lt;/div&gt;"
+ title="&lt;div&gt;Bret Victor\'s website&lt;/div&gt;"
+ type="rss"
+ version="RSS" xmlUrl="http://worrydream.com/feed.xml"/>
+ </body>
+ </opml>'
+
+ @FolderBl.import(xml)
+
+ expect(@persistence.createFolder).not.toHaveBeenCalled()
+ expect(@persistence.createFeed).toHaveBeenCalledWith(
+ 'http://worrydream.com/feed.xml', 0, jasmine.any(Function))
+
+
+ it 'should import nested folders', =>
+ @persistence.createFolder = jasmine.createSpy('create folder')
+ @persistence.createFolder.andCallFake (name, parentId, onSuccess) =>
+ data =
+ data:
+ folders: [
+ {id: 3}
+ ]
+ onSuccess(data)
+
+ @persistence.createFeed = jasmine.createSpy('create feed')
+
+ xml = '<?xml version="1.0" ?>
+ <opml version="1.1">
+ <!--Generated by NewsBlur - www.newsblur.com-->
+ <head>
+ <title>
+ NewsBlur Feeds
+ </title>
+ <dateCreated>
+ 2013-03-14 16:44:01.356965
+ </dateCreated>
+ <dateModified>
+ 2013-03-14 16:44:01.356965
+ </dateModified>
+ </head>
+ <body>
+ <outline text="Design" title="Design">
+ <outline htmlUrl="http://worrydream.com/" text=
+ "&lt;div&gt;Bret Victor\'s website&lt;/div&gt;"
+ title="&lt;div&gt;Bret Victor\'s website&lt;/div&gt;"
+ type="rss"
+ version="RSS" xmlUrl="http://worrydream.com/feed.xml"/>
+ </outline>
+ </body>
+ </opml>'
+
+ @FolderBl.import(xml)
+
+ expect(@persistence.createFolder).toHaveBeenCalledWith('Design', 0,
+ jasmine.any(Function))
+ expect(@persistence.createFeed).toHaveBeenCalledWith(
+ 'http://worrydream.com/feed.xml', 3, jasmine.any(Function))
+
+
+ it 'should use an existing folder when importing a folder', =>
+ @persistence.createFolder = jasmine.createSpy('create folder')
+ @persistence.createFeed = jasmine.createSpy('create feed')
+
+ @FolderModel.add({id: 2, name: 'design'})
+ xml = '<?xml version="1.0" ?>
+ <opml version="1.1">
+ <!--Generated by NewsBlur - www.newsblur.com-->
+ <head>
+ <title>
+ NewsBlur Feeds
+ </title>
+ <dateCreated>
+ 2013-03-14 16:44:01.356965
+ </dateCreated>
+ <dateModified>
+ 2013-03-14 16:44:01.356965
+ </dateModified>
+ </head>
+ <body>
+ <outline text="Design" title="Design">
+ <outline htmlUrl="http://worrydream.com/" text=
+ "&lt;div&gt;Bret Victor\'s website&lt;/div&gt;"
+ title="&lt;div&gt;Bret Victor\'s website&lt;/div&gt;"
+ type="rss"
+ version="RSS" xmlUrl="http://worrydream.com/feed.xml"/>
+ </outline>
+ </body>
+ </opml>'
+
+ @FolderBl.import(xml)
+
+ expect(@persistence.createFolder).not.toHaveBeenCalled()
+ expect(@persistence.createFeed).toHaveBeenCalledWith(
+ 'http://worrydream.com/feed.xml', 2, jasmine.any(Function))
+
+
+ it 'should not import a feed if it already exists', =>
+ @persistence.createFolder = jasmine.createSpy('create folder')
+ @persistence.createFeed = jasmine.createSpy('create feed')
+
+ @FeedModel.add({urlHash: hex_md5('http://worrydream.com/feed.xml')})
+
+ xml = '<?xml version="1.0" ?>
+ <opml version="1.1">
+ <!--Generated by NewsBlur - www.newsblur.com-->
+ <head>
+ <title>
+ NewsBlur Feeds
+ </title>
+ <dateCreated>
+ 2013-03-14 16:44:01.356965
+ </dateCreated>
+ <dateModified>
+ 2013-03-14 16:44:01.356965
+ </dateModified>
+ </head>
+ <body>
+ <outline htmlUrl="http://worrydream.com/" text=
+ "&lt;div&gt;Bret Victor\'s website&lt;/div&gt;"
+ title="&lt;div&gt;Bret Victor\'s website&lt;/div&gt;"
+ type="rss"
+ version="RSS" xmlUrl="http://worrydream.com/feed.xml"/>
+ </body>
+ </opml>'
+
+ @FolderBl.import(xml)
+
+ expect(@persistence.createFolder).not.toHaveBeenCalled()
+ expect(@persistence.createFeed).not.toHaveBeenCalled() \ No newline at end of file