www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

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 });