mirror of
https://github.com/zotero/zotero.git
synced 2026-08-28 05:25:31 +00:00
fix: #5704 Distinguish note editor CE and instance in var name Add note editor CE _initPromise Await CE init in various places Add tests for note tab
97 lines
3 KiB
JavaScript
97 lines
3 KiB
JavaScript
describe("Note Tab", function () {
|
|
var win, doc, ZoteroPane, Zotero_Tabs, ZoteroContextPane;
|
|
|
|
before(async function () {
|
|
win = await loadZoteroPane();
|
|
doc = win.document;
|
|
ZoteroPane = win.ZoteroPane;
|
|
Zotero_Tabs = win.Zotero_Tabs;
|
|
ZoteroContextPane = win.ZoteroContextPane;
|
|
});
|
|
|
|
after(function () {
|
|
Zotero_Tabs.closeAll();
|
|
win.close();
|
|
});
|
|
|
|
describe("Note Tab Operations", function () {
|
|
beforeEach(function () {
|
|
// Reset the state before each test
|
|
Zotero_Tabs.closeAll();
|
|
});
|
|
|
|
it("should open note in tab", async function () {
|
|
let item = new Zotero.Item('note');
|
|
item.setNote('This is a test note.');
|
|
await item.saveTx();
|
|
|
|
let editorInstance = await Zotero.Notes.open(item.id);
|
|
|
|
assert.isNotNull(editorInstance, "Note editor should be opened");
|
|
assert.equal(editorInstance.itemID, item.id, "Note editor should be associated with the correct item");
|
|
|
|
let sameNoteEditor = await Zotero.Notes.open(item.id, undefined, {
|
|
tabID: Zotero_Tabs.selectedID,
|
|
});
|
|
assert.equal(editorInstance, sameNoteEditor, "Opening the same note should return the existing editor");
|
|
|
|
let duplicateEditorInstance = await Zotero.Notes.open(item.id, undefined, {
|
|
allowDuplicate: true,
|
|
});
|
|
|
|
assert.isNotNull(duplicateEditorInstance, "Duplicate note editor should be opened");
|
|
assert.notEqual(editorInstance, duplicateEditorInstance, "Duplicate note editor should be a new instance");
|
|
assert.equal(duplicateEditorInstance.itemID, item.id, "Duplicate note editor should be associated with the correct item");
|
|
|
|
Zotero_Tabs.closeAll();
|
|
|
|
await waitForCallback(
|
|
() => !Zotero.Notes._editorInstances.find(e => e.tabID),
|
|
100, 10);
|
|
|
|
await Zotero.Notes.open(item.id, undefined, {
|
|
openInBackground: true,
|
|
});
|
|
|
|
assert.equal(Zotero_Tabs.selectedType, 'library', "Tab should be opened in background");
|
|
});
|
|
|
|
it("should open unloaded note tab", async function () {
|
|
// https://forums.zotero.org/discussion/128954/
|
|
let item = new Zotero.Item("note");
|
|
item.setNote("This is a test note.");
|
|
await item.saveTx();
|
|
|
|
let editorInstance = await Zotero.Notes.open(item.id);
|
|
let tabID = editorInstance.tabID;
|
|
Zotero_Tabs.unload(tabID);
|
|
|
|
let editor2 = await ZoteroPane.openNote(item.id);
|
|
|
|
assert.equal(editorInstance, editor2, "Unloaded note tab should be reloaded");
|
|
});
|
|
|
|
it("should select opened note tab", async function () {
|
|
// https://forums.zotero.org/discussion/128917/
|
|
let item = new Zotero.Item("note");
|
|
item.setNote("This is a test note.");
|
|
await item.saveTx();
|
|
|
|
let editorInstance = await Zotero.Notes.open(item.id);
|
|
let tabID = editorInstance.tabID;
|
|
|
|
let promise = waitForNotifierEvent("select", "tab");
|
|
|
|
Zotero_Tabs.select("zotero-pane");
|
|
await promise;
|
|
|
|
promise = waitForNotifierEvent("select", "tab");
|
|
|
|
let editor2 = await ZoteroPane.openNote(item.id);
|
|
await promise;
|
|
|
|
assert.equal(Zotero_Tabs.selectedID, tabID, "Should select the opened note tab");
|
|
assert.equal(editor2, editorInstance, "Should return the same editor instance");
|
|
});
|
|
});
|
|
});
|