From 3a26f6eb6fc64b260b234e7c68208d3eba2c633e Mon Sep 17 00:00:00 2001 From: Martynas Bagdonas Date: Mon, 10 Oct 2022 16:51:07 +0300 Subject: [PATCH] Add pdf-reader annotation creation test (cherry picked from commit af436d34a8a3268a84cc7c302340b2bd82ea5614) --- chrome/content/zotero/xpcom/reader.js | 1 + test/tests/pdfReaderTest.js | 70 +++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 test/tests/pdfReaderTest.js diff --git a/chrome/content/zotero/xpcom/reader.js b/chrome/content/zotero/xpcom/reader.js index 9b36b56ab9..85409e1aef 100644 --- a/chrome/content/zotero/xpcom/reader.js +++ b/chrome/content/zotero/xpcom/reader.js @@ -1684,6 +1684,7 @@ class Reader { if (!openInBackground) { reader._window.focus(); } + return reader; } /** diff --git a/test/tests/pdfReaderTest.js b/test/tests/pdfReaderTest.js new file mode 100644 index 0000000000..3dc96a6df0 --- /dev/null +++ b/test/tests/pdfReaderTest.js @@ -0,0 +1,70 @@ +"use strict"; + +describe("PDF Reader", function () { + var win, zp; + + before(function* () { + win = yield loadZoteroPane(); + zp = win.ZoteroPane; + }); + + after(function () { + win.close(); + }); + + describe('Reader', function () { + it('should create annotations', async function () { + var attachment = await importFileAttachment('test.pdf'); + var reader = await Zotero.Reader.open(attachment.itemID); + // TODO: Implement a promise that would be resolved when pdf-reader is completely loaded + var n = 0; + while (!reader._iframeWindow.wrappedJSObject.PDFViewerApplication.pdfDocument && n++ < 50) { + await Zotero.Promise.delay(100); + } + await reader._iframeWindow.wrappedJSObject.viewerInstance._viewer._pdfjsPromise; + await reader._iframeWindow.wrappedJSObject.viewerInstance._viewer._annotationsStore.addAnnotation( + Components.utils.cloneInto({ + type: 'highlight', + color: '#ffd400', + sortIndex: '00000|003305|00000', + position: { + pageIndex: 0, + rects: [[0, 0, 100, 100]] + }, + text: 'test' + }, reader._iframeWindow) + ); + await reader._iframeWindow.wrappedJSObject.viewerInstance._viewer._annotationsStore.addAnnotation( + Components.utils.cloneInto({ + type: 'note', + color: '#ffd400', + sortIndex: '00000|003305|00000', + comment: 'test', + position: { + pageIndex: 0, + rects: [[0, 0, 100, 100]] + }, + text: 'test' + }, reader._iframeWindow) + ); + await reader._iframeWindow.wrappedJSObject.viewerInstance._viewer._annotationsStore.addAnnotation( + Components.utils.cloneInto({ + type: 'image', + color: '#ffd400', + sortIndex: '00000|003305|00000', + comment: 'test', + position: { + pageIndex: 0, + rects: [[0, 0, 100, 100]] + } + }, reader._iframeWindow) + ); + // TODO: Try to avoid pdf-reader annotation saving debounce which is now 1000ms + await Zotero.Promise.delay(1500); + var annotations = attachment.getAnnotations(); + assert.equal(annotations.length, 3); + }); + + // TODO: Add annotation update and deletion tests + }); +});