zotero/test/tests/fileInterfaceTest.js
Dan Stillman 15a9fd5494 Make various collection methods synchronous
- Collection::getDescendents()
- Collections.getByLibrary()
- Collections.getByParent()

And various things that depend on those. (View with -w.)
2016-03-25 18:44:24 -04:00

76 lines
No EOL
2.9 KiB
JavaScript

describe("Zotero_File_Interface", function() {
let win;
before(function* () {
win = yield loadZoteroPane();
yield OS.File.copy(OS.Path.join(getTestDataDirectory().path, "Test Import Translator.js"),
OS.Path.join(Zotero.getTranslatorsDirectory().path, "Test Import Translator.js"));
yield Zotero.Translators.reinit();
});
after(function () {
win.close();
});
it('should import a file into a collection', function* () {
this.timeout(10000);
let testFile = getTestDataDirectory();
testFile.append("allTypesAndFields.js");
yield win.Zotero_File_Interface.importFile(testFile);
let importedCollection = Zotero.Collections.getByLibrary(
Zotero.Libraries.userLibraryID
).filter(x => x.name == 'allTypesAndFields');
assert.equal(importedCollection.length, 1);
let childItems = importedCollection[0].getChildItems();
let savedItems = {};
for (let i=0; i<childItems.length; i++) {
let savedItem = childItems[i].toJSON();
delete savedItem.dateAdded;
delete savedItem.dateModified;
delete savedItem.key;
delete savedItem.collections;
savedItems[Zotero.ItemTypes.getName(childItems[i].itemTypeID)] = savedItem;
}
let trueItems = loadSampleData('itemJSON');
for (let itemType in trueItems) {
let trueItem = trueItems[itemType];
delete trueItem.dateAdded;
delete trueItem.dateModified;
delete trueItem.key;
delete trueItem.collections;
}
assert.deepEqual(savedItems, trueItems, "saved items match inputs")
});
it('should import an item and snapshot from Zotero RDF', function* () {
var tmpDir = yield getTempDirectory();
var rdfFile = OS.Path.join(tmpDir, 'test.rdf');
yield OS.File.copy(OS.Path.join(getTestDataDirectory().path, 'book_and_snapshot.rdf'), rdfFile);
yield OS.File.makeDir(OS.Path.join(tmpDir, 'files'));
yield OS.File.makeDir(OS.Path.join(tmpDir, 'files', 2));
yield OS.File.copy(
OS.Path.join(getTestDataDirectory().path, 'test.html'),
OS.Path.join(tmpDir, 'files', 2, 'test.html')
);
var promise = waitForItemEvent('add');
Zotero.debug(yield Zotero.File.getContentsAsync(rdfFile));
yield win.Zotero_File_Interface.importFile(Zotero.File.pathToFile(rdfFile))
var ids = yield promise;
assert.lengthOf(ids, 1);
// Check book
var item = Zotero.Items.get(ids[0]);
assert.equal(item.itemTypeID, Zotero.ItemTypes.getID('book'));
// Check attachment
var ids = item.getAttachments();
assert.lengthOf(ids, 1);
var attachment = Zotero.Items.get(ids[0]);
assert.equal(attachment.attachmentCharset, 'utf-8');
// Check indexing
var matches = yield Zotero.Fulltext.findTextInItems([attachment.id], 'test');
assert.lengthOf(matches, 1);
assert.propertyVal(matches[0], 'id', attachment.id);
});
});