www

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

browserTest.js (6000B)


      1 "use strict";
      2 
      3 describe("Zotero_Browser", function () {
      4 	var win, collection;
      5 	
      6 	before(function* () {
      7 		this.timeout(60000);
      8 		yield Zotero.Translators.init();
      9 		
     10 		win = yield loadBrowserWindow();
     11 		collection = yield createDataObject('collection');
     12 	});
     13 	
     14 	after(function* () {
     15 		win.close();
     16 	});
     17 	
     18 	afterEach(function () {
     19 		Zotero.ProgressWindowSet.closeAll();
     20 	})
     21 	
     22 	var waitForTranslateIcon = Zotero.Promise.coroutine(function* () {
     23 		var button = win.document.getElementById('zotero-toolbar-save-button');
     24 		if (button.classList.contains('translate')) {
     25 			return;
     26 		}
     27 		Zotero.debug("Waiting for translator icon");
     28 		do {
     29 			yield Zotero.Promise.delay(50);
     30 		}
     31 		while (!button.classList.contains('translate'));
     32 	});
     33 	
     34 	
     35 	it("should save webpage to current collection", function* () {
     36 		var uri = OS.Path.join(getTestDataDirectory().path, "snapshot", "index.html");
     37 		var deferred = Zotero.Promise.defer();
     38 		win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
     39 		win.loadURI(uri);
     40 		yield deferred.promise;
     41 		
     42 		yield loadZoteroPane(win);
     43 		var collection = yield createDataObject('collection');
     44 		
     45 		var promise = waitForItemEvent('add');
     46 		yield win.Zotero_Browser.scrapeThisPage();
     47 		var ids = yield promise;
     48 		var items = Zotero.Items.get(ids);
     49 		assert.lengthOf(items, 1);
     50 		assert.equal(Zotero.ItemTypes.getName(items[0].itemTypeID), 'webpage');
     51 		assert.isTrue(collection.hasItem(items[0].id));
     52 	})
     53 	
     54 	it("should save journal article to current collection", function* () {
     55 		var uri = OS.Path.join(
     56 			getTestDataDirectory().path, "metadata", "journalArticle-single.html"
     57 		);
     58 		var deferred = Zotero.Promise.defer();
     59 		win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
     60 		win.loadURI(uri);
     61 		yield deferred.promise;
     62 		
     63 		yield loadZoteroPane(win);
     64 		var collection = yield createDataObject('collection');
     65 		
     66 		var promise = waitForItemEvent('add');
     67 		yield win.Zotero_Browser.scrapeThisPage();
     68 		var ids = yield promise;
     69 		var items = Zotero.Items.get(ids);
     70 		assert.lengthOf(items, 1);
     71 		assert.equal(Zotero.ItemTypes.getName(items[0].itemTypeID), 'journalArticle');
     72 		assert.isTrue(collection.hasItem(items[0].id));
     73 	})
     74 	
     75 	it("should save book with child note to current collection", function* () {
     76 		var uri = OS.Path.join(
     77 			getTestDataDirectory().path, "book_and_child_note.ris"
     78 		);
     79 		var deferred = Zotero.Promise.defer();
     80 		win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
     81 		win.loadURI(uri);
     82 		yield deferred.promise;
     83 		
     84 		// Detection runs twice for local files, so wait for the icon to actually appear
     85 		yield waitForTranslateIcon();
     86 		
     87 		yield loadZoteroPane(win);
     88 		var collection = yield createDataObject('collection');
     89 		
     90 		var promise = waitForItemEvent('add');
     91 		yield win.Zotero_Browser.scrapeThisPage();
     92 		
     93 		var ids = yield promise;
     94 		var items = Zotero.Items.get(ids);
     95 		assert.lengthOf(items, 2);
     96 		assert.equal(Zotero.ItemTypes.getName(items[0].itemTypeID), 'book');
     97 		assert.isTrue(collection.hasItem(items[0].id));
     98 		assert.equal(Zotero.ItemTypes.getName(items[1].itemTypeID), 'note');
     99 	});
    100 	
    101 	it("should save PDF to library root", function* () {
    102 		var uri = OS.Path.join(getTestDataDirectory().path, "test.pdf");
    103 		var deferred = Zotero.Promise.defer();
    104 		win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
    105 		win.loadURI(uri);
    106 		yield deferred.promise;
    107 		
    108 		yield loadZoteroPane(win);
    109 		
    110 		var promise = waitForItemEvent('add');
    111 		yield win.Zotero_Browser.scrapeThisPage();
    112 		var ids = yield promise;
    113 		var items = Zotero.Items.get(ids);
    114 		assert.lengthOf(items, 1);
    115 		assert.equal(Zotero.ItemTypes.getName(items[0].itemTypeID), 'attachment');
    116 		assert.equal(items[0].getField('title'), 'test.pdf');
    117 		assert.equal(items[0].attachmentContentType, 'application/pdf');
    118 		assert.equal(Zotero.Attachments.linkModeToName(items[0].attachmentLinkMode), 'imported_url');
    119 	});
    120 	
    121 	it("should save PDF to current collection", function* () {
    122 		var uri = OS.Path.join(getTestDataDirectory().path, "test.pdf");
    123 		var deferred = Zotero.Promise.defer();
    124 		win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
    125 		win.loadURI(uri);
    126 		yield deferred.promise;
    127 		
    128 		yield loadZoteroPane(win);
    129 		var collection = yield createDataObject('collection');
    130 		
    131 		var promise = waitForItemEvent('add');
    132 		yield win.Zotero_Browser.scrapeThisPage();
    133 		var ids = yield promise;
    134 		var items = Zotero.Items.get(ids);
    135 		assert.lengthOf(items, 1);
    136 		assert.equal(Zotero.ItemTypes.getName(items[0].itemTypeID), 'attachment');
    137 		assert.isTrue(collection.hasItem(items[0].id));
    138 	});
    139 	
    140 	it("shouldn't save webpage to My Publications", function* () {
    141 		var uri = OS.Path.join(getTestDataDirectory().path, "snapshot", "index.html");
    142 		var deferred = Zotero.Promise.defer();
    143 		win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
    144 		win.loadURI(uri);
    145 		yield deferred.promise;
    146 		
    147 		yield loadZoteroPane(win);
    148 		yield win.ZoteroPane.collectionsView.selectByID("P" + Zotero.Libraries.userLibraryID);
    149 		
    150 		var promise = waitForDialog(function (dialog) {
    151 			assert.include(
    152 				dialog.document.documentElement.textContent,
    153 				Zotero.getString('save.error.cannotAddToMyPublications')
    154 			);
    155 		});
    156 		yield win.Zotero_Browser.scrapeThisPage();
    157 		yield promise;
    158 	})
    159 	
    160 	it("shouldn't save journal article to My Publications", function* () {
    161 		var uri = OS.Path.join(
    162 			getTestDataDirectory().path, "metadata", "journalArticle-single.html"
    163 		);
    164 		var deferred = Zotero.Promise.defer();
    165 		win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
    166 		win.loadURI(uri);
    167 		yield deferred.promise;
    168 		
    169 		yield loadZoteroPane(win);
    170 		yield win.ZoteroPane.collectionsView.selectByID("P" + Zotero.Libraries.userLibraryID);
    171 		
    172 		var promise = waitForDialog(function (dialog) {
    173 			assert.include(
    174 				dialog.document.documentElement.textContent,
    175 				Zotero.getString('save.error.cannotAddToMyPublications')
    176 			);
    177 		}, false, 'chrome://zotero/content/progressWindow.xul');
    178 		yield win.Zotero_Browser.scrapeThisPage();
    179 		yield promise;
    180 	})
    181 })