2016-06-11 00:35:14 +00:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
describe("Note Editor", function () {
|
|
|
|
var win, zp;
|
|
|
|
|
|
|
|
before(function* () {
|
|
|
|
win = yield loadZoteroPane();
|
|
|
|
zp = win.ZoteroPane;
|
|
|
|
});
|
|
|
|
|
|
|
|
after(function () {
|
|
|
|
win.close();
|
|
|
|
});
|
|
|
|
|
2017-04-01 18:29:45 +00:00
|
|
|
var waitForNoteEditor = Zotero.Promise.coroutine(function* (item) {
|
|
|
|
var noteEditor = win.document.getElementById('zotero-note-editor');
|
|
|
|
while (noteEditor.item != item) {
|
|
|
|
Zotero.debug("Waiting for note editor");
|
|
|
|
yield Zotero.Promise.delay(50);
|
|
|
|
noteEditor = win.document.getElementById('zotero-note-editor');
|
|
|
|
}
|
|
|
|
return new Zotero.Promise((resolve, reject) => {
|
2021-01-13 12:01:44 +00:00
|
|
|
noteEditor.onInit(() => resolve(noteEditor));
|
2017-04-01 18:29:45 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
2016-06-11 00:35:14 +00:00
|
|
|
describe("Tags box", function () {
|
2023-04-28 01:15:56 +00:00
|
|
|
it("should open new row for editing if no tags", async function () {
|
|
|
|
var note = await createDataObject('item', { itemType: 'note', note: "A" });
|
|
|
|
var noteEditor = await waitForNoteEditor(note);
|
2016-06-11 00:35:14 +00:00
|
|
|
var linksBox = noteEditor._id('links-box');
|
2023-04-28 01:15:56 +00:00
|
|
|
linksBox._tagsClickHandler();
|
|
|
|
await Zotero.Promise.delay(100);
|
|
|
|
var tagsBox = linksBox._id('tags-popup').firstChild;
|
|
|
|
var tagRows = tagsBox._id('rows');
|
|
|
|
|
2016-06-11 00:35:14 +00:00
|
|
|
assert.equal(tagRows.childNodes.length, 1);
|
2016-11-29 09:26:58 +00:00
|
|
|
|
2023-04-28 01:15:56 +00:00
|
|
|
linksBox._id('tags-popup').hidePopup();
|
2016-06-11 00:35:14 +00:00
|
|
|
});
|
|
|
|
|
2023-04-28 01:15:56 +00:00
|
|
|
it("should only open one new row for editing", async function () {
|
|
|
|
var note = await createDataObject('item', { itemType: 'note', note: "B" });
|
|
|
|
var noteEditor = await waitForNoteEditor(note);
|
2016-06-11 00:35:14 +00:00
|
|
|
var linksBox = noteEditor._id('links-box');
|
2023-04-28 01:15:56 +00:00
|
|
|
linksBox._tagsClickHandler();
|
|
|
|
await Zotero.Promise.delay(100);
|
2016-06-11 00:35:14 +00:00
|
|
|
// Close and reopen
|
2023-04-28 01:15:56 +00:00
|
|
|
linksBox._id('tags-popup').hidePopup();
|
|
|
|
linksBox._tagsClickHandler();
|
|
|
|
await Zotero.Promise.delay(100);
|
2016-06-11 00:35:14 +00:00
|
|
|
|
|
|
|
// Should still be only one empty row
|
2023-04-28 01:15:56 +00:00
|
|
|
var tagsBox = linksBox._id('tags-popup').firstChild;
|
|
|
|
var tagRows = tagsBox._id('rows');
|
|
|
|
|
2016-06-11 00:35:14 +00:00
|
|
|
assert.equal(tagRows.childNodes.length, 1);
|
2016-11-29 09:26:58 +00:00
|
|
|
|
2023-04-28 01:15:56 +00:00
|
|
|
linksBox._id('tags-popup').hidePopup();
|
2016-06-11 00:35:14 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
it("should show tags in alphabetical order", function* () {
|
|
|
|
var note = new Zotero.Item('note');
|
2017-04-01 18:29:45 +00:00
|
|
|
note.setNote('C');
|
2016-06-11 00:35:14 +00:00
|
|
|
note.addTag('B');
|
|
|
|
yield note.saveTx();
|
|
|
|
note.addTag('A');
|
|
|
|
note.addTag('C');
|
|
|
|
yield note.saveTx();
|
|
|
|
|
2017-04-01 18:29:45 +00:00
|
|
|
var noteEditor = yield waitForNoteEditor(note);
|
2016-06-11 00:35:14 +00:00
|
|
|
var linksBox = noteEditor._id('links-box');
|
2023-04-28 01:15:56 +00:00
|
|
|
assert.equal(linksBox._id('tags-value').textContent, "A, B, C");
|
2016-06-11 00:35:14 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|