www

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

duplicatesTest.js (2756B)


      1 "use strict";
      2 
      3 describe("Duplicate Items", function () {
      4 	var win, zp, cv;
      5 	
      6 	before(function* () {
      7 		yield resetDB({
      8 			thisArg: this,
      9 			skipBundledFiles: true
     10 		});
     11 		
     12 		Zotero.Prefs.clear('duplicateLibraries');
     13 		win = yield loadZoteroPane();
     14 		zp = win.ZoteroPane;
     15 		cv = zp.collectionsView;
     16 	});
     17 	beforeEach(function* () {
     18 		return selectLibrary(win);
     19 	})
     20 	after(function () {
     21 		win.close();
     22 	});
     23 	
     24 	describe("Merging", function () {
     25 		it("should merge two items in duplicates view", function* () {
     26 			var item1 = yield createDataObject('item', { setTitle: true });
     27 			var item2 = item1.clone();
     28 			yield item2.saveTx();
     29 			var uri2 = Zotero.URI.getItemURI(item2);
     30 			
     31 			var userLibraryID = Zotero.Libraries.userLibraryID;
     32 			
     33 			var selected = yield cv.selectByID('D' + userLibraryID);
     34 			assert.ok(selected);
     35 			yield waitForItemsLoad(win);
     36 			
     37 			// Select the first item, which should select both
     38 			var iv = zp.itemsView;
     39 			var row = iv.getRowIndexByID(item1.id);
     40 			assert.isNumber(row);
     41 			clickOnItemsRow(iv, row);
     42 			assert.equal(iv.selection.count, 2);
     43 			
     44 			// Click merge button
     45 			var button = win.document.getElementById('zotero-duplicates-merge-button');
     46 			button.click();
     47 			
     48 			yield waitForNotifierEvent('refresh', 'trash');
     49 			
     50 			// Items should be gone
     51 			assert.isFalse(iv.getRowIndexByID(item1.id));
     52 			assert.isFalse(iv.getRowIndexByID(item2.id));
     53 			assert.isTrue(item2.deleted);
     54 			var rels = item1.getRelations();
     55 			var pred = Zotero.Relations.replacedItemPredicate;
     56 			assert.property(rels, pred);
     57 			assert.equal(rels[pred], uri2);
     58 		});
     59 		
     60 		it("should combine collections from all items", function* () {
     61 			var collection1 = yield createDataObject('collection');
     62 			var collection2 = yield createDataObject('collection');
     63 			
     64 			var item1 = yield createDataObject('item', { setTitle: true, collections: [collection1.id] });
     65 			var item2 = item1.clone();
     66 			item2.setCollections([collection2.id]);
     67 			yield item2.saveTx();
     68 			
     69 			var userLibraryID = Zotero.Libraries.userLibraryID;
     70 			
     71 			var selected = yield cv.selectByID('D' + userLibraryID);
     72 			assert.ok(selected);
     73 			yield waitForItemsLoad(win);
     74 			
     75 			// Select the first item, which should select both
     76 			var iv = zp.itemsView;
     77 			var row = iv.getRowIndexByID(item1.id);
     78 			clickOnItemsRow(iv, row);
     79 			
     80 			// Click merge button
     81 			var button = win.document.getElementById('zotero-duplicates-merge-button');
     82 			button.click();
     83 			
     84 			yield waitForNotifierEvent('refresh', 'trash');
     85 			
     86 			// Items should be gone
     87 			assert.isFalse(iv.getRowIndexByID(item1.id));
     88 			assert.isFalse(iv.getRowIndexByID(item2.id));
     89 			assert.isTrue(item2.deleted);
     90 			assert.isTrue(collection1.hasItem(item1.id));
     91 			assert.isTrue(collection2.hasItem(item1.id));
     92 		});
     93 	});
     94 });