summaryrefslogtreecommitdiffstats
path: root/js/tests/controllers/itemcontrollerSpec.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'js/tests/controllers/itemcontrollerSpec.coffee')
-rw-r--r--js/tests/controllers/itemcontrollerSpec.coffee119
1 files changed, 118 insertions, 1 deletions
diff --git a/js/tests/controllers/itemcontrollerSpec.coffee b/js/tests/controllers/itemcontrollerSpec.coffee
index 2316ee509..d700dc89f 100644
--- a/js/tests/controllers/itemcontrollerSpec.coffee
+++ b/js/tests/controllers/itemcontrollerSpec.coffee
@@ -27,13 +27,22 @@ describe 'ItemController', ->
beforeEach module 'News'
beforeEach module ($provide) =>
+ @imagePath = jasmine.createSpy('imagePath')
+ @utils =
+ imagePath: @imagePath
+ $provide.value 'Utils', @utils
+
@persistence =
getItems: ->
+ readItem: ->
$provide.value 'Persistence', @persistence
return
beforeEach inject ($controller, @ItemBusinessLayer, @FeedBusinessLayer,
- $rootScope) =>
+ $rootScope, @FeedLoading, @AutoPageLoading, @FeedModel, @ItemModel,
+ @ActiveFeed, @FeedType) =>
+
+ @ActiveFeed.handle({type: @FeedType.Folder, id: 3})
@scope = $rootScope.$new()
replace =
$scope: @scope
@@ -48,3 +57,111 @@ describe 'ItemController', ->
expect(@scope.feedBusinessLayer).toBe(@FeedBusinessLayer)
+ it 'should make feedloading available', =>
+ expect(@scope.isLoading()).toBe(false)
+ @FeedLoading.increase()
+ expect(@scope.isLoading()).toBe(true)
+
+
+ it 'should make autopagin available', =>
+ expect(@scope.isAutoPaging()).toBe(false)
+ @AutoPageLoading.increase()
+ expect(@scope.isAutoPaging()).toBe(true)
+
+
+ it 'should return the feedtitle', =>
+ item = {id: 3, faviconLink: null, url: 'hi', title: 'heheh'}
+ @FeedModel.add(item)
+
+ expect(@scope.getFeedTitle(3)).toBe(item.title)
+
+
+ it 'should return no value if feedtitle is not found', =>
+ expect(@scope.getFeedTitle(3)).toBe('')
+
+
+ it 'should return no value if relative date gets no value', =>
+ expect(@scope.getRelativeDate()).toBe('')
+
+
+ it 'should set an item read on readItem broadcast', =>
+ item1 = {id: 4, guidHash: 'abc', feedId: 3}
+ @ItemModel.add(item1)
+ item1.setUnread()
+
+ expect(item1.isRead()).toBe(false)
+ @scope.$broadcast 'readItem', 4
+
+ expect(item1.isRead()).toBe(true)
+
+
+ it 'should not autopage if there are no items', =>
+ @persistence.getItems = jasmine.createSpy('getItems')
+ @scope.$broadcast 'autoPage'
+ expect(@persistence.getItems).not.toHaveBeenCalled()
+
+
+ it 'should autoPage with the lowest Item Id', =>
+ @persistence.getItems = jasmine.createSpy('getItems')
+ item1 = {id: 4, guidHash: 'abc', feedId: 3}
+ @ItemModel.add(item1)
+
+ item1 = {id: 3, guidHash: 'abcd', feedId: 3}
+ @ItemModel.add(item1)
+
+ item1 = {id: 6, guidHash: 'abce', feedId: 1}
+ @ItemModel.add(item1)
+
+ @scope.$broadcast 'autoPage'
+ expect(@persistence.getItems).toHaveBeenCalledWith(
+ @FeedType.Folder, 3, 3, jasmine.any(Function)
+ )
+
+
+ it 'should not prevent autopaging if there are no items', =>
+ @scope.$broadcast 'autoPage'
+ @persistence.getItems = jasmine.createSpy('getItems')
+
+ item1 = {id: 3, guidHash: 'abcd', feedId: 3}
+ @ItemModel.add(item1)
+
+ @scope.$broadcast 'autoPage'
+ expect(@persistence.getItems).toHaveBeenCalledWith(
+ @FeedType.Folder, 3, 3, jasmine.any(Function)
+ )
+
+
+ it 'should not send multiple autopage requests at once', =>
+ @persistence.getItems = jasmine.createSpy('getItems')
+ item1 = {id: 3, guidHash: 'abcd', feedId: 3}
+ @ItemModel.add(item1)
+
+ @scope.$broadcast 'autoPage'
+
+ item1 = {id: 2, guidHash: 'abcd', feedId: 3}
+ @ItemModel.add(item1)
+
+ @scope.$broadcast 'autoPage'
+
+ expect(@persistence.getItems).not.toHaveBeenCalledWith(
+ @FeedType.Folder, 2, 3, jasmine.any(Function)
+ )
+
+
+ it 'should allow another autopaging request if the last one finished', =>
+ @persistence.getItems = jasmine.createSpy('getItems')
+ @persistence.getItems.andCallFake (type, id, offset, onSuccess) ->
+ onSuccess()
+
+ item1 = {id: 3, guidHash: 'abcd', feedId: 3}
+ @ItemModel.add(item1)
+
+ @scope.$broadcast 'autoPage'
+
+ item1 = {id: 2, guidHash: 'abcd', feedId: 3}
+ @ItemModel.add(item1)
+
+ @scope.$broadcast 'autoPage'
+
+ expect(@persistence.getItems.callCount).toBe(2)
+