diff --git a/test/tests/noteeditorTest.js b/test/tests/noteeditorTest.js index 1015b01a7..614579336 100644 --- a/test/tests/noteeditorTest.js +++ b/test/tests/noteeditorTest.js @@ -8,20 +8,27 @@ describe("Note Editor", function () { zp = win.ZoteroPane; }); - beforeEach(function* () { - // Avoid "this._editor is undefined" error and incorrect note selection between tests, - // though there's definitely a better way to fix this - yield Zotero.Promise.delay(150); - }); - after(function () { win.close(); }); + 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) => { + noteEditor.noteField.onInit(() => resolve(noteEditor)); + }); + }); + + describe("Tags box", function () { it("should open new row for editing if no tags", function* () { - var note = yield createDataObject('item', { itemType: 'note' }); - var noteEditor = win.document.getElementById('zotero-note-editor'); + var note = yield createDataObject('item', { itemType: 'note', note: "A" }); + var noteEditor = yield waitForNoteEditor(note); var linksBox = noteEditor._id('links-box'); linksBox.tagsClick(); var tagsBox = linksBox.id('tagsPopup').firstChild; @@ -32,8 +39,8 @@ describe("Note Editor", function () { }); it("should only open one new row for editing", function* () { - var note = yield createDataObject('item', { itemType: 'note' }); - var noteEditor = win.document.getElementById('zotero-note-editor'); + var note = yield createDataObject('item', { itemType: 'note', note: "B" }); + var noteEditor = yield waitForNoteEditor(note); var linksBox = noteEditor._id('links-box'); linksBox.tagsClick(); // Close and reopen @@ -50,13 +57,14 @@ describe("Note Editor", function () { it("should show tags in alphabetical order", function* () { var note = new Zotero.Item('note'); + note.setNote('C'); note.addTag('B'); yield note.saveTx(); note.addTag('A'); note.addTag('C'); yield note.saveTx(); - var noteEditor = win.document.getElementById('zotero-note-editor'); + var noteEditor = yield waitForNoteEditor(note); var linksBox = noteEditor._id('links-box'); assert.equal(linksBox.id('tags').summary, "A, B, C"); });