Beginning of tests for zotero://select
This commit is contained in:
parent
d0002736cd
commit
fda002ec34
2 changed files with 47 additions and 1 deletions
|
@ -36,7 +36,7 @@ Zotero.API = {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {(Zotero.Collection|Zotero.Item)[]}
|
* @return {(Zotero.Collection|Zotero.Search|Zotero.Item)[]}
|
||||||
*/
|
*/
|
||||||
getResultsFromParams: Zotero.Promise.coroutine(function* (params) {
|
getResultsFromParams: Zotero.Promise.coroutine(function* (params) {
|
||||||
if (!params.objectType) {
|
if (!params.objectType) {
|
||||||
|
|
46
test/tests/protocolHandlerTest.js
Normal file
46
test/tests/protocolHandlerTest.js
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
function runHandler(url) {
|
||||||
|
var [_, extension] = url.match(/^zotero:\/\/([a-z]+)\//);
|
||||||
|
var handler = Services.io.getProtocolHandler('zotero').wrappedJSObject;
|
||||||
|
var uri = Services.io.newURI(url, null, null);
|
||||||
|
return handler._extensions['zotero://' + extension].newChannel(uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("Protocol Handler", function () {
|
||||||
|
var win;
|
||||||
|
var zp;
|
||||||
|
|
||||||
|
before(async function () {
|
||||||
|
win = await loadZoteroPane();
|
||||||
|
zp = win.ZoteroPane;
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("zotero://select", function () {
|
||||||
|
async function waitForItemSelect(items) {
|
||||||
|
if (items instanceof Zotero.Item) {
|
||||||
|
items = [items];
|
||||||
|
}
|
||||||
|
while (true) {
|
||||||
|
let selected = zp.getSelectedItems();
|
||||||
|
if (selected.every(item => items.includes(item))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await Zotero.Promise.delay(20);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
it("should select an item", async function () {
|
||||||
|
var item1 = await createDataObject('item', { title: 'A' });
|
||||||
|
var item2 = await createDataObject('item', { title: 'B' });
|
||||||
|
runHandler(`zotero://select/library/items/${item1.key}`);
|
||||||
|
await waitForItemSelect(item1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should select multiple items", async function () {
|
||||||
|
var item1 = await createDataObject('item', { title: 'A' });
|
||||||
|
var item2 = await createDataObject('item', { title: 'B' });
|
||||||
|
var item3 = await createDataObject('item', { title: 'C' });
|
||||||
|
runHandler(`zotero://select/library/items?itemKey=${item1.key},${item2.key}`);
|
||||||
|
await waitForItemSelect([item1, item2]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in a new issue