diff options
Diffstat (limited to 'js/build/tests/services/models')
-rw-r--r-- | js/build/tests/services/models/feedmodelSpec.js | 175 | ||||
-rw-r--r-- | js/build/tests/services/models/foldermodelSpec.js | 140 | ||||
-rw-r--r-- | js/build/tests/services/models/itemmodelSpec.js | 160 |
3 files changed, 475 insertions, 0 deletions
diff --git a/js/build/tests/services/models/feedmodelSpec.js b/js/build/tests/services/models/feedmodelSpec.js new file mode 100644 index 000000000..a910e4aaf --- /dev/null +++ b/js/build/tests/services/models/feedmodelSpec.js @@ -0,0 +1,175 @@ +// Generated by CoffeeScript 1.6.3 +/* + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt dev@bernhard-posselt.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + + +(function() { + describe('FeedModel', function() { + var _this = this; + beforeEach(module('News')); + beforeEach(module(function($provide) { + _this.imagePath = jasmine.createSpy('imagePath'); + _this.utils = { + imagePath: _this.imagePath + }; + $provide.value('Utils', _this.utils); + })); + beforeEach(inject(function(FeedModel, _Model) { + _this.FeedModel = FeedModel; + _this._Model = _Model; + })); + it('should extend _Model', function() { + return expect(_this.FeedModel instanceof _this._Model).toBeTruthy(); + }); + it('should bind an imagepath to the item if the url is empty', function() { + var item; + item = { + id: 3, + faviconLink: null, + url: 'hi' + }; + _this.FeedModel.add(item); + return expect(_this.utils.imagePath).toHaveBeenCalledWith('news', 'rss.svg'); + }); + it('should add feeds without id', function() { + var item, item2; + item = { + faviconLink: null, + url: 'hi' + }; + _this.FeedModel.add(item); + item2 = { + faviconLink: null, + url: 'his' + }; + _this.FeedModel.add(item2); + expect(_this.FeedModel.getByUrl('hi')).toBe(item); + return expect(_this.FeedModel.size()).toBe(2); + }); + it('should clear the url cache', function() { + var item; + item = { + faviconLink: null, + url: 'hi' + }; + _this.FeedModel.add(item); + _this.FeedModel.clear(); + expect(_this.FeedModel.getByUrl('hi')).toBe(void 0); + return expect(_this.FeedModel.size()).toBe(0); + }); + it('should delete items from the fodername cache', function() { + var item; + item = { + id: 3, + faviconLink: null, + url: 'hi' + }; + _this.FeedModel.add(item); + expect(_this.FeedModel.size()).toBe(1); + _this.FeedModel.removeById(3); + expect(_this.FeedModel.getByUrl('hi')).toBe(void 0); + return expect(_this.FeedModel.size()).toBe(0); + }); + it('should update the id if an update comes in with an id', function() { + var item, item2; + item = { + faviconLink: null, + url: 'hi', + test: 'heheh' + }; + _this.FeedModel.add(item); + item2 = { + id: 3, + faviconLink: null, + url: 'hi', + test: 'hoho' + }; + _this.FeedModel.add(item2); + expect(_this.FeedModel.getByUrl('hi').id).toBe(3); + expect(_this.FeedModel.getByUrl('hi').test).toBe('hoho'); + expect(_this.FeedModel.getById(3).id).toBe(3); + expect(_this.FeedModel.getById(3).test).toBe('hoho'); + return expect(_this.FeedModel.size()).toBe(1); + }); + it('should update normally', function() { + var item, item2; + item = { + id: 3, + faviconLink: null, + url: 'hi', + test: 'heheh' + }; + _this.FeedModel.add(item); + item2 = { + id: 3, + faviconLink: null, + url: 'his', + test: 'hoho' + }; + _this.FeedModel.add(item2); + expect(_this.FeedModel.getByUrl('hi')).toBe(void 0); + expect(_this.FeedModel.getByUrl('his').id).toBe(3); + expect(_this.FeedModel.getByUrl('his').test).toBe('hoho'); + expect(_this.FeedModel.getById(3).test).toBe('hoho'); + return expect(_this.FeedModel.size()).toBe(1); + }); + it('should clear invalidate the query cache on adding folder with name', function() { + var item, item2; + item = { + faviconLink: null, + url: 'hi', + test: 'heheh', + folderId: 0 + }; + expect(_this.FeedModel.getAllOfFolder(0).length).toBe(0); + _this.FeedModel.add(item, false); + expect(_this.FeedModel.getAllOfFolder(0).length).toBe(0); + item2 = { + faviconLink: null, + url: 'his', + test: 'heheh', + folderId: 0 + }; + _this.FeedModel.add(item2); + return expect(_this.FeedModel.getAllOfFolder(0).length).toBe(2); + }); + return it('should only update feeds that contain only an id but no url', function() { + var item, item2; + item = { + id: 3, + unreadCount: 232 + }; + _this.FeedModel.add(item); + expect(_this.FeedModel.size()).toBe(0); + item2 = { + id: 3, + unreadCount: 2, + faviconLink: null, + url: 'his' + }; + _this.FeedModel.add(item2); + _this.FeedModel.add(item); + expect(_this.FeedModel.size()).toBe(1); + return expect(_this.FeedModel.getById(3).unreadCount).toBe(232); + }); + }); + +}).call(this); diff --git a/js/build/tests/services/models/foldermodelSpec.js b/js/build/tests/services/models/foldermodelSpec.js new file mode 100644 index 000000000..adcd4db47 --- /dev/null +++ b/js/build/tests/services/models/foldermodelSpec.js @@ -0,0 +1,140 @@ +// Generated by CoffeeScript 1.6.3 +/* + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt dev@bernhard-posselt.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + + +(function() { + describe('FolderModel', function() { + var _this = this; + beforeEach(module('News')); + beforeEach(inject(function(FolderModel, _Model, _EqualQuery) { + _this.FolderModel = FolderModel; + _this._Model = _Model; + _this._EqualQuery = _EqualQuery; + })); + it('should extend model', function() { + return expect(_this.FolderModel instanceof _this._Model).toBeTruthy(); + }); + it('should add folders without id but name if they dont exist yet', function() { + var item, item1; + item = { + name: 'Hi' + }; + _this.FolderModel.add(item); + item1 = { + name: 'His' + }; + _this.FolderModel.add(item1); + expect(_this.FolderModel.getByName('hi')).toBe(item); + return expect(_this.FolderModel.size()).toBe(2); + }); + it('should clear the fodername cache', function() { + var item; + item = { + name: 'Hi' + }; + _this.FolderModel.add(item); + _this.FolderModel.clear(); + expect(_this.FolderModel.getByName('hi')).toBe(void 0); + return expect(_this.FolderModel.size()).toBe(0); + }); + it('should delete items from the fodername cache', function() { + var item; + item = { + id: 3, + name: 'Hi' + }; + _this.FolderModel.add(item); + _this.FolderModel.removeById(3); + expect(_this.FolderModel.getByName('hi')).toBe(void 0); + return expect(_this.FolderModel.size()).toBe(0); + }); + it('should update by foldername', function() { + var item, item2; + item = { + name: 'Hi' + }; + _this.FolderModel.add(item); + item2 = { + name: 'hi', + test: 'hoho' + }; + _this.FolderModel.add(item2); + expect(_this.FolderModel.getByName('hi').test).toBe('hoho'); + return expect(_this.FolderModel.size()).toBe(1); + }); + it('should update the id if an update comes in with an id', function() { + var item, item2; + item = { + name: 'Tony' + }; + _this.FolderModel.add(item); + item2 = { + id: 3, + name: 'tony', + test: 'hoho' + }; + _this.FolderModel.add(item2); + expect(_this.FolderModel.getByName('Tony').id).toBe(3); + expect(_this.FolderModel.getByName('Tony').test).toBe('hoho'); + expect(_this.FolderModel.getById(3).id).toBe(3); + expect(_this.FolderModel.getById(3).test).toBe('hoho'); + return expect(_this.FolderModel.size()).toBe(1); + }); + it('should update normally', function() { + var item, item2; + item = { + id: 3, + name: 'His' + }; + _this.FolderModel.add(item); + item2 = { + id: 3, + name: 'hobo', + test: 'hoho' + }; + _this.FolderModel.add(item2); + expect(_this.FolderModel.getByName('His')).toBe(void 0); + expect(_this.FolderModel.getByName('Hobo').id).toBe(3); + expect(_this.FolderModel.getByName('Hobo').test).toBe('hoho'); + expect(_this.FolderModel.getById(3).test).toBe('hoho'); + return expect(_this.FolderModel.size()).toBe(1); + }); + return it('should clear invalidate the query cache on adding folder with name', function() { + var item, item2, query; + item = { + name: 'name1', + test: 'hi' + }; + query = new _this._EqualQuery('test', 'hi'); + expect(_this.FolderModel.get(query).length).toBe(0); + _this.FolderModel.add(item, false); + expect(_this.FolderModel.get(query).length).toBe(0); + item2 = { + name: 'name', + test: 'hi' + }; + _this.FolderModel.add(item2); + return expect(_this.FolderModel.get(query).length).toBe(2); + }); + }); + +}).call(this); diff --git a/js/build/tests/services/models/itemmodelSpec.js b/js/build/tests/services/models/itemmodelSpec.js new file mode 100644 index 000000000..929163689 --- /dev/null +++ b/js/build/tests/services/models/itemmodelSpec.js @@ -0,0 +1,160 @@ +// Generated by CoffeeScript 1.6.3 +/* + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt dev@bernhard-posselt.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + + +(function() { + describe('ItemModel', function() { + var _this = this; + beforeEach(module('News')); + beforeEach(inject(function(ItemModel, _Model) { + _this.ItemModel = ItemModel; + _this._Model = _Model; + })); + it('should extend model', function() { + return expect(_this.ItemModel instanceof _this._Model).toBeTruthy(); + }); + it('should also update items with the same feed id and guidhash', function() { + var item1, item2, item3, item4; + item1 = { + id: 4, + guidHash: 'abc', + feedId: 3 + }; + _this.ItemModel.add(item1); + expect(_this.ItemModel.getById(4)).toBe(item1); + item2 = { + id: 4, + guidHash: 'abc', + feedId: 4 + }; + _this.ItemModel.add(item2); + expect(_this.ItemModel.size()).toBe(1); + item3 = { + id: 5, + guidHash: 'abc', + feedId: 6 + }; + _this.ItemModel.add(item3); + expect(_this.ItemModel.size()).toBe(2); + item4 = { + id: 3, + guidHash: 'abc', + feedId: 6 + }; + _this.ItemModel.add(item4); + expect(_this.ItemModel.getById(3).guidHash).toBe(item4.guidHash); + expect(_this.ItemModel.getById(3).feedId).toBe(item4.feedId); + expect(_this.ItemModel.getById(3).id).toBe(item4.id); + expect(_this.ItemModel.getById(5)).toBe(void 0); + return expect(_this.ItemModel.size()).toBe(2); + }); + it('should also remove the feed from the url cache when its removed', function() { + var item; + item = { + id: 4, + guidHash: 'abc', + feedId: 3 + }; + _this.ItemModel.add(item); + expect(_this.ItemModel.getById(4)).toBe(item); + expect(_this.ItemModel.getByGuidHashAndFeedId('abc', 3)).toBe(item); + _this.ItemModel.removeById(4); + return expect(_this.ItemModel.getByGuidHashAndFeedId('abc', 3)).toBe(void 0); + }); + it('should bind the correct isRead() method to the item', function() { + var item; + item = { + id: 3, + guidHash: 'abc', + feedId: 6, + status: 16 + }; + _this.ItemModel.add(item); + item.setRead(); + return expect(_this.ItemModel.getById(3).isRead()).toBe(true); + }); + it('should bind the correct set unread method to the item', function() { + var item; + item = { + id: 3, + guidHash: 'abc', + feedId: 6, + status: 16 + }; + _this.ItemModel.add(item); + item.setUnread(); + return expect(_this.ItemModel.getById(3).isRead()).toBe(false); + }); + it('should bind the correct set starred method to the item', function() { + var item; + item = { + id: 3, + guidHash: 'abc', + feedId: 6, + status: 16 + }; + _this.ItemModel.add(item); + item.setStarred(); + return expect(_this.ItemModel.getById(3).isStarred()).toBe(true); + }); + it('should bind the correct set unstarred method to the item', function() { + var item; + item = { + id: 3, + guidHash: 'abc', + feedId: 6, + status: 16 + }; + _this.ItemModel.add(item); + item.setUnstarred(); + return expect(_this.ItemModel.getById(3).isStarred()).toBe(false); + }); + return it('should return the lowest id', function() { + _this.ItemModel.add({ + id: 2, + guidHash: 'abc', + feedId: 2, + status: 16 + }); + _this.ItemModel.add({ + id: 3, + guidHash: 'abcd', + feedId: 2, + status: 16 + }); + _this.ItemModel.add({ + id: 1, + guidHash: 'abce', + feedId: 2, + status: 16 + }); + _this.ItemModel.add({ + id: 6, + guidHash: 'abcf', + feedId: 2, + status: 16 + }); + return expect(_this.ItemModel.getLowestId()).toBe(1); + }); + }); + +}).call(this); |