feedItemsTest.js (4175B)
1 describe("Zotero.FeedItems", function () { 2 let feed; 3 before(function* () { 4 feed = yield createFeed({ name: 'foo', url: 'http://' + Zotero.randomString() + '.com' }); 5 }); 6 after(function() { 7 return clearFeeds(); 8 }); 9 10 describe("#getMarkedAsRead", function() { 11 var items = []; 12 var result; 13 before(function* () { 14 for (let i = 0; i < 4; i++) { 15 let f = yield createDataObject('feedItem', {libraryID: feed.libraryID, guid: 'http://www.example.com/' + i}); 16 items.push(f); 17 } 18 yield items[0].toggleRead(); 19 yield items[2].toggleRead(); 20 result = yield Zotero.FeedItems.getMarkedAsRead(feed.libraryID); 21 }); 22 it('should get all marked as read items', function() { 23 assert.include(result, items[0]); 24 assert.include(result, items[2]); 25 }); 26 it('should not include items that were not marked', function() { 27 assert.notInclude(result, items[1]); 28 assert.notInclude(result, items[3]); 29 }); 30 }); 31 32 describe("#markAsReadByGUID", function() { 33 var items = []; 34 var result; 35 before(function* () { 36 for (let i = 0; i < 4; i++) { 37 let f = yield createDataObject('feedItem', { 38 libraryID: feed.libraryID, 39 guid: 'http://' + Zotero.Utilities.randomString() + '.com/feed.rss' 40 }); 41 items.push(f); 42 } 43 yield Zotero.FeedItems.markAsReadByGUID([items[0].guid, items[2].guid]); 44 }); 45 it('should mark as read only specified guids', function() { 46 assert.isTrue(items[0].isRead); 47 assert.isTrue(items[2].isRead); 48 }); 49 it('should leave other items marked unread', function() { 50 assert.isFalse(items[1].isRead); 51 assert.isFalse(items[3].isRead); 52 }); 53 }); 54 55 describe("#getIDFromGUID()", function() { 56 it("should return false for non-existent GUID", function* () { 57 let id = yield Zotero.FeedItems.getIDFromGUID(Zotero.randomString()); 58 assert.isFalse(id); 59 }); 60 it("should return feed item id from GUID", function* () { 61 let feedItem = yield createDataObject('feedItem', { libraryID: feed.libraryID }); 62 yield feedItem.saveTx(); 63 64 let id2 = yield Zotero.FeedItems.getIDFromGUID(feedItem.guid); 65 assert.equal(id2, feedItem.id); 66 }); 67 }); 68 describe("#getAsyncByGUID()", function() { 69 it("should return feed item from GUID", function* () { 70 let guid = Zotero.randomString(); 71 let feedItem = yield createDataObject('feedItem', { guid, libraryID: feed.libraryID }); 72 yield feedItem.saveTx(); 73 74 let feedItem2 = yield Zotero.FeedItems.getAsyncByGUID(guid); 75 assert.equal(feedItem2.id, feedItem.id); 76 }); 77 it("should return false for non-existent GUID", function* () { 78 let feedItem = yield Zotero.FeedItems.getAsyncByGUID(Zotero.randomString()); 79 assert.isFalse(feedItem); 80 }); 81 }); 82 describe("#toggleReadByID()", function() { 83 var save, feed, items, ids; 84 85 before(function() { 86 save = sinon.spy(Zotero.FeedItem.prototype, 'save'); 87 }); 88 89 beforeEach(function* (){ 90 feed = yield createFeed(); 91 92 items = []; 93 for (let i = 0; i < 10; i++) { 94 let item = yield createDataObject('feedItem', { guid: Zotero.randomString(), libraryID: feed.id }); 95 item.isRead = true; 96 yield item.saveTx(); 97 items.push(item); 98 } 99 ids = Array.map(items, (i) => i.id); 100 }); 101 102 afterEach(function* () { 103 save.reset(); 104 105 yield clearFeeds(); 106 }); 107 108 after(function() { 109 save.restore(); 110 }); 111 112 it('should toggle all items read if at least one unread', function* () { 113 items[0].isRead = false; 114 yield items[0].saveTx(); 115 116 yield Zotero.FeedItems.toggleReadByID(ids); 117 118 for(let i = 0; i < 10; i++) { 119 assert.isTrue(save.thisValues[i].isRead, "#toggleRead called with true"); 120 } 121 }); 122 123 it('should toggle all items unread if all read', function* () { 124 yield Zotero.FeedItems.toggleReadByID(ids); 125 126 for(let i = 0; i < 10; i++) { 127 assert.isFalse(save.thisValues[i].isRead, "#toggleRead called with false"); 128 } 129 }); 130 131 it('should toggle all items unread if unread state specified', function* () { 132 items[0].isRead = false; 133 yield items[0].saveTx(); 134 135 yield Zotero.FeedItems.toggleReadByID(ids, false); 136 137 for(let i = 0; i < 10; i++) { 138 assert.isFalse(save.thisValues[i].isRead, "#toggleRead called with true"); 139 } 140 }); 141 }); 142 });