@zextras/carbonio-ui-preview 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/preview/ImagePreview.d.ts +8 -0
- package/lib/preview/ImagePreview.js +16 -7
- package/lib/preview/ImagePreview.js.map +1 -1
- package/lib/preview/Navigator.d.ts +5 -0
- package/lib/preview/Navigator.js +28 -0
- package/lib/preview/Navigator.js.map +1 -0
- package/lib/preview/PageController.d.ts +8 -0
- package/lib/preview/PageController.js +112 -0
- package/lib/preview/PageController.js.map +1 -0
- package/lib/preview/PdfPreview.d.ts +14 -0
- package/lib/preview/PdfPreview.js +108 -112
- package/lib/preview/PdfPreview.js.map +1 -1
- package/lib/preview/PdfPreview.test.js +620 -93
- package/lib/preview/PdfPreview.test.js.map +1 -1
- package/lib/preview/PreviewManager.d.ts +8 -2
- package/lib/preview/PreviewManager.js +58 -23
- package/lib/preview/PreviewManager.js.map +1 -1
- package/lib/preview/PreviewManager.test.js +94 -3
- package/lib/preview/PreviewManager.test.js.map +1 -1
- package/lib/preview/StyledComponents.d.ts +3 -0
- package/lib/preview/StyledComponents.js +21 -0
- package/lib/preview/StyledComponents.js.map +1 -0
- package/lib/preview/ZoomController.d.ts +17 -0
- package/lib/preview/ZoomController.js +58 -0
- package/lib/preview/ZoomController.js.map +1 -0
- package/lib/preview/usePageScrollController.d.ts +4 -0
- package/lib/preview/usePageScrollController.js +70 -0
- package/lib/preview/usePageScrollController.js.map +1 -0
- package/lib/preview/useZoom.d.ts +13 -0
- package/lib/preview/useZoom.js +85 -0
- package/lib/preview/useZoom.js.map +1 -0
- package/lib/utils/test-utils.d.ts +1 -0
- package/lib/utils/test-utils.js +63 -1
- package/lib/utils/test-utils.js.map +1 -1
- package/lib-esm/preview/ImagePreview.d.ts +8 -0
- package/lib-esm/preview/ImagePreview.js +16 -7
- package/lib-esm/preview/ImagePreview.js.map +1 -1
- package/lib-esm/preview/Navigator.d.ts +5 -0
- package/lib-esm/preview/Navigator.js +21 -0
- package/lib-esm/preview/Navigator.js.map +1 -0
- package/lib-esm/preview/PageController.d.ts +8 -0
- package/lib-esm/preview/PageController.js +82 -0
- package/lib-esm/preview/PageController.js.map +1 -0
- package/lib-esm/preview/PdfPreview.d.ts +14 -0
- package/lib-esm/preview/PdfPreview.js +109 -113
- package/lib-esm/preview/PdfPreview.js.map +1 -1
- package/lib-esm/preview/PdfPreview.test.js +620 -93
- package/lib-esm/preview/PdfPreview.test.js.map +1 -1
- package/lib-esm/preview/PreviewManager.d.ts +8 -2
- package/lib-esm/preview/PreviewManager.js +57 -25
- package/lib-esm/preview/PreviewManager.js.map +1 -1
- package/lib-esm/preview/PreviewManager.test.js +95 -4
- package/lib-esm/preview/PreviewManager.test.js.map +1 -1
- package/lib-esm/preview/StyledComponents.d.ts +3 -0
- package/lib-esm/preview/StyledComponents.js +15 -0
- package/lib-esm/preview/StyledComponents.js.map +1 -0
- package/lib-esm/preview/ZoomController.d.ts +17 -0
- package/lib-esm/preview/ZoomController.js +28 -0
- package/lib-esm/preview/ZoomController.js.map +1 -0
- package/lib-esm/preview/usePageScrollController.d.ts +4 -0
- package/lib-esm/preview/usePageScrollController.js +66 -0
- package/lib-esm/preview/usePageScrollController.js.map +1 -0
- package/lib-esm/preview/useZoom.d.ts +13 -0
- package/lib-esm/preview/useZoom.js +78 -0
- package/lib-esm/preview/useZoom.js.map +1 -0
- package/lib-esm/utils/test-utils.d.ts +1 -0
- package/lib-esm/utils/test-utils.js +62 -1
- package/lib-esm/utils/test-utils.js.map +1 -1
- package/package.json +3 -2
|
@@ -42,9 +42,9 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
42
42
|
import React from 'react';
|
|
43
43
|
import { act, screen, waitFor } from '@testing-library/react';
|
|
44
44
|
import userEvent from '@testing-library/user-event';
|
|
45
|
-
import { loadPDF, setup } from '../utils/test-utils';
|
|
46
45
|
import { ZOOM_STEPS } from './constants';
|
|
47
46
|
import { PdfPreview } from './PdfPreview';
|
|
47
|
+
import { loadPDF, setup, triggerObserver } from 'test-utils';
|
|
48
48
|
var pdfFile = loadPDF('./__mocks__/_pdf.pdf');
|
|
49
49
|
var zoomInIcon = 'icon: Plus';
|
|
50
50
|
var zoomOutIcon = 'icon: Minus';
|
|
@@ -61,10 +61,10 @@ describe('Pdf Preview', function () {
|
|
|
61
61
|
setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
62
62
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
63
63
|
});
|
|
64
|
-
return [4 /*yield*/, screen.findByText(/
|
|
64
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
65
65
|
case 1:
|
|
66
66
|
_a.sent();
|
|
67
|
-
expect(screen.queryByText(/
|
|
67
|
+
expect(screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
|
|
68
68
|
expect(screen.getByTestId('pdf-preview-container')).toBeInTheDocument();
|
|
69
69
|
pageElement = document.querySelector('[data-page-number="1"]');
|
|
70
70
|
expect(pageElement).toBeDefined();
|
|
@@ -81,7 +81,7 @@ describe('Pdf Preview', function () {
|
|
|
81
81
|
setup(React.createElement(PdfPreview, { show: false, src: pdfFile.dataURI, onClose: onClose }), {
|
|
82
82
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
83
83
|
});
|
|
84
|
-
expect(screen.queryByText(/
|
|
84
|
+
expect(screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
|
|
85
85
|
expect(screen.queryByTestId('pdf-preview-container')).not.toBeInTheDocument();
|
|
86
86
|
return [2 /*return*/];
|
|
87
87
|
});
|
|
@@ -95,13 +95,13 @@ describe('Pdf Preview', function () {
|
|
|
95
95
|
setup(React.createElement(PdfPreview, { show: true, src: "invalid-pdf.pdf", onClose: onClose }), {
|
|
96
96
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
97
97
|
});
|
|
98
|
-
return [4 /*yield*/, screen.findByText(/
|
|
98
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
99
99
|
case 1:
|
|
100
100
|
_a.sent();
|
|
101
|
-
return [4 /*yield*/, screen.findByText(/Failed to load
|
|
101
|
+
return [4 /*yield*/, screen.findByText(/Failed to load document preview./i)];
|
|
102
102
|
case 2:
|
|
103
103
|
_a.sent();
|
|
104
|
-
expect(screen.queryByText(/
|
|
104
|
+
expect(screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
|
|
105
105
|
expect(screen.getByTestId('pdf-preview-container')).toBeInTheDocument();
|
|
106
106
|
return [2 /*return*/];
|
|
107
107
|
}
|
|
@@ -148,10 +148,10 @@ describe('Pdf Preview', function () {
|
|
|
148
148
|
setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, filename: "file name", extension: "pdf", size: "18KB" }), {
|
|
149
149
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
150
150
|
});
|
|
151
|
-
return [4 /*yield*/, screen.findByText(/
|
|
151
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
152
152
|
case 1:
|
|
153
153
|
_a.sent();
|
|
154
|
-
expect(screen.queryByText(/
|
|
154
|
+
expect(screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
|
|
155
155
|
expect(screen.getByText(/file name/i)).toBeVisible();
|
|
156
156
|
expect(screen.getByText(/pdf.*18KB/i)).toBeVisible();
|
|
157
157
|
return [2 /*return*/];
|
|
@@ -167,10 +167,10 @@ describe('Pdf Preview', function () {
|
|
|
167
167
|
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
168
168
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
169
169
|
}).user;
|
|
170
|
-
return [4 /*yield*/, screen.findByText(/
|
|
170
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
171
171
|
case 1:
|
|
172
172
|
_a.sent();
|
|
173
|
-
expect(screen.queryByText(/
|
|
173
|
+
expect(screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
|
|
174
174
|
return [4 /*yield*/, user.keyboard('{Escape}')];
|
|
175
175
|
case 2:
|
|
176
176
|
_a.sent();
|
|
@@ -195,10 +195,10 @@ describe('Pdf Preview', function () {
|
|
|
195
195
|
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, closeAction: closeAction }), {
|
|
196
196
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
197
197
|
}).user;
|
|
198
|
-
return [4 /*yield*/, screen.findByText(/
|
|
198
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
199
199
|
case 1:
|
|
200
200
|
_a.sent();
|
|
201
|
-
expect(screen.queryByText(/
|
|
201
|
+
expect(screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
|
|
202
202
|
closeActionElement = screen.getByTestId('icon: Activity');
|
|
203
203
|
expect(closeActionElement).toBeVisible();
|
|
204
204
|
return [4 /*yield*/, user.hover(closeActionElement)];
|
|
@@ -246,7 +246,7 @@ describe('Pdf Preview', function () {
|
|
|
246
246
|
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, actions: actions, filename: "pdf name", closeAction: closeAction }), {
|
|
247
247
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
248
248
|
}).user;
|
|
249
|
-
return [4 /*yield*/, screen.findByText(/
|
|
249
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
250
250
|
case 1:
|
|
251
251
|
_a.sent();
|
|
252
252
|
return [4 /*yield*/, waitFor(function () {
|
|
@@ -270,10 +270,10 @@ describe('Pdf Preview', function () {
|
|
|
270
270
|
_a.sent();
|
|
271
271
|
expect(actions[0].onClick).toHaveBeenCalled();
|
|
272
272
|
expect(onClose).toHaveBeenCalledTimes(1);
|
|
273
|
-
// click on action 2 skips the handler of the action since it is disabled and
|
|
273
|
+
// click on action 2 skips the handler of the action since it is disabled and does not call onClose
|
|
274
274
|
return [4 /*yield*/, user.click(action2Item)];
|
|
275
275
|
case 4:
|
|
276
|
-
// click on action 2 skips the handler of the action since it is disabled and
|
|
276
|
+
// click on action 2 skips the handler of the action since it is disabled and does not call onClose
|
|
277
277
|
_a.sent();
|
|
278
278
|
expect(actions[1].onClick).not.toHaveBeenCalled();
|
|
279
279
|
expect(onClose).toHaveBeenCalledTimes(1);
|
|
@@ -296,15 +296,15 @@ describe('Pdf Preview', function () {
|
|
|
296
296
|
});
|
|
297
297
|
}); });
|
|
298
298
|
test('Zoom starts at lowest step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
299
|
-
var onClose,
|
|
299
|
+
var onClose, canvas;
|
|
300
300
|
return __generator(this, function (_a) {
|
|
301
301
|
switch (_a.label) {
|
|
302
302
|
case 0:
|
|
303
303
|
onClose = jest.fn();
|
|
304
|
-
|
|
304
|
+
setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
305
305
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
306
|
-
})
|
|
307
|
-
return [4 /*yield*/, screen.findByText(/
|
|
306
|
+
});
|
|
307
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
308
308
|
case 1:
|
|
309
309
|
_a.sent();
|
|
310
310
|
canvas = document.querySelector('canvas');
|
|
@@ -323,7 +323,7 @@ describe('Pdf Preview', function () {
|
|
|
323
323
|
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
324
324
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
325
325
|
}).user;
|
|
326
|
-
return [4 /*yield*/, screen.findByText(/
|
|
326
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
327
327
|
case 1:
|
|
328
328
|
_a.sent();
|
|
329
329
|
canvas = document.querySelector('canvas');
|
|
@@ -356,7 +356,7 @@ describe('Pdf Preview', function () {
|
|
|
356
356
|
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
357
357
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
358
358
|
}).user;
|
|
359
|
-
return [4 /*yield*/, screen.findByText(/
|
|
359
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
360
360
|
case 1:
|
|
361
361
|
_a.sent();
|
|
362
362
|
// eslint-disable-next-line testing-library/no-node-access
|
|
@@ -409,7 +409,7 @@ describe('Pdf Preview', function () {
|
|
|
409
409
|
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
410
410
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
411
411
|
}).user;
|
|
412
|
-
return [4 /*yield*/, screen.findByText(/
|
|
412
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
413
413
|
case 1:
|
|
414
414
|
_a.sent();
|
|
415
415
|
// eslint-disable-next-line testing-library/no-node-access
|
|
@@ -438,19 +438,19 @@ describe('Pdf Preview', function () {
|
|
|
438
438
|
});
|
|
439
439
|
}); });
|
|
440
440
|
test('Fit to width zoom set width of pdf to width of the window', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
441
|
-
var onClose, ref, mockPdfWidth,
|
|
442
|
-
return __generator(this, function (
|
|
443
|
-
switch (
|
|
441
|
+
var onClose, ref, mockPdfWidth, user;
|
|
442
|
+
return __generator(this, function (_a) {
|
|
443
|
+
switch (_a.label) {
|
|
444
444
|
case 0:
|
|
445
445
|
onClose = jest.fn();
|
|
446
446
|
ref = React.createRef();
|
|
447
447
|
mockPdfWidth = 1000;
|
|
448
|
-
|
|
448
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
449
449
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
450
|
-
})
|
|
451
|
-
return [4 /*yield*/, screen.findByText(/
|
|
450
|
+
}).user;
|
|
451
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
452
452
|
case 1:
|
|
453
|
-
|
|
453
|
+
_a.sent();
|
|
454
454
|
// eslint-disable-next-line testing-library/no-node-access
|
|
455
455
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
456
456
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -459,7 +459,7 @@ describe('Pdf Preview', function () {
|
|
|
459
459
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
460
460
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
461
461
|
case 2:
|
|
462
|
-
|
|
462
|
+
_a.sent();
|
|
463
463
|
// eslint-disable-next-line testing-library/no-node-access
|
|
464
464
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth));
|
|
465
465
|
expect(screen.getByTestId(zoomResetWidthIcon)).toBeVisible();
|
|
@@ -469,19 +469,19 @@ describe('Pdf Preview', function () {
|
|
|
469
469
|
});
|
|
470
470
|
}); });
|
|
471
471
|
test('Reset zoom set width to lowest step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
472
|
-
var onClose, ref, mockPdfWidth,
|
|
473
|
-
return __generator(this, function (
|
|
474
|
-
switch (
|
|
472
|
+
var onClose, ref, mockPdfWidth, user;
|
|
473
|
+
return __generator(this, function (_a) {
|
|
474
|
+
switch (_a.label) {
|
|
475
475
|
case 0:
|
|
476
476
|
onClose = jest.fn();
|
|
477
477
|
ref = React.createRef();
|
|
478
478
|
mockPdfWidth = 1000;
|
|
479
|
-
|
|
479
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
480
480
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
481
|
-
})
|
|
482
|
-
return [4 /*yield*/, screen.findByText(/
|
|
481
|
+
}).user;
|
|
482
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
483
483
|
case 1:
|
|
484
|
-
|
|
484
|
+
_a.sent();
|
|
485
485
|
// eslint-disable-next-line testing-library/no-node-access
|
|
486
486
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
487
487
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -490,14 +490,14 @@ describe('Pdf Preview', function () {
|
|
|
490
490
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
491
491
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
492
492
|
case 2:
|
|
493
|
-
|
|
493
|
+
_a.sent();
|
|
494
494
|
// eslint-disable-next-line testing-library/no-node-access
|
|
495
495
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth));
|
|
496
496
|
expect(screen.getByTestId(zoomResetWidthIcon)).toBeVisible();
|
|
497
497
|
expect(screen.queryByTestId(zoomFitToWidthIcon)).not.toBeInTheDocument();
|
|
498
498
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomResetWidthIcon))];
|
|
499
499
|
case 3:
|
|
500
|
-
|
|
500
|
+
_a.sent();
|
|
501
501
|
// eslint-disable-next-line testing-library/no-node-access
|
|
502
502
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[0]));
|
|
503
503
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -507,26 +507,26 @@ describe('Pdf Preview', function () {
|
|
|
507
507
|
});
|
|
508
508
|
}); });
|
|
509
509
|
test('When client width is lower than lowest zoom step and zoom is set to fit to width, decrease zoom is disabled and increase is enabled', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
510
|
-
var onClose, ref, mockPdfWidth,
|
|
511
|
-
return __generator(this, function (
|
|
512
|
-
switch (
|
|
510
|
+
var onClose, ref, mockPdfWidth, user;
|
|
511
|
+
return __generator(this, function (_a) {
|
|
512
|
+
switch (_a.label) {
|
|
513
513
|
case 0:
|
|
514
514
|
onClose = jest.fn();
|
|
515
515
|
ref = React.createRef();
|
|
516
516
|
mockPdfWidth = ZOOM_STEPS[0] - 1;
|
|
517
|
-
|
|
517
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
518
518
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
519
|
-
})
|
|
520
|
-
return [4 /*yield*/, screen.findByText(/
|
|
519
|
+
}).user;
|
|
520
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
521
521
|
case 1:
|
|
522
|
-
|
|
522
|
+
_a.sent();
|
|
523
523
|
// eslint-disable-next-line testing-library/no-node-access
|
|
524
524
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
525
525
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
526
526
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
527
527
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
528
528
|
case 2:
|
|
529
|
-
|
|
529
|
+
_a.sent();
|
|
530
530
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
531
531
|
expect(screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
|
|
532
532
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
@@ -536,26 +536,26 @@ describe('Pdf Preview', function () {
|
|
|
536
536
|
});
|
|
537
537
|
}); });
|
|
538
538
|
test('When client width is greater than greatest zoom step and zoom is set to fit to width, decrease zoom is enabled and increase is disabled', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
539
|
-
var onClose, ref, mockPdfWidth,
|
|
540
|
-
return __generator(this, function (
|
|
541
|
-
switch (
|
|
539
|
+
var onClose, ref, mockPdfWidth, user;
|
|
540
|
+
return __generator(this, function (_a) {
|
|
541
|
+
switch (_a.label) {
|
|
542
542
|
case 0:
|
|
543
543
|
onClose = jest.fn();
|
|
544
544
|
ref = React.createRef();
|
|
545
545
|
mockPdfWidth = ZOOM_STEPS[ZOOM_STEPS.length - 1] + 1;
|
|
546
|
-
|
|
546
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
547
547
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
548
|
-
})
|
|
549
|
-
return [4 /*yield*/, screen.findByText(/
|
|
548
|
+
}).user;
|
|
549
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
550
550
|
case 1:
|
|
551
|
-
|
|
551
|
+
_a.sent();
|
|
552
552
|
// eslint-disable-next-line testing-library/no-node-access
|
|
553
553
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
554
554
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
555
555
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
556
556
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
557
557
|
case 2:
|
|
558
|
-
|
|
558
|
+
_a.sent();
|
|
559
559
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
560
560
|
expect(screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
|
|
561
561
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
@@ -565,32 +565,32 @@ describe('Pdf Preview', function () {
|
|
|
565
565
|
});
|
|
566
566
|
}); });
|
|
567
567
|
test('After fit to width, decrease zoom set zoom to nearest lower zoom step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
568
|
-
var onClose, ref, stepToReach, mockPdfWidth,
|
|
569
|
-
return __generator(this, function (
|
|
570
|
-
switch (
|
|
568
|
+
var onClose, ref, stepToReach, mockPdfWidth, user;
|
|
569
|
+
return __generator(this, function (_a) {
|
|
570
|
+
switch (_a.label) {
|
|
571
571
|
case 0:
|
|
572
572
|
onClose = jest.fn();
|
|
573
573
|
ref = React.createRef();
|
|
574
574
|
stepToReach = 1;
|
|
575
575
|
mockPdfWidth = ZOOM_STEPS[stepToReach + 1] - 1;
|
|
576
|
-
|
|
576
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
577
577
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
578
|
-
})
|
|
579
|
-
return [4 /*yield*/, screen.findByText(/
|
|
578
|
+
}).user;
|
|
579
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
580
580
|
case 1:
|
|
581
|
-
|
|
581
|
+
_a.sent();
|
|
582
582
|
// eslint-disable-next-line testing-library/no-node-access
|
|
583
583
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
584
584
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
585
585
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
586
586
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
587
587
|
case 2:
|
|
588
|
-
|
|
588
|
+
_a.sent();
|
|
589
589
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
590
590
|
expect(screen.getByTestId(zoomOutIcon).parentElement).not.toHaveAttribute('disabled', '');
|
|
591
591
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomOutIcon))];
|
|
592
592
|
case 3:
|
|
593
|
-
|
|
593
|
+
_a.sent();
|
|
594
594
|
// eslint-disable-next-line testing-library/no-node-access
|
|
595
595
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[stepToReach]));
|
|
596
596
|
return [2 /*return*/];
|
|
@@ -598,32 +598,32 @@ describe('Pdf Preview', function () {
|
|
|
598
598
|
});
|
|
599
599
|
}); });
|
|
600
600
|
test('After fit to width, increase zoom set zoom to nearest greater zoom step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
601
|
-
var onClose, ref, stepToReach, mockPdfWidth,
|
|
602
|
-
return __generator(this, function (
|
|
603
|
-
switch (
|
|
601
|
+
var onClose, ref, stepToReach, mockPdfWidth, user;
|
|
602
|
+
return __generator(this, function (_a) {
|
|
603
|
+
switch (_a.label) {
|
|
604
604
|
case 0:
|
|
605
605
|
onClose = jest.fn();
|
|
606
606
|
ref = React.createRef();
|
|
607
607
|
stepToReach = 2;
|
|
608
608
|
mockPdfWidth = ZOOM_STEPS[stepToReach - 1] + 1;
|
|
609
|
-
|
|
609
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
610
610
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
611
|
-
})
|
|
612
|
-
return [4 /*yield*/, screen.findByText(/
|
|
611
|
+
}).user;
|
|
612
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
613
613
|
case 1:
|
|
614
|
-
|
|
614
|
+
_a.sent();
|
|
615
615
|
// eslint-disable-next-line testing-library/no-node-access
|
|
616
616
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
617
617
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
618
618
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
619
619
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
620
620
|
case 2:
|
|
621
|
-
|
|
621
|
+
_a.sent();
|
|
622
622
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
623
623
|
expect(screen.getByTestId(zoomInIcon).parentElement).not.toHaveAttribute('disabled', '');
|
|
624
624
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomInIcon))];
|
|
625
625
|
case 3:
|
|
626
|
-
|
|
626
|
+
_a.sent();
|
|
627
627
|
// eslint-disable-next-line testing-library/no-node-access
|
|
628
628
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[stepToReach]));
|
|
629
629
|
return [2 /*return*/];
|
|
@@ -631,19 +631,19 @@ describe('Pdf Preview', function () {
|
|
|
631
631
|
});
|
|
632
632
|
}); });
|
|
633
633
|
test('When fit to width is active, resize of the window update width of the pdf', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
634
|
-
var onClose, ref, mockPdfWidth,
|
|
635
|
-
return __generator(this, function (
|
|
636
|
-
switch (
|
|
634
|
+
var onClose, ref, mockPdfWidth, user, getPreviewClientWidthMock;
|
|
635
|
+
return __generator(this, function (_a) {
|
|
636
|
+
switch (_a.label) {
|
|
637
637
|
case 0:
|
|
638
638
|
onClose = jest.fn();
|
|
639
639
|
ref = React.createRef();
|
|
640
640
|
mockPdfWidth = [1001, 1501, 2001];
|
|
641
|
-
|
|
641
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
642
642
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
643
|
-
})
|
|
644
|
-
return [4 /*yield*/, screen.findByText(/
|
|
643
|
+
}).user;
|
|
644
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
645
645
|
case 1:
|
|
646
|
-
|
|
646
|
+
_a.sent();
|
|
647
647
|
// eslint-disable-next-line testing-library/no-node-access
|
|
648
648
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
649
649
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -651,7 +651,7 @@ describe('Pdf Preview', function () {
|
|
|
651
651
|
getPreviewClientWidthMock.mockReturnValueOnce(mockPdfWidth[0]);
|
|
652
652
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
653
653
|
case 2:
|
|
654
|
-
|
|
654
|
+
_a.sent();
|
|
655
655
|
// eslint-disable-next-line testing-library/no-node-access
|
|
656
656
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth[0]));
|
|
657
657
|
getPreviewClientWidthMock.mockReturnValueOnce(mockPdfWidth[1]);
|
|
@@ -666,26 +666,25 @@ describe('Pdf Preview', function () {
|
|
|
666
666
|
});
|
|
667
667
|
}); });
|
|
668
668
|
test('Click on disabled decrease/increase zoom actions does not change step and does not close preview', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
669
|
-
var onClose, ref,
|
|
670
|
-
return __generator(this, function (
|
|
671
|
-
switch (
|
|
669
|
+
var onClose, ref, user;
|
|
670
|
+
return __generator(this, function (_a) {
|
|
671
|
+
switch (_a.label) {
|
|
672
672
|
case 0:
|
|
673
673
|
onClose = jest.fn();
|
|
674
674
|
ref = React.createRef();
|
|
675
|
-
|
|
676
|
-
_a = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
675
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
677
676
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
678
|
-
})
|
|
679
|
-
return [4 /*yield*/, screen.findByText(/
|
|
677
|
+
}).user;
|
|
678
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
680
679
|
case 1:
|
|
681
|
-
|
|
680
|
+
_a.sent();
|
|
682
681
|
// eslint-disable-next-line testing-library/no-node-access
|
|
683
682
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
684
683
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
685
684
|
expect(screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
|
|
686
685
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomOutIcon))];
|
|
687
686
|
case 2:
|
|
688
|
-
|
|
687
|
+
_a.sent();
|
|
689
688
|
// eslint-disable-next-line testing-library/no-node-access
|
|
690
689
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[0]));
|
|
691
690
|
expect(onClose).not.toHaveBeenCalled();
|
|
@@ -694,14 +693,14 @@ describe('Pdf Preview', function () {
|
|
|
694
693
|
.mockReturnValue(ZOOM_STEPS[ZOOM_STEPS.length - 1]);
|
|
695
694
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
696
695
|
case 3:
|
|
697
|
-
|
|
696
|
+
_a.sent();
|
|
698
697
|
// eslint-disable-next-line testing-library/no-node-access
|
|
699
698
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[ZOOM_STEPS.length - 1]));
|
|
700
699
|
// eslint-disable-next-line testing-library/no-node-access,jest-dom/prefer-enabled-disabled
|
|
701
700
|
expect(screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
|
|
702
701
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomInIcon))];
|
|
703
702
|
case 4:
|
|
704
|
-
|
|
703
|
+
_a.sent();
|
|
705
704
|
// eslint-disable-next-line testing-library/no-node-access
|
|
706
705
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[ZOOM_STEPS.length - 1]));
|
|
707
706
|
expect(onClose).not.toHaveBeenCalled();
|
|
@@ -709,5 +708,533 @@ describe('Pdf Preview', function () {
|
|
|
709
708
|
}
|
|
710
709
|
});
|
|
711
710
|
}); });
|
|
711
|
+
describe('Page selector', function () {
|
|
712
|
+
test('shows page controller', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
713
|
+
var onClose;
|
|
714
|
+
return __generator(this, function (_a) {
|
|
715
|
+
switch (_a.label) {
|
|
716
|
+
case 0:
|
|
717
|
+
onClose = jest.fn();
|
|
718
|
+
setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
719
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
720
|
+
});
|
|
721
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
722
|
+
case 1:
|
|
723
|
+
_a.sent();
|
|
724
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
725
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
726
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
727
|
+
expect(screen.getByRole('textbox', { name: /current page/i })).toBeVisible();
|
|
728
|
+
// mock pdf has 4 pages
|
|
729
|
+
expect(screen.getByText('4')).toBeVisible();
|
|
730
|
+
return [2 /*return*/];
|
|
731
|
+
}
|
|
732
|
+
});
|
|
733
|
+
}); });
|
|
734
|
+
test('blur is a confirmation event on page input', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
735
|
+
var onClose, user, pageInput;
|
|
736
|
+
return __generator(this, function (_a) {
|
|
737
|
+
switch (_a.label) {
|
|
738
|
+
case 0:
|
|
739
|
+
onClose = jest.fn();
|
|
740
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
741
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
742
|
+
}).user;
|
|
743
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
744
|
+
case 1:
|
|
745
|
+
_a.sent();
|
|
746
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
747
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
748
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
749
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
750
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
751
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
752
|
+
case 2:
|
|
753
|
+
_a.sent();
|
|
754
|
+
return [4 /*yield*/, user.type(pageInput, '2')];
|
|
755
|
+
case 3:
|
|
756
|
+
_a.sent();
|
|
757
|
+
return [4 /*yield*/, user.tab()];
|
|
758
|
+
case 4:
|
|
759
|
+
_a.sent();
|
|
760
|
+
expect(pageInput).not.toHaveFocus();
|
|
761
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
762
|
+
return [2 /*return*/];
|
|
763
|
+
}
|
|
764
|
+
});
|
|
765
|
+
}); });
|
|
766
|
+
test('enter key is a confirmation event on page input', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
767
|
+
var onClose, user, pageInput;
|
|
768
|
+
return __generator(this, function (_a) {
|
|
769
|
+
switch (_a.label) {
|
|
770
|
+
case 0:
|
|
771
|
+
onClose = jest.fn();
|
|
772
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
773
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
774
|
+
}).user;
|
|
775
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
776
|
+
case 1:
|
|
777
|
+
_a.sent();
|
|
778
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
779
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
780
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
781
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
782
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
783
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
784
|
+
case 2:
|
|
785
|
+
_a.sent();
|
|
786
|
+
return [4 /*yield*/, user.type(pageInput, '2')];
|
|
787
|
+
case 3:
|
|
788
|
+
_a.sent();
|
|
789
|
+
return [4 /*yield*/, user.type(pageInput, '{Enter}')];
|
|
790
|
+
case 4:
|
|
791
|
+
_a.sent();
|
|
792
|
+
expect(pageInput).not.toHaveFocus();
|
|
793
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
794
|
+
return [2 /*return*/];
|
|
795
|
+
}
|
|
796
|
+
});
|
|
797
|
+
}); });
|
|
798
|
+
test('when input is confirmed, input loses focus and the document is scrolled to typed page', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
799
|
+
var onClose, scrollIntoViewFn, user, pageInput;
|
|
800
|
+
return __generator(this, function (_a) {
|
|
801
|
+
switch (_a.label) {
|
|
802
|
+
case 0:
|
|
803
|
+
onClose = jest.fn();
|
|
804
|
+
scrollIntoViewFn = jest.fn();
|
|
805
|
+
window.HTMLElement.prototype.scrollIntoView = scrollIntoViewFn;
|
|
806
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
807
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
808
|
+
}).user;
|
|
809
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
810
|
+
case 1:
|
|
811
|
+
_a.sent();
|
|
812
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
813
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
814
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
815
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
816
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
817
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
818
|
+
case 2:
|
|
819
|
+
_a.sent();
|
|
820
|
+
return [4 /*yield*/, user.type(pageInput, '2')];
|
|
821
|
+
case 3:
|
|
822
|
+
_a.sent();
|
|
823
|
+
return [4 /*yield*/, user.click(screen.getByText(/page/i))];
|
|
824
|
+
case 4:
|
|
825
|
+
_a.sent();
|
|
826
|
+
expect(pageInput).not.toHaveFocus();
|
|
827
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
828
|
+
expect(scrollIntoViewFn).toHaveBeenCalledTimes(1);
|
|
829
|
+
expect(scrollIntoViewFn.mock.instances[0]).toHaveAttribute('data-page-number', '2');
|
|
830
|
+
return [2 /*return*/];
|
|
831
|
+
}
|
|
832
|
+
});
|
|
833
|
+
}); });
|
|
834
|
+
test('when input is confirmed with an invalid value, input loses focus and the input value is reset to previous valid page', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
835
|
+
var onClose, scrollIntoViewFn, user, pageInput;
|
|
836
|
+
return __generator(this, function (_a) {
|
|
837
|
+
switch (_a.label) {
|
|
838
|
+
case 0:
|
|
839
|
+
onClose = jest.fn();
|
|
840
|
+
scrollIntoViewFn = jest.fn();
|
|
841
|
+
window.HTMLElement.prototype.scrollIntoView = scrollIntoViewFn;
|
|
842
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
843
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
844
|
+
}).user;
|
|
845
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
846
|
+
case 1:
|
|
847
|
+
_a.sent();
|
|
848
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
849
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
850
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
851
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
852
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
853
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
854
|
+
case 2:
|
|
855
|
+
_a.sent();
|
|
856
|
+
return [4 /*yield*/, user.type(pageInput, 'invalid')];
|
|
857
|
+
case 3:
|
|
858
|
+
_a.sent();
|
|
859
|
+
return [4 /*yield*/, user.click(screen.getByText(/page/i))];
|
|
860
|
+
case 4:
|
|
861
|
+
_a.sent();
|
|
862
|
+
expect(pageInput).not.toHaveFocus();
|
|
863
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
864
|
+
expect(scrollIntoViewFn).not.toHaveBeenCalled();
|
|
865
|
+
return [2 /*return*/];
|
|
866
|
+
}
|
|
867
|
+
});
|
|
868
|
+
}); });
|
|
869
|
+
test('on scroll, if focus is not on input, value is updated with current page', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
870
|
+
var onClose, pageInput, page2Element;
|
|
871
|
+
return __generator(this, function (_a) {
|
|
872
|
+
switch (_a.label) {
|
|
873
|
+
case 0:
|
|
874
|
+
onClose = jest.fn();
|
|
875
|
+
setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
876
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
877
|
+
});
|
|
878
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
879
|
+
case 1:
|
|
880
|
+
_a.sent();
|
|
881
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
882
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
883
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
884
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
885
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
886
|
+
page2Element = document.querySelector('[data-page-number="2"]');
|
|
887
|
+
expect(page2Element).not.toBeNull();
|
|
888
|
+
return [4 /*yield*/, triggerObserver(page2Element)];
|
|
889
|
+
case 2:
|
|
890
|
+
_a.sent();
|
|
891
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
892
|
+
return [2 /*return*/];
|
|
893
|
+
}
|
|
894
|
+
});
|
|
895
|
+
}); });
|
|
896
|
+
test('on scroll, if focus is on input, value is updated with current page', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
897
|
+
var onClose, user, pageInput, page2Element;
|
|
898
|
+
return __generator(this, function (_a) {
|
|
899
|
+
switch (_a.label) {
|
|
900
|
+
case 0:
|
|
901
|
+
onClose = jest.fn();
|
|
902
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
903
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
904
|
+
}).user;
|
|
905
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
906
|
+
case 1:
|
|
907
|
+
_a.sent();
|
|
908
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
909
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
910
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
911
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
912
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
913
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
914
|
+
case 2:
|
|
915
|
+
_a.sent();
|
|
916
|
+
return [4 /*yield*/, user.type(pageInput, '4')];
|
|
917
|
+
case 3:
|
|
918
|
+
_a.sent();
|
|
919
|
+
expect(pageInput).toHaveFocus();
|
|
920
|
+
page2Element = document.querySelector('[data-page-number="2"]');
|
|
921
|
+
expect(page2Element).not.toBeNull();
|
|
922
|
+
return [4 /*yield*/, triggerObserver(page2Element)];
|
|
923
|
+
case 4:
|
|
924
|
+
_a.sent();
|
|
925
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
926
|
+
expect(pageInput).toHaveFocus();
|
|
927
|
+
return [2 /*return*/];
|
|
928
|
+
}
|
|
929
|
+
});
|
|
930
|
+
}); });
|
|
931
|
+
test('must press esc key 2 times to make user exit from the preview, when focus is on input', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
932
|
+
var onClose, user, pageInput;
|
|
933
|
+
return __generator(this, function (_a) {
|
|
934
|
+
switch (_a.label) {
|
|
935
|
+
case 0:
|
|
936
|
+
onClose = jest.fn();
|
|
937
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
938
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
939
|
+
}).user;
|
|
940
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
941
|
+
case 1:
|
|
942
|
+
_a.sent();
|
|
943
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
944
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
945
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
946
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
947
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
948
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
949
|
+
case 2:
|
|
950
|
+
_a.sent();
|
|
951
|
+
return [4 /*yield*/, user.type(pageInput, '4')];
|
|
952
|
+
case 3:
|
|
953
|
+
_a.sent();
|
|
954
|
+
expect(pageInput).toHaveFocus();
|
|
955
|
+
return [4 /*yield*/, user.keyboard('{Escape}')];
|
|
956
|
+
case 4:
|
|
957
|
+
_a.sent();
|
|
958
|
+
expect(onClose).not.toHaveBeenCalled();
|
|
959
|
+
return [4 /*yield*/, user.keyboard('{Escape}')];
|
|
960
|
+
case 5:
|
|
961
|
+
_a.sent();
|
|
962
|
+
expect(onClose).toHaveBeenCalledTimes(1);
|
|
963
|
+
return [2 /*return*/];
|
|
964
|
+
}
|
|
965
|
+
});
|
|
966
|
+
}); });
|
|
967
|
+
});
|
|
968
|
+
describe('keyboard shortcuts', function () {
|
|
969
|
+
describe('Home and End', function () {
|
|
970
|
+
test('click End go to last page and Home return to the first page', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
971
|
+
var onClose, user, pageInput;
|
|
972
|
+
return __generator(this, function (_a) {
|
|
973
|
+
switch (_a.label) {
|
|
974
|
+
case 0:
|
|
975
|
+
onClose = jest.fn();
|
|
976
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
977
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
978
|
+
}).user;
|
|
979
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
980
|
+
case 1:
|
|
981
|
+
_a.sent();
|
|
982
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
983
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
984
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
985
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
986
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
987
|
+
return [4 /*yield*/, user.keyboard('{End}')];
|
|
988
|
+
case 2:
|
|
989
|
+
_a.sent();
|
|
990
|
+
expect(pageInput).toHaveDisplayValue('4');
|
|
991
|
+
return [4 /*yield*/, user.keyboard('{Home}')];
|
|
992
|
+
case 3:
|
|
993
|
+
_a.sent();
|
|
994
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
995
|
+
return [2 /*return*/];
|
|
996
|
+
}
|
|
997
|
+
});
|
|
998
|
+
}); });
|
|
999
|
+
test('click End go to last page and Home return to the first page, but they do not work if the page input is focussed ', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1000
|
+
var onClose, user, pageInput;
|
|
1001
|
+
return __generator(this, function (_a) {
|
|
1002
|
+
switch (_a.label) {
|
|
1003
|
+
case 0:
|
|
1004
|
+
onClose = jest.fn();
|
|
1005
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
1006
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
1007
|
+
}).user;
|
|
1008
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
1009
|
+
case 1:
|
|
1010
|
+
_a.sent();
|
|
1011
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
1012
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
1013
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
1014
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
1015
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
1016
|
+
return [4 /*yield*/, user.click(pageInput)];
|
|
1017
|
+
case 2:
|
|
1018
|
+
_a.sent();
|
|
1019
|
+
expect(pageInput).toHaveFocus();
|
|
1020
|
+
return [4 /*yield*/, user.keyboard('{End}')];
|
|
1021
|
+
case 3:
|
|
1022
|
+
_a.sent();
|
|
1023
|
+
expect(pageInput).not.toHaveDisplayValue('4');
|
|
1024
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
1025
|
+
// remove focus
|
|
1026
|
+
return [4 /*yield*/, user.keyboard('{Escape}')];
|
|
1027
|
+
case 4:
|
|
1028
|
+
// remove focus
|
|
1029
|
+
_a.sent();
|
|
1030
|
+
expect(pageInput).not.toHaveFocus();
|
|
1031
|
+
return [4 /*yield*/, user.keyboard('{End}')];
|
|
1032
|
+
case 5:
|
|
1033
|
+
_a.sent();
|
|
1034
|
+
expect(pageInput).toHaveDisplayValue('4');
|
|
1035
|
+
// focus input again
|
|
1036
|
+
return [4 /*yield*/, user.click(pageInput)];
|
|
1037
|
+
case 6:
|
|
1038
|
+
// focus input again
|
|
1039
|
+
_a.sent();
|
|
1040
|
+
expect(pageInput).toHaveFocus();
|
|
1041
|
+
return [4 /*yield*/, user.keyboard('{Home}')];
|
|
1042
|
+
case 7:
|
|
1043
|
+
_a.sent();
|
|
1044
|
+
expect(pageInput).not.toHaveDisplayValue('1');
|
|
1045
|
+
expect(pageInput).toHaveDisplayValue('4');
|
|
1046
|
+
// remove focus
|
|
1047
|
+
return [4 /*yield*/, user.keyboard('{Escape}')];
|
|
1048
|
+
case 8:
|
|
1049
|
+
// remove focus
|
|
1050
|
+
_a.sent();
|
|
1051
|
+
expect(pageInput).not.toHaveFocus();
|
|
1052
|
+
return [4 /*yield*/, user.keyboard('{Home}')];
|
|
1053
|
+
case 9:
|
|
1054
|
+
_a.sent();
|
|
1055
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
1056
|
+
return [2 /*return*/];
|
|
1057
|
+
}
|
|
1058
|
+
});
|
|
1059
|
+
}); });
|
|
1060
|
+
});
|
|
1061
|
+
describe('PageUp and PageDown', function () {
|
|
1062
|
+
test('click PageDown go to the next page and PageUp go to the previous page', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1063
|
+
var onClose, user, pageInput;
|
|
1064
|
+
return __generator(this, function (_a) {
|
|
1065
|
+
switch (_a.label) {
|
|
1066
|
+
case 0:
|
|
1067
|
+
onClose = jest.fn();
|
|
1068
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
1069
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
1070
|
+
}).user;
|
|
1071
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
1072
|
+
case 1:
|
|
1073
|
+
_a.sent();
|
|
1074
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
1075
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
1076
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
1077
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
1078
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
1079
|
+
return [4 /*yield*/, user.keyboard('{PageDown}')];
|
|
1080
|
+
case 2:
|
|
1081
|
+
_a.sent();
|
|
1082
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
1083
|
+
return [4 /*yield*/, user.keyboard('{PageDown}')];
|
|
1084
|
+
case 3:
|
|
1085
|
+
_a.sent();
|
|
1086
|
+
expect(pageInput).toHaveDisplayValue('3');
|
|
1087
|
+
return [4 /*yield*/, user.keyboard('{PageDown}')];
|
|
1088
|
+
case 4:
|
|
1089
|
+
_a.sent();
|
|
1090
|
+
expect(pageInput).toHaveDisplayValue('4');
|
|
1091
|
+
return [4 /*yield*/, user.keyboard('{PageDown}')];
|
|
1092
|
+
case 5:
|
|
1093
|
+
_a.sent();
|
|
1094
|
+
expect(pageInput).toHaveDisplayValue('4');
|
|
1095
|
+
return [4 /*yield*/, user.keyboard('{PageUp}')];
|
|
1096
|
+
case 6:
|
|
1097
|
+
_a.sent();
|
|
1098
|
+
expect(pageInput).toHaveDisplayValue('3');
|
|
1099
|
+
return [4 /*yield*/, user.keyboard('{PageUp}')];
|
|
1100
|
+
case 7:
|
|
1101
|
+
_a.sent();
|
|
1102
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
1103
|
+
return [4 /*yield*/, user.keyboard('{PageUp}')];
|
|
1104
|
+
case 8:
|
|
1105
|
+
_a.sent();
|
|
1106
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
1107
|
+
return [4 /*yield*/, user.keyboard('{PageUp}')];
|
|
1108
|
+
case 9:
|
|
1109
|
+
_a.sent();
|
|
1110
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
1111
|
+
return [2 /*return*/];
|
|
1112
|
+
}
|
|
1113
|
+
});
|
|
1114
|
+
}); });
|
|
1115
|
+
test('click PageDown go to the next page and PageUp go to the previous page, but they do not work if the page input is focussed ', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1116
|
+
var onClose, user, pageInput;
|
|
1117
|
+
return __generator(this, function (_a) {
|
|
1118
|
+
switch (_a.label) {
|
|
1119
|
+
case 0:
|
|
1120
|
+
onClose = jest.fn();
|
|
1121
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
1122
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
1123
|
+
}).user;
|
|
1124
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
1125
|
+
case 1:
|
|
1126
|
+
_a.sent();
|
|
1127
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
1128
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
1129
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
1130
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
1131
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
1132
|
+
return [4 /*yield*/, user.click(pageInput)];
|
|
1133
|
+
case 2:
|
|
1134
|
+
_a.sent();
|
|
1135
|
+
expect(pageInput).toHaveFocus();
|
|
1136
|
+
return [4 /*yield*/, user.keyboard('{PageDown}')];
|
|
1137
|
+
case 3:
|
|
1138
|
+
_a.sent();
|
|
1139
|
+
expect(pageInput).not.toHaveDisplayValue('2');
|
|
1140
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
1141
|
+
// remove focus
|
|
1142
|
+
return [4 /*yield*/, user.keyboard('{Escape}')];
|
|
1143
|
+
case 4:
|
|
1144
|
+
// remove focus
|
|
1145
|
+
_a.sent();
|
|
1146
|
+
expect(pageInput).not.toHaveFocus();
|
|
1147
|
+
return [4 /*yield*/, user.keyboard('{PageDown}')];
|
|
1148
|
+
case 5:
|
|
1149
|
+
_a.sent();
|
|
1150
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
1151
|
+
// focus input again
|
|
1152
|
+
return [4 /*yield*/, user.click(pageInput)];
|
|
1153
|
+
case 6:
|
|
1154
|
+
// focus input again
|
|
1155
|
+
_a.sent();
|
|
1156
|
+
expect(pageInput).toHaveFocus();
|
|
1157
|
+
return [4 /*yield*/, user.keyboard('{PageUp}')];
|
|
1158
|
+
case 7:
|
|
1159
|
+
_a.sent();
|
|
1160
|
+
expect(pageInput).not.toHaveDisplayValue('1');
|
|
1161
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
1162
|
+
// remove focus
|
|
1163
|
+
return [4 /*yield*/, user.keyboard('{Escape}')];
|
|
1164
|
+
case 8:
|
|
1165
|
+
// remove focus
|
|
1166
|
+
_a.sent();
|
|
1167
|
+
expect(pageInput).not.toHaveFocus();
|
|
1168
|
+
return [4 /*yield*/, user.keyboard('{PageUp}')];
|
|
1169
|
+
case 9:
|
|
1170
|
+
_a.sent();
|
|
1171
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
1172
|
+
return [2 /*return*/];
|
|
1173
|
+
}
|
|
1174
|
+
});
|
|
1175
|
+
}); });
|
|
1176
|
+
});
|
|
1177
|
+
test('ArrowUp and ArrowDown', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1178
|
+
var onClose, scrollByFn, user, pageInput;
|
|
1179
|
+
return __generator(this, function (_a) {
|
|
1180
|
+
switch (_a.label) {
|
|
1181
|
+
case 0:
|
|
1182
|
+
onClose = jest.fn();
|
|
1183
|
+
scrollByFn = jest.fn();
|
|
1184
|
+
window.HTMLElement.prototype.scrollBy = scrollByFn;
|
|
1185
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
1186
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
1187
|
+
}).user;
|
|
1188
|
+
return [4 /*yield*/, screen.findByText(/Loading document preview…/i)];
|
|
1189
|
+
case 1:
|
|
1190
|
+
_a.sent();
|
|
1191
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
1192
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
1193
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
1194
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
1195
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
1196
|
+
return [4 /*yield*/, user.click(pageInput)];
|
|
1197
|
+
case 2:
|
|
1198
|
+
_a.sent();
|
|
1199
|
+
expect(pageInput).toHaveFocus();
|
|
1200
|
+
return [4 /*yield*/, user.keyboard('{ArrowDown}')];
|
|
1201
|
+
case 3:
|
|
1202
|
+
_a.sent();
|
|
1203
|
+
expect(scrollByFn).not.toHaveBeenCalled();
|
|
1204
|
+
// remove focus
|
|
1205
|
+
return [4 /*yield*/, user.keyboard('{Escape}')];
|
|
1206
|
+
case 4:
|
|
1207
|
+
// remove focus
|
|
1208
|
+
_a.sent();
|
|
1209
|
+
expect(pageInput).not.toHaveFocus();
|
|
1210
|
+
return [4 /*yield*/, user.keyboard('{ArrowDown}')];
|
|
1211
|
+
case 5:
|
|
1212
|
+
_a.sent();
|
|
1213
|
+
expect(scrollByFn).toHaveBeenCalledTimes(1);
|
|
1214
|
+
expect(scrollByFn).toHaveBeenCalledWith(0, 40);
|
|
1215
|
+
return [4 /*yield*/, user.click(pageInput)];
|
|
1216
|
+
case 6:
|
|
1217
|
+
_a.sent();
|
|
1218
|
+
expect(pageInput).toHaveFocus();
|
|
1219
|
+
return [4 /*yield*/, user.keyboard('{ArrowUp}')];
|
|
1220
|
+
case 7:
|
|
1221
|
+
_a.sent();
|
|
1222
|
+
expect(scrollByFn).toHaveBeenCalledTimes(1);
|
|
1223
|
+
// remove focus
|
|
1224
|
+
return [4 /*yield*/, user.keyboard('{Escape}')];
|
|
1225
|
+
case 8:
|
|
1226
|
+
// remove focus
|
|
1227
|
+
_a.sent();
|
|
1228
|
+
expect(pageInput).not.toHaveFocus();
|
|
1229
|
+
return [4 /*yield*/, user.keyboard('{ArrowUp}')];
|
|
1230
|
+
case 9:
|
|
1231
|
+
_a.sent();
|
|
1232
|
+
expect(scrollByFn).toHaveBeenCalledTimes(2);
|
|
1233
|
+
expect(scrollByFn).toHaveBeenCalledWith(0, -40);
|
|
1234
|
+
return [2 /*return*/];
|
|
1235
|
+
}
|
|
1236
|
+
});
|
|
1237
|
+
}); });
|
|
1238
|
+
});
|
|
712
1239
|
});
|
|
713
1240
|
//# sourceMappingURL=PdfPreview.test.js.map
|