@zextras/carbonio-ui-preview 1.1.0 → 1.2.1

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.
Files changed (97) hide show
  1. package/lib/{preview/constants.d.ts → constants/index.d.ts} +1 -0
  2. package/lib/{preview/constants.js → constants/index.js} +3 -2
  3. package/lib/constants/index.js.map +1 -0
  4. package/lib/preview/FocusWithin.d.ts +1 -1
  5. package/lib/preview/FocusWithin.js +9 -11
  6. package/lib/preview/FocusWithin.js.map +1 -1
  7. package/lib/preview/ImagePreview.d.ts +1 -1
  8. package/lib/preview/Navigator.d.ts +1 -1
  9. package/lib/preview/Navigator.js.map +1 -1
  10. package/lib/preview/PageController.d.ts +2 -2
  11. package/lib/preview/PdfPreview.d.ts +3 -1
  12. package/lib/preview/PdfPreview.js +99 -46
  13. package/lib/preview/PdfPreview.js.map +1 -1
  14. package/lib/preview/PreviewManager.d.ts +1 -1
  15. package/lib/preview/PreviewManager.js +3 -2
  16. package/lib/preview/PreviewManager.js.map +1 -1
  17. package/lib/preview/StyledComponents.d.ts +2 -3
  18. package/lib/preview/ZoomController.d.ts +1 -1
  19. package/lib/preview/ZoomController.js.map +1 -1
  20. package/lib/preview/usePageScrollController.js +2 -1
  21. package/lib/preview/usePageScrollController.js.map +1 -1
  22. package/lib/preview/useZoom.js +1 -1
  23. package/lib/preview/useZoom.js.map +1 -1
  24. package/lib/utils/type-utils.d.ts +3 -0
  25. package/lib/utils/type-utils.js +3 -0
  26. package/lib/utils/type-utils.js.map +1 -0
  27. package/lib/utils/utils.d.ts +1 -3
  28. package/lib/utils/utils.js +15 -1
  29. package/lib/utils/utils.js.map +1 -1
  30. package/lib-esm/{preview/constants.d.ts → constants/index.d.ts} +1 -0
  31. package/lib-esm/{preview/constants.js → constants/index.js} +2 -1
  32. package/lib-esm/constants/index.js.map +1 -0
  33. package/lib-esm/preview/FocusWithin.d.ts +1 -1
  34. package/lib-esm/preview/FocusWithin.js +9 -11
  35. package/lib-esm/preview/FocusWithin.js.map +1 -1
  36. package/lib-esm/preview/ImagePreview.d.ts +1 -1
  37. package/lib-esm/preview/Navigator.d.ts +1 -1
  38. package/lib-esm/preview/Navigator.js.map +1 -1
  39. package/lib-esm/preview/PageController.d.ts +2 -2
  40. package/lib-esm/preview/PdfPreview.d.ts +3 -1
  41. package/lib-esm/preview/PdfPreview.js +99 -46
  42. package/lib-esm/preview/PdfPreview.js.map +1 -1
  43. package/lib-esm/preview/PreviewManager.d.ts +1 -1
  44. package/lib-esm/preview/PreviewManager.js +3 -2
  45. package/lib-esm/preview/PreviewManager.js.map +1 -1
  46. package/lib-esm/preview/StyledComponents.d.ts +2 -3
  47. package/lib-esm/preview/ZoomController.d.ts +1 -1
  48. package/lib-esm/preview/ZoomController.js.map +1 -1
  49. package/lib-esm/preview/usePageScrollController.js +2 -1
  50. package/lib-esm/preview/usePageScrollController.js.map +1 -1
  51. package/lib-esm/preview/useZoom.js +1 -1
  52. package/lib-esm/preview/useZoom.js.map +1 -1
  53. package/lib-esm/utils/type-utils.d.ts +3 -0
  54. package/lib-esm/utils/type-utils.js +2 -0
  55. package/lib-esm/utils/type-utils.js.map +1 -0
  56. package/lib-esm/utils/utils.d.ts +1 -3
  57. package/lib-esm/utils/utils.js +12 -1
  58. package/lib-esm/utils/utils.js.map +1 -1
  59. package/package.json +27 -32
  60. package/lib/preview/Header.test.d.ts +0 -1
  61. package/lib/preview/Header.test.js +0 -143
  62. package/lib/preview/Header.test.js.map +0 -1
  63. package/lib/preview/ImagePreview.test.d.ts +0 -1
  64. package/lib/preview/ImagePreview.test.js +0 -161
  65. package/lib/preview/ImagePreview.test.js.map +0 -1
  66. package/lib/preview/PdfPreview.test.d.ts +0 -1
  67. package/lib/preview/PdfPreview.test.js +0 -1297
  68. package/lib/preview/PdfPreview.test.js.map +0 -1
  69. package/lib/preview/PreviewManager.test.d.ts +0 -1
  70. package/lib/preview/PreviewManager.test.js +0 -253
  71. package/lib/preview/PreviewManager.test.js.map +0 -1
  72. package/lib/preview/PreviewWrapper.test.d.ts +0 -1
  73. package/lib/preview/PreviewWrapper.test.js +0 -85
  74. package/lib/preview/PreviewWrapper.test.js.map +0 -1
  75. package/lib/preview/constants.js.map +0 -1
  76. package/lib/utils/test-utils.d.ts +0 -21
  77. package/lib/utils/test-utils.js +0 -148
  78. package/lib/utils/test-utils.js.map +0 -1
  79. package/lib-esm/preview/Header.test.d.ts +0 -1
  80. package/lib-esm/preview/Header.test.js +0 -138
  81. package/lib-esm/preview/Header.test.js.map +0 -1
  82. package/lib-esm/preview/ImagePreview.test.d.ts +0 -1
  83. package/lib-esm/preview/ImagePreview.test.js +0 -156
  84. package/lib-esm/preview/ImagePreview.test.js.map +0 -1
  85. package/lib-esm/preview/PdfPreview.test.d.ts +0 -1
  86. package/lib-esm/preview/PdfPreview.test.js +0 -1292
  87. package/lib-esm/preview/PdfPreview.test.js.map +0 -1
  88. package/lib-esm/preview/PreviewManager.test.d.ts +0 -1
  89. package/lib-esm/preview/PreviewManager.test.js +0 -228
  90. package/lib-esm/preview/PreviewManager.test.js.map +0 -1
  91. package/lib-esm/preview/PreviewWrapper.test.d.ts +0 -1
  92. package/lib-esm/preview/PreviewWrapper.test.js +0 -80
  93. package/lib-esm/preview/PreviewWrapper.test.js.map +0 -1
  94. package/lib-esm/preview/constants.js.map +0 -1
  95. package/lib-esm/utils/test-utils.d.ts +0 -21
  96. package/lib-esm/utils/test-utils.js +0 -116
  97. package/lib-esm/utils/test-utils.js.map +0 -1
@@ -1,1297 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- /*
43
- * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>
44
- *
45
- * SPDX-License-Identifier: AGPL-3.0-only
46
- */
47
- var react_1 = __importDefault(require("react"));
48
- var react_2 = require("@testing-library/react");
49
- var user_event_1 = __importDefault(require("@testing-library/user-event"));
50
- var jest_fetch_mock_1 = __importDefault(require("jest-fetch-mock"));
51
- var constants_1 = require("./constants");
52
- var PdfPreview_1 = require("./PdfPreview");
53
- var test_utils_1 = require("test-utils");
54
- var pdfFile = (0, test_utils_1.loadPDF)('./__mocks__/_pdf.pdf');
55
- var zoomInIcon = 'icon: Plus';
56
- var zoomOutIcon = 'icon: Minus';
57
- var zoomFitToWidthIcon = 'icon: MaximizeOutline';
58
- var zoomResetWidthIcon = 'icon: MinimizeOutline';
59
- jest.useRealTimers();
60
- describe('Pdf Preview', function () {
61
- test('Render a pdf document', function () { return __awaiter(void 0, void 0, void 0, function () {
62
- var onClose, pageElement;
63
- return __generator(this, function (_a) {
64
- switch (_a.label) {
65
- case 0:
66
- onClose = jest.fn();
67
- (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
68
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
69
- });
70
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
71
- case 1:
72
- _a.sent();
73
- expect(react_2.screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
74
- expect(react_2.screen.getByTestId('pdf-preview-container')).toBeInTheDocument();
75
- pageElement = document.querySelector('[data-page-number="1"]');
76
- expect(pageElement).toBeDefined();
77
- expect(pageElement).not.toBeNull();
78
- expect(pageElement).toBeInTheDocument();
79
- return [2 /*return*/];
80
- }
81
- });
82
- }); });
83
- test('Render a pdf document from File', function () { return __awaiter(void 0, void 0, void 0, function () {
84
- var onClose, loadingElement, pageElement;
85
- return __generator(this, function (_a) {
86
- switch (_a.label) {
87
- case 0:
88
- onClose = jest.fn();
89
- (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.file, onClose: onClose }), {
90
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
91
- });
92
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
93
- case 1:
94
- loadingElement = _a.sent();
95
- expect(loadingElement).toBeInTheDocument();
96
- return [4 /*yield*/, (0, react_2.waitForElementToBeRemoved)(loadingElement)];
97
- case 2:
98
- _a.sent();
99
- expect(react_2.screen.getByTestId('pdf-preview-container')).toBeInTheDocument();
100
- pageElement = document.querySelector('[data-page-number="1"]');
101
- expect(pageElement).toBeDefined();
102
- expect(pageElement).not.toBeNull();
103
- expect(pageElement).toBeInTheDocument();
104
- return [2 /*return*/];
105
- }
106
- });
107
- }); });
108
- test('Render a pdf document from Blob', function () { return __awaiter(void 0, void 0, void 0, function () {
109
- var onClose, loadingElement, pageElement;
110
- return __generator(this, function (_a) {
111
- switch (_a.label) {
112
- case 0:
113
- onClose = jest.fn();
114
- (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.blob, onClose: onClose }), {
115
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
116
- });
117
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
118
- case 1:
119
- loadingElement = _a.sent();
120
- expect(loadingElement).toBeInTheDocument();
121
- return [4 /*yield*/, (0, react_2.waitForElementToBeRemoved)(loadingElement)];
122
- case 2:
123
- _a.sent();
124
- expect(react_2.screen.getByTestId('pdf-preview-container')).toBeInTheDocument();
125
- pageElement = document.querySelector('[data-page-number="1"]');
126
- expect(pageElement).toBeDefined();
127
- expect(pageElement).not.toBeNull();
128
- expect(pageElement).toBeInTheDocument();
129
- return [2 /*return*/];
130
- }
131
- });
132
- }); });
133
- test('If show is false does not render the pdf', function () { return __awaiter(void 0, void 0, void 0, function () {
134
- var onClose;
135
- return __generator(this, function (_a) {
136
- onClose = jest.fn();
137
- (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: false, src: pdfFile.dataURI, onClose: onClose }), {
138
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
139
- });
140
- expect(react_2.screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
141
- expect(react_2.screen.queryByTestId('pdf-preview-container')).not.toBeInTheDocument();
142
- return [2 /*return*/];
143
- });
144
- }); });
145
- test('If pdf is not valid render an error message', function () { return __awaiter(void 0, void 0, void 0, function () {
146
- var onClose;
147
- return __generator(this, function (_a) {
148
- switch (_a.label) {
149
- case 0:
150
- jest_fetch_mock_1.default.mockReject(function () { return Promise.reject(new Error('API is down')); });
151
- onClose = jest.fn();
152
- (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: "invalid-pdf.pdf", onClose: onClose }), {
153
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
154
- });
155
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
156
- case 1:
157
- _a.sent();
158
- return [4 /*yield*/, react_2.screen.findByText(/Failed to load document preview./i)];
159
- case 2:
160
- _a.sent();
161
- expect(react_2.screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
162
- expect(react_2.screen.getByTestId('pdf-preview-container')).toBeInTheDocument();
163
- return [2 /*return*/];
164
- }
165
- });
166
- }); });
167
- test('If fallback is requested, does not render the pdf but the fallback instead', function () { return __awaiter(void 0, void 0, void 0, function () {
168
- var onClose;
169
- return __generator(this, function (_a) {
170
- onClose = jest.fn();
171
- (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, useFallback: true, openSrc: "open-src" }), {
172
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
173
- });
174
- expect(react_2.screen.getByText(/This item cannot be displayed/i)).toBeVisible();
175
- expect(react_2.screen.getByText(/The file size exceeds the limit allowed and cannot be displayed/i)).toBeVisible();
176
- expect(react_2.screen.getByText(/Please, download it or open it in a separate tab/i)).toBeVisible();
177
- expect(react_2.screen.getByRole('button', { name: /download/i })).toBeVisible();
178
- expect(react_2.screen.getByRole('button', { name: /open/i })).toBeVisible();
179
- return [2 /*return*/];
180
- });
181
- }); });
182
- test('Render a custom fallback', function () { return __awaiter(void 0, void 0, void 0, function () {
183
- var onClose, CustomContent;
184
- return __generator(this, function (_a) {
185
- onClose = jest.fn();
186
- CustomContent = react_1.default.createElement("div", null, "Custom content");
187
- (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, useFallback: true, customContent: CustomContent, openSrc: "open-src" }), {
188
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
189
- });
190
- expect(react_2.screen.queryByText(/This item cannot be displayed/i)).not.toBeInTheDocument();
191
- expect(react_2.screen.queryByText(/The file size exceeds the limit allowed and cannot be displayed/i)).not.toBeInTheDocument();
192
- expect(react_2.screen.queryByText(/Please, download it or open it in a separate tab/i)).not.toBeInTheDocument();
193
- expect(react_2.screen.queryByRole('button', { name: /download/i })).not.toBeInTheDocument();
194
- expect(react_2.screen.queryByRole('button', { name: /open/i })).not.toBeInTheDocument();
195
- expect(react_2.screen.getByText(/custom content/i)).toBeVisible();
196
- return [2 /*return*/];
197
- });
198
- }); });
199
- test('Additional data are visible', function () { return __awaiter(void 0, void 0, void 0, function () {
200
- var onClose;
201
- return __generator(this, function (_a) {
202
- switch (_a.label) {
203
- case 0:
204
- onClose = jest.fn();
205
- (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, filename: "file name", extension: "pdf", size: "18KB" }), {
206
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
207
- });
208
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
209
- case 1:
210
- _a.sent();
211
- expect(react_2.screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
212
- expect(react_2.screen.getByText(/file name/i)).toBeVisible();
213
- expect(react_2.screen.getByText(/pdf.*18KB/i)).toBeVisible();
214
- return [2 /*return*/];
215
- }
216
- });
217
- }); });
218
- test('Escape key close the preview', function () { return __awaiter(void 0, void 0, void 0, function () {
219
- var onClose, user;
220
- return __generator(this, function (_a) {
221
- switch (_a.label) {
222
- case 0:
223
- onClose = jest.fn();
224
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
225
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
226
- }).user;
227
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
228
- case 1:
229
- _a.sent();
230
- expect(react_2.screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
231
- return [4 /*yield*/, user.keyboard('{Escape}')];
232
- case 2:
233
- _a.sent();
234
- expect(onClose).toHaveBeenCalled();
235
- return [2 /*return*/];
236
- }
237
- });
238
- }); });
239
- test('Close action calls onClose if no click action is provided', function () { return __awaiter(void 0, void 0, void 0, function () {
240
- var onClose, closeAction, user, closeActionElement;
241
- return __generator(this, function (_a) {
242
- switch (_a.label) {
243
- case 0:
244
- onClose = jest.fn(function (e) {
245
- e.preventDefault();
246
- });
247
- closeAction = {
248
- id: 'closeAction',
249
- icon: 'Activity',
250
- tooltipLabel: 'Custom close action'
251
- };
252
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, closeAction: closeAction }), {
253
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
254
- }).user;
255
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
256
- case 1:
257
- _a.sent();
258
- expect(react_2.screen.queryByText(/Loading document preview…/i)).not.toBeInTheDocument();
259
- closeActionElement = react_2.screen.getByTestId('icon: Activity');
260
- expect(closeActionElement).toBeVisible();
261
- return [4 /*yield*/, user.hover(closeActionElement)];
262
- case 2:
263
- _a.sent();
264
- return [4 /*yield*/, react_2.screen.findByText(/custom close action/i)];
265
- case 3:
266
- _a.sent();
267
- return [4 /*yield*/, user.click(closeActionElement)];
268
- case 4:
269
- _a.sent();
270
- expect(onClose).toHaveBeenCalledTimes(1);
271
- return [2 /*return*/];
272
- }
273
- });
274
- }); });
275
- test('Click on actions calls onClose if event is not stopped by the action itself, instead if is disabled it is not propagated anyway ', function () { return __awaiter(void 0, void 0, void 0, function () {
276
- var onClose, actions, closeAction, user, action1Item, action2Item, closeActionItem;
277
- return __generator(this, function (_a) {
278
- switch (_a.label) {
279
- case 0:
280
- onClose = jest.fn();
281
- actions = [
282
- {
283
- id: 'action1',
284
- icon: 'Activity',
285
- onClick: jest.fn()
286
- },
287
- {
288
- id: 'action2',
289
- icon: 'People',
290
- onClick: jest.fn(function (ev) {
291
- ev.preventDefault();
292
- }),
293
- disabled: true
294
- }
295
- ];
296
- closeAction = {
297
- id: 'closeAction',
298
- icon: 'Close',
299
- onClick: jest.fn(function (ev) {
300
- ev.preventDefault();
301
- })
302
- };
303
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, actions: actions, filename: "pdf name", closeAction: closeAction }), {
304
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
305
- }).user;
306
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
307
- case 1:
308
- _a.sent();
309
- return [4 /*yield*/, (0, react_2.waitFor)(function () {
310
- // eslint-disable-next-line testing-library/no-node-access
311
- return expect(document.querySelector('[data-page-number="1"]')).toBeInTheDocument();
312
- })];
313
- case 2:
314
- _a.sent();
315
- action1Item = react_2.screen.getByTestId('icon: Activity');
316
- action2Item = react_2.screen.getByTestId('icon: People');
317
- closeActionItem = react_2.screen.getByTestId('icon: Close');
318
- expect(action1Item).toBeVisible();
319
- expect(action2Item).toBeVisible();
320
- // eslint-disable-next-line testing-library/no-node-access
321
- expect(action2Item.parentElement).toHaveAttribute('disabled');
322
- expect(closeActionItem).toBeVisible();
323
- // click on action 1 is propagated and calls onClose
324
- return [4 /*yield*/, user.click(action1Item)];
325
- case 3:
326
- // click on action 1 is propagated and calls onClose
327
- _a.sent();
328
- expect(actions[0].onClick).toHaveBeenCalled();
329
- expect(onClose).toHaveBeenCalledTimes(1);
330
- // click on action 2 skips the handler of the action since it is disabled and does not call onClose
331
- return [4 /*yield*/, user.click(action2Item)];
332
- case 4:
333
- // click on action 2 skips the handler of the action since it is disabled and does not call onClose
334
- _a.sent();
335
- expect(actions[1].onClick).not.toHaveBeenCalled();
336
- expect(onClose).toHaveBeenCalledTimes(1);
337
- // click on close action is stopped by the action, event is not propagated and onClose is not called
338
- return [4 /*yield*/, user.click(closeActionItem)];
339
- case 5:
340
- // click on close action is stopped by the action, event is not propagated and onClose is not called
341
- _a.sent();
342
- // FIXME
343
- // expect(closeAction.onClick).toHaveBeenCalled();
344
- expect(onClose).toHaveBeenCalledTimes(3);
345
- // click on filename is equivalent to a click on the overlay, so onClose is called
346
- return [4 /*yield*/, user.click(react_2.screen.getByText(/pdf name/i))];
347
- case 6:
348
- // click on filename is equivalent to a click on the overlay, so onClose is called
349
- _a.sent();
350
- expect(onClose).toHaveBeenCalledTimes(4);
351
- return [2 /*return*/];
352
- }
353
- });
354
- }); });
355
- test('Zoom starts at lowest step', function () { return __awaiter(void 0, void 0, void 0, function () {
356
- var onClose, canvas;
357
- return __generator(this, function (_a) {
358
- switch (_a.label) {
359
- case 0:
360
- onClose = jest.fn();
361
- (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
362
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
363
- });
364
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
365
- case 1:
366
- _a.sent();
367
- canvas = document.querySelector('canvas');
368
- expect(canvas).toBeVisible();
369
- expect(canvas).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
370
- return [2 /*return*/];
371
- }
372
- });
373
- }); });
374
- test('Decrease zoom is disabled when zoom is at lowest point', function () { return __awaiter(void 0, void 0, void 0, function () {
375
- var onClose, user, canvas;
376
- return __generator(this, function (_a) {
377
- switch (_a.label) {
378
- case 0:
379
- onClose = jest.fn();
380
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
381
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
382
- }).user;
383
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
384
- case 1:
385
- _a.sent();
386
- canvas = document.querySelector('canvas');
387
- expect(canvas).toBeVisible();
388
- expect(canvas).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
389
- expect(react_2.screen.getByTestId(zoomOutIcon)).toBeVisible();
390
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
391
- expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
392
- expect(react_2.screen.getByTestId(zoomInIcon)).toBeVisible();
393
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomInIcon))];
394
- case 2:
395
- _a.sent();
396
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
397
- expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).not.toHaveAttribute('disabled', '');
398
- return [4 /*yield*/, user_event_1.default.click(react_2.screen.getByTestId(zoomOutIcon))];
399
- case 3:
400
- _a.sent();
401
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
402
- expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
403
- return [2 /*return*/];
404
- }
405
- });
406
- }); });
407
- test('Increase and decrease zoom change zoom by 1 step per time', function () { return __awaiter(void 0, void 0, void 0, function () {
408
- var onClose, user, step, step;
409
- return __generator(this, function (_a) {
410
- switch (_a.label) {
411
- case 0:
412
- onClose = jest.fn();
413
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
414
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
415
- }).user;
416
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
417
- case 1:
418
- _a.sent();
419
- // eslint-disable-next-line testing-library/no-node-access
420
- expect(document.querySelector('canvas')).toBeVisible();
421
- expect(react_2.screen.getByTestId(zoomOutIcon)).toBeVisible();
422
- expect(react_2.screen.getByTestId(zoomInIcon)).toBeVisible();
423
- // eslint-disable-next-line testing-library/no-node-access
424
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
425
- step = 0;
426
- _a.label = 2;
427
- case 2:
428
- if (!(step < constants_1.ZOOM_STEPS.length - 1)) return [3 /*break*/, 5];
429
- // eslint-disable-next-line no-await-in-loop
430
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomInIcon))];
431
- case 3:
432
- // eslint-disable-next-line no-await-in-loop
433
- _a.sent();
434
- // eslint-disable-next-line testing-library/no-node-access
435
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[step + 1]));
436
- _a.label = 4;
437
- case 4:
438
- step += 1;
439
- return [3 /*break*/, 2];
440
- case 5:
441
- step = constants_1.ZOOM_STEPS.length - 1;
442
- _a.label = 6;
443
- case 6:
444
- if (!(step > 0)) return [3 /*break*/, 9];
445
- // eslint-disable-next-line no-await-in-loop
446
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomOutIcon))];
447
- case 7:
448
- // eslint-disable-next-line no-await-in-loop
449
- _a.sent();
450
- // eslint-disable-next-line testing-library/no-node-access
451
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[step - 1]));
452
- _a.label = 8;
453
- case 8:
454
- step -= 1;
455
- return [3 /*break*/, 6];
456
- case 9: return [2 /*return*/];
457
- }
458
- });
459
- }); });
460
- test('Increase zoom is disabled when zoom is at greatest point', function () { return __awaiter(void 0, void 0, void 0, function () {
461
- var onClose, user, step;
462
- return __generator(this, function (_a) {
463
- switch (_a.label) {
464
- case 0:
465
- onClose = jest.fn();
466
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
467
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
468
- }).user;
469
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
470
- case 1:
471
- _a.sent();
472
- // eslint-disable-next-line testing-library/no-node-access
473
- expect(document.querySelector('canvas')).toBeVisible();
474
- expect(react_2.screen.getByTestId(zoomInIcon)).toBeVisible();
475
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
476
- expect(react_2.screen.getByTestId(zoomInIcon).parentElement).not.toHaveAttribute('disabled', '');
477
- step = 0;
478
- _a.label = 2;
479
- case 2:
480
- if (!(step < constants_1.ZOOM_STEPS.length - 1)) return [3 /*break*/, 5];
481
- // eslint-disable-next-line no-await-in-loop
482
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomInIcon))];
483
- case 3:
484
- // eslint-disable-next-line no-await-in-loop
485
- _a.sent();
486
- _a.label = 4;
487
- case 4:
488
- step += 1;
489
- return [3 /*break*/, 2];
490
- case 5:
491
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
492
- expect(react_2.screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
493
- return [2 /*return*/];
494
- }
495
- });
496
- }); });
497
- test('Fit to width zoom set width of pdf to width of the window', function () { return __awaiter(void 0, void 0, void 0, function () {
498
- var onClose, ref, mockPdfWidth, user;
499
- return __generator(this, function (_a) {
500
- switch (_a.label) {
501
- case 0:
502
- onClose = jest.fn();
503
- ref = react_1.default.createRef();
504
- mockPdfWidth = 1000;
505
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
506
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
507
- }).user;
508
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
509
- case 1:
510
- _a.sent();
511
- // eslint-disable-next-line testing-library/no-node-access
512
- expect(document.querySelector('canvas')).toBeVisible();
513
- expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
514
- expect(react_2.screen.queryByTestId(zoomResetWidthIcon)).not.toBeInTheDocument();
515
- expect(ref.current).not.toBeNull();
516
- jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
517
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
518
- case 2:
519
- _a.sent();
520
- // eslint-disable-next-line testing-library/no-node-access
521
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth));
522
- expect(react_2.screen.getByTestId(zoomResetWidthIcon)).toBeVisible();
523
- expect(react_2.screen.queryByTestId(zoomFitToWidthIcon)).not.toBeInTheDocument();
524
- return [2 /*return*/];
525
- }
526
- });
527
- }); });
528
- test('Reset zoom set width to lowest step', function () { return __awaiter(void 0, void 0, void 0, function () {
529
- var onClose, ref, mockPdfWidth, user;
530
- return __generator(this, function (_a) {
531
- switch (_a.label) {
532
- case 0:
533
- onClose = jest.fn();
534
- ref = react_1.default.createRef();
535
- mockPdfWidth = 1000;
536
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
537
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
538
- }).user;
539
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
540
- case 1:
541
- _a.sent();
542
- // eslint-disable-next-line testing-library/no-node-access
543
- expect(document.querySelector('canvas')).toBeVisible();
544
- expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
545
- expect(react_2.screen.queryByTestId(zoomResetWidthIcon)).not.toBeInTheDocument();
546
- expect(ref.current).not.toBeNull();
547
- jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
548
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
549
- case 2:
550
- _a.sent();
551
- // eslint-disable-next-line testing-library/no-node-access
552
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth));
553
- expect(react_2.screen.getByTestId(zoomResetWidthIcon)).toBeVisible();
554
- expect(react_2.screen.queryByTestId(zoomFitToWidthIcon)).not.toBeInTheDocument();
555
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomResetWidthIcon))];
556
- case 3:
557
- _a.sent();
558
- // eslint-disable-next-line testing-library/no-node-access
559
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
560
- expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
561
- expect(react_2.screen.queryByTestId(zoomResetWidthIcon)).not.toBeInTheDocument();
562
- return [2 /*return*/];
563
- }
564
- });
565
- }); });
566
- 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 () {
567
- var onClose, ref, mockPdfWidth, user;
568
- return __generator(this, function (_a) {
569
- switch (_a.label) {
570
- case 0:
571
- onClose = jest.fn();
572
- ref = react_1.default.createRef();
573
- mockPdfWidth = constants_1.ZOOM_STEPS[0] - 1;
574
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
575
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
576
- }).user;
577
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
578
- case 1:
579
- _a.sent();
580
- // eslint-disable-next-line testing-library/no-node-access
581
- expect(document.querySelector('canvas')).toBeVisible();
582
- expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
583
- jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
584
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
585
- case 2:
586
- _a.sent();
587
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
588
- expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
589
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
590
- expect(react_2.screen.getByTestId(zoomInIcon).parentElement).not.toHaveAttribute('disabled', '');
591
- return [2 /*return*/];
592
- }
593
- });
594
- }); });
595
- 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 () {
596
- var onClose, ref, mockPdfWidth, user;
597
- return __generator(this, function (_a) {
598
- switch (_a.label) {
599
- case 0:
600
- onClose = jest.fn();
601
- ref = react_1.default.createRef();
602
- mockPdfWidth = constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1] + 1;
603
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
604
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
605
- }).user;
606
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
607
- case 1:
608
- _a.sent();
609
- // eslint-disable-next-line testing-library/no-node-access
610
- expect(document.querySelector('canvas')).toBeVisible();
611
- expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
612
- jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
613
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
614
- case 2:
615
- _a.sent();
616
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
617
- expect(react_2.screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
618
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
619
- expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).not.toHaveAttribute('disabled', '');
620
- return [2 /*return*/];
621
- }
622
- });
623
- }); });
624
- test('After fit to width, decrease zoom set zoom to nearest lower zoom step', function () { return __awaiter(void 0, void 0, void 0, function () {
625
- var onClose, ref, stepToReach, mockPdfWidth, user;
626
- return __generator(this, function (_a) {
627
- switch (_a.label) {
628
- case 0:
629
- onClose = jest.fn();
630
- ref = react_1.default.createRef();
631
- stepToReach = 1;
632
- mockPdfWidth = constants_1.ZOOM_STEPS[stepToReach + 1] - 1;
633
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
634
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
635
- }).user;
636
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
637
- case 1:
638
- _a.sent();
639
- // eslint-disable-next-line testing-library/no-node-access
640
- expect(document.querySelector('canvas')).toBeVisible();
641
- expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
642
- jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
643
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
644
- case 2:
645
- _a.sent();
646
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
647
- expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).not.toHaveAttribute('disabled', '');
648
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomOutIcon))];
649
- case 3:
650
- _a.sent();
651
- // eslint-disable-next-line testing-library/no-node-access
652
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[stepToReach]));
653
- return [2 /*return*/];
654
- }
655
- });
656
- }); });
657
- test('After fit to width, increase zoom set zoom to nearest greater zoom step', function () { return __awaiter(void 0, void 0, void 0, function () {
658
- var onClose, ref, stepToReach, mockPdfWidth, user;
659
- return __generator(this, function (_a) {
660
- switch (_a.label) {
661
- case 0:
662
- onClose = jest.fn();
663
- ref = react_1.default.createRef();
664
- stepToReach = 2;
665
- mockPdfWidth = constants_1.ZOOM_STEPS[stepToReach - 1] + 1;
666
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
667
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
668
- }).user;
669
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
670
- case 1:
671
- _a.sent();
672
- // eslint-disable-next-line testing-library/no-node-access
673
- expect(document.querySelector('canvas')).toBeVisible();
674
- expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
675
- jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
676
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
677
- case 2:
678
- _a.sent();
679
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
680
- expect(react_2.screen.getByTestId(zoomInIcon).parentElement).not.toHaveAttribute('disabled', '');
681
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomInIcon))];
682
- case 3:
683
- _a.sent();
684
- // eslint-disable-next-line testing-library/no-node-access
685
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[stepToReach]));
686
- return [2 /*return*/];
687
- }
688
- });
689
- }); });
690
- 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 () {
691
- var onClose, ref, mockPdfWidth, user, getPreviewClientWidthMock;
692
- return __generator(this, function (_a) {
693
- switch (_a.label) {
694
- case 0:
695
- onClose = jest.fn();
696
- ref = react_1.default.createRef();
697
- mockPdfWidth = [1001, 1501, 2001];
698
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
699
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
700
- }).user;
701
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
702
- case 1:
703
- _a.sent();
704
- // eslint-disable-next-line testing-library/no-node-access
705
- expect(document.querySelector('canvas')).toBeVisible();
706
- expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
707
- getPreviewClientWidthMock = jest.spyOn(ref.current, 'clientWidth', 'get');
708
- getPreviewClientWidthMock.mockReturnValueOnce(mockPdfWidth[0]);
709
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
710
- case 2:
711
- _a.sent();
712
- // eslint-disable-next-line testing-library/no-node-access
713
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth[0]));
714
- getPreviewClientWidthMock.mockReturnValueOnce(mockPdfWidth[1]);
715
- // resize window to trigger listener
716
- (0, react_2.act)(function () {
717
- window.resizeTo(mockPdfWidth[1], mockPdfWidth[1]);
718
- });
719
- // eslint-disable-next-line testing-library/no-node-access
720
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth[1]));
721
- return [2 /*return*/];
722
- }
723
- });
724
- }); });
725
- 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 () {
726
- var onClose, ref, user;
727
- return __generator(this, function (_a) {
728
- switch (_a.label) {
729
- case 0:
730
- onClose = jest.fn();
731
- ref = react_1.default.createRef();
732
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
733
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
734
- }).user;
735
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
736
- case 1:
737
- _a.sent();
738
- // eslint-disable-next-line testing-library/no-node-access
739
- expect(document.querySelector('canvas')).toBeVisible();
740
- // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
741
- expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
742
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomOutIcon))];
743
- case 2:
744
- _a.sent();
745
- // eslint-disable-next-line testing-library/no-node-access
746
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
747
- expect(onClose).not.toHaveBeenCalled();
748
- jest
749
- .spyOn(ref.current, 'clientWidth', 'get')
750
- .mockReturnValue(constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1]);
751
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
752
- case 3:
753
- _a.sent();
754
- // eslint-disable-next-line testing-library/no-node-access
755
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1]));
756
- // eslint-disable-next-line testing-library/no-node-access,jest-dom/prefer-enabled-disabled
757
- expect(react_2.screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
758
- return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomInIcon))];
759
- case 4:
760
- _a.sent();
761
- // eslint-disable-next-line testing-library/no-node-access
762
- expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1]));
763
- expect(onClose).not.toHaveBeenCalled();
764
- return [2 /*return*/];
765
- }
766
- });
767
- }); });
768
- describe('Page selector', function () {
769
- test('shows page controller', function () { return __awaiter(void 0, void 0, void 0, function () {
770
- var onClose;
771
- return __generator(this, function (_a) {
772
- switch (_a.label) {
773
- case 0:
774
- onClose = jest.fn();
775
- (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
776
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
777
- });
778
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
779
- case 1:
780
- _a.sent();
781
- // eslint-disable-next-line testing-library/no-node-access
782
- expect(document.querySelector('canvas')).toBeVisible();
783
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
784
- expect(react_2.screen.getByRole('textbox', { name: /current page/i })).toBeVisible();
785
- // mock pdf has 4 pages
786
- expect(react_2.screen.getByText('4')).toBeVisible();
787
- return [2 /*return*/];
788
- }
789
- });
790
- }); });
791
- test('blur is a confirmation event on page input', function () { return __awaiter(void 0, void 0, void 0, function () {
792
- var onClose, user, pageInput;
793
- return __generator(this, function (_a) {
794
- switch (_a.label) {
795
- case 0:
796
- onClose = jest.fn();
797
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
798
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
799
- }).user;
800
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
801
- case 1:
802
- _a.sent();
803
- // eslint-disable-next-line testing-library/no-node-access
804
- expect(document.querySelector('canvas')).toBeVisible();
805
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
806
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
807
- expect(pageInput).toHaveDisplayValue('1');
808
- return [4 /*yield*/, user.clear(pageInput)];
809
- case 2:
810
- _a.sent();
811
- return [4 /*yield*/, user.type(pageInput, '2')];
812
- case 3:
813
- _a.sent();
814
- return [4 /*yield*/, user.tab()];
815
- case 4:
816
- _a.sent();
817
- expect(pageInput).not.toHaveFocus();
818
- expect(pageInput).toHaveDisplayValue('2');
819
- return [2 /*return*/];
820
- }
821
- });
822
- }); });
823
- test('enter key is a confirmation event on page input', function () { return __awaiter(void 0, void 0, void 0, function () {
824
- var onClose, user, pageInput;
825
- return __generator(this, function (_a) {
826
- switch (_a.label) {
827
- case 0:
828
- onClose = jest.fn();
829
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
830
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
831
- }).user;
832
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
833
- case 1:
834
- _a.sent();
835
- // eslint-disable-next-line testing-library/no-node-access
836
- expect(document.querySelector('canvas')).toBeVisible();
837
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
838
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
839
- expect(pageInput).toHaveDisplayValue('1');
840
- return [4 /*yield*/, user.clear(pageInput)];
841
- case 2:
842
- _a.sent();
843
- return [4 /*yield*/, user.type(pageInput, '2')];
844
- case 3:
845
- _a.sent();
846
- return [4 /*yield*/, user.type(pageInput, '{Enter}')];
847
- case 4:
848
- _a.sent();
849
- expect(pageInput).not.toHaveFocus();
850
- expect(pageInput).toHaveDisplayValue('2');
851
- return [2 /*return*/];
852
- }
853
- });
854
- }); });
855
- 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 () {
856
- var onClose, scrollIntoViewFn, user, pageInput;
857
- return __generator(this, function (_a) {
858
- switch (_a.label) {
859
- case 0:
860
- onClose = jest.fn();
861
- scrollIntoViewFn = jest.fn();
862
- window.HTMLElement.prototype.scrollIntoView = scrollIntoViewFn;
863
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
864
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
865
- }).user;
866
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
867
- case 1:
868
- _a.sent();
869
- // eslint-disable-next-line testing-library/no-node-access
870
- expect(document.querySelector('canvas')).toBeVisible();
871
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
872
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
873
- expect(pageInput).toHaveDisplayValue('1');
874
- return [4 /*yield*/, user.clear(pageInput)];
875
- case 2:
876
- _a.sent();
877
- return [4 /*yield*/, user.type(pageInput, '2')];
878
- case 3:
879
- _a.sent();
880
- return [4 /*yield*/, user.click(react_2.screen.getByText(/page/i))];
881
- case 4:
882
- _a.sent();
883
- expect(pageInput).not.toHaveFocus();
884
- expect(pageInput).toHaveDisplayValue('2');
885
- expect(scrollIntoViewFn).toHaveBeenCalledTimes(1);
886
- expect(scrollIntoViewFn.mock.instances[0]).toHaveAttribute('data-page-number', '2');
887
- return [2 /*return*/];
888
- }
889
- });
890
- }); });
891
- 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 () {
892
- var onClose, scrollIntoViewFn, user, pageInput;
893
- return __generator(this, function (_a) {
894
- switch (_a.label) {
895
- case 0:
896
- onClose = jest.fn();
897
- scrollIntoViewFn = jest.fn();
898
- window.HTMLElement.prototype.scrollIntoView = scrollIntoViewFn;
899
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
900
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
901
- }).user;
902
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
903
- case 1:
904
- _a.sent();
905
- // eslint-disable-next-line testing-library/no-node-access
906
- expect(document.querySelector('canvas')).toBeVisible();
907
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
908
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
909
- expect(pageInput).toHaveDisplayValue('1');
910
- return [4 /*yield*/, user.clear(pageInput)];
911
- case 2:
912
- _a.sent();
913
- return [4 /*yield*/, user.type(pageInput, 'invalid')];
914
- case 3:
915
- _a.sent();
916
- return [4 /*yield*/, user.click(react_2.screen.getByText(/page/i))];
917
- case 4:
918
- _a.sent();
919
- expect(pageInput).not.toHaveFocus();
920
- expect(pageInput).toHaveDisplayValue('1');
921
- expect(scrollIntoViewFn).not.toHaveBeenCalled();
922
- return [2 /*return*/];
923
- }
924
- });
925
- }); });
926
- 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 () {
927
- var onClose, pageInput, page2Element;
928
- return __generator(this, function (_a) {
929
- switch (_a.label) {
930
- case 0:
931
- onClose = jest.fn();
932
- (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
933
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
934
- });
935
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
936
- case 1:
937
- _a.sent();
938
- // eslint-disable-next-line testing-library/no-node-access
939
- expect(document.querySelector('canvas')).toBeVisible();
940
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
941
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
942
- expect(pageInput).toHaveDisplayValue('1');
943
- page2Element = document.querySelector('[data-page-number="2"]');
944
- expect(page2Element).not.toBeNull();
945
- return [4 /*yield*/, (0, test_utils_1.triggerObserver)(page2Element)];
946
- case 2:
947
- _a.sent();
948
- expect(pageInput).toHaveDisplayValue('2');
949
- return [2 /*return*/];
950
- }
951
- });
952
- }); });
953
- test('on scroll, if focus is on input, value is updated with current page', function () { return __awaiter(void 0, void 0, void 0, function () {
954
- var onClose, user, pageInput, page2Element;
955
- return __generator(this, function (_a) {
956
- switch (_a.label) {
957
- case 0:
958
- onClose = jest.fn();
959
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
960
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
961
- }).user;
962
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
963
- case 1:
964
- _a.sent();
965
- // eslint-disable-next-line testing-library/no-node-access
966
- expect(document.querySelector('canvas')).toBeVisible();
967
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
968
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
969
- expect(pageInput).toHaveDisplayValue('1');
970
- return [4 /*yield*/, user.clear(pageInput)];
971
- case 2:
972
- _a.sent();
973
- return [4 /*yield*/, user.type(pageInput, '4')];
974
- case 3:
975
- _a.sent();
976
- expect(pageInput).toHaveFocus();
977
- page2Element = document.querySelector('[data-page-number="2"]');
978
- expect(page2Element).not.toBeNull();
979
- return [4 /*yield*/, (0, test_utils_1.triggerObserver)(page2Element)];
980
- case 4:
981
- _a.sent();
982
- expect(pageInput).toHaveDisplayValue('2');
983
- expect(pageInput).toHaveFocus();
984
- return [2 /*return*/];
985
- }
986
- });
987
- }); });
988
- 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 () {
989
- var onClose, user, pageInput;
990
- return __generator(this, function (_a) {
991
- switch (_a.label) {
992
- case 0:
993
- onClose = jest.fn();
994
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
995
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
996
- }).user;
997
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
998
- case 1:
999
- _a.sent();
1000
- // eslint-disable-next-line testing-library/no-node-access
1001
- expect(document.querySelector('canvas')).toBeVisible();
1002
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
1003
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
1004
- expect(pageInput).toHaveDisplayValue('1');
1005
- return [4 /*yield*/, user.clear(pageInput)];
1006
- case 2:
1007
- _a.sent();
1008
- return [4 /*yield*/, user.type(pageInput, '4')];
1009
- case 3:
1010
- _a.sent();
1011
- expect(pageInput).toHaveFocus();
1012
- return [4 /*yield*/, user.keyboard('{Escape}')];
1013
- case 4:
1014
- _a.sent();
1015
- expect(onClose).not.toHaveBeenCalled();
1016
- return [4 /*yield*/, user.keyboard('{Escape}')];
1017
- case 5:
1018
- _a.sent();
1019
- expect(onClose).toHaveBeenCalledTimes(1);
1020
- return [2 /*return*/];
1021
- }
1022
- });
1023
- }); });
1024
- });
1025
- describe('keyboard shortcuts', function () {
1026
- describe('Home and End', function () {
1027
- test('click End go to last page and Home return to the first page', function () { return __awaiter(void 0, void 0, void 0, function () {
1028
- var onClose, user, pageInput;
1029
- return __generator(this, function (_a) {
1030
- switch (_a.label) {
1031
- case 0:
1032
- onClose = jest.fn();
1033
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
1034
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
1035
- }).user;
1036
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
1037
- case 1:
1038
- _a.sent();
1039
- // eslint-disable-next-line testing-library/no-node-access
1040
- expect(document.querySelector('canvas')).toBeVisible();
1041
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
1042
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
1043
- expect(pageInput).toHaveDisplayValue('1');
1044
- return [4 /*yield*/, user.keyboard('{End}')];
1045
- case 2:
1046
- _a.sent();
1047
- expect(pageInput).toHaveDisplayValue('4');
1048
- return [4 /*yield*/, user.keyboard('{Home}')];
1049
- case 3:
1050
- _a.sent();
1051
- expect(pageInput).toHaveDisplayValue('1');
1052
- return [2 /*return*/];
1053
- }
1054
- });
1055
- }); });
1056
- 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 () {
1057
- var onClose, user, pageInput;
1058
- return __generator(this, function (_a) {
1059
- switch (_a.label) {
1060
- case 0:
1061
- onClose = jest.fn();
1062
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
1063
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
1064
- }).user;
1065
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
1066
- case 1:
1067
- _a.sent();
1068
- // eslint-disable-next-line testing-library/no-node-access
1069
- expect(document.querySelector('canvas')).toBeVisible();
1070
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
1071
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
1072
- expect(pageInput).toHaveDisplayValue('1');
1073
- return [4 /*yield*/, user.click(pageInput)];
1074
- case 2:
1075
- _a.sent();
1076
- expect(pageInput).toHaveFocus();
1077
- return [4 /*yield*/, user.keyboard('{End}')];
1078
- case 3:
1079
- _a.sent();
1080
- expect(pageInput).not.toHaveDisplayValue('4');
1081
- expect(pageInput).toHaveDisplayValue('1');
1082
- // remove focus
1083
- return [4 /*yield*/, user.keyboard('{Escape}')];
1084
- case 4:
1085
- // remove focus
1086
- _a.sent();
1087
- expect(pageInput).not.toHaveFocus();
1088
- return [4 /*yield*/, user.keyboard('{End}')];
1089
- case 5:
1090
- _a.sent();
1091
- expect(pageInput).toHaveDisplayValue('4');
1092
- // focus input again
1093
- return [4 /*yield*/, user.click(pageInput)];
1094
- case 6:
1095
- // focus input again
1096
- _a.sent();
1097
- expect(pageInput).toHaveFocus();
1098
- return [4 /*yield*/, user.keyboard('{Home}')];
1099
- case 7:
1100
- _a.sent();
1101
- expect(pageInput).not.toHaveDisplayValue('1');
1102
- expect(pageInput).toHaveDisplayValue('4');
1103
- // remove focus
1104
- return [4 /*yield*/, user.keyboard('{Escape}')];
1105
- case 8:
1106
- // remove focus
1107
- _a.sent();
1108
- expect(pageInput).not.toHaveFocus();
1109
- return [4 /*yield*/, user.keyboard('{Home}')];
1110
- case 9:
1111
- _a.sent();
1112
- expect(pageInput).toHaveDisplayValue('1');
1113
- return [2 /*return*/];
1114
- }
1115
- });
1116
- }); });
1117
- });
1118
- describe('PageUp and PageDown', function () {
1119
- 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 () {
1120
- var onClose, user, pageInput;
1121
- return __generator(this, function (_a) {
1122
- switch (_a.label) {
1123
- case 0:
1124
- onClose = jest.fn();
1125
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
1126
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
1127
- }).user;
1128
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
1129
- case 1:
1130
- _a.sent();
1131
- // eslint-disable-next-line testing-library/no-node-access
1132
- expect(document.querySelector('canvas')).toBeVisible();
1133
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
1134
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
1135
- expect(pageInput).toHaveDisplayValue('1');
1136
- return [4 /*yield*/, user.keyboard('{PageDown}')];
1137
- case 2:
1138
- _a.sent();
1139
- expect(pageInput).toHaveDisplayValue('2');
1140
- return [4 /*yield*/, user.keyboard('{PageDown}')];
1141
- case 3:
1142
- _a.sent();
1143
- expect(pageInput).toHaveDisplayValue('3');
1144
- return [4 /*yield*/, user.keyboard('{PageDown}')];
1145
- case 4:
1146
- _a.sent();
1147
- expect(pageInput).toHaveDisplayValue('4');
1148
- return [4 /*yield*/, user.keyboard('{PageDown}')];
1149
- case 5:
1150
- _a.sent();
1151
- expect(pageInput).toHaveDisplayValue('4');
1152
- return [4 /*yield*/, user.keyboard('{PageUp}')];
1153
- case 6:
1154
- _a.sent();
1155
- expect(pageInput).toHaveDisplayValue('3');
1156
- return [4 /*yield*/, user.keyboard('{PageUp}')];
1157
- case 7:
1158
- _a.sent();
1159
- expect(pageInput).toHaveDisplayValue('2');
1160
- return [4 /*yield*/, user.keyboard('{PageUp}')];
1161
- case 8:
1162
- _a.sent();
1163
- expect(pageInput).toHaveDisplayValue('1');
1164
- return [4 /*yield*/, user.keyboard('{PageUp}')];
1165
- case 9:
1166
- _a.sent();
1167
- expect(pageInput).toHaveDisplayValue('1');
1168
- return [2 /*return*/];
1169
- }
1170
- });
1171
- }); });
1172
- 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 () {
1173
- var onClose, user, pageInput;
1174
- return __generator(this, function (_a) {
1175
- switch (_a.label) {
1176
- case 0:
1177
- onClose = jest.fn();
1178
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
1179
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
1180
- }).user;
1181
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
1182
- case 1:
1183
- _a.sent();
1184
- // eslint-disable-next-line testing-library/no-node-access
1185
- expect(document.querySelector('canvas')).toBeVisible();
1186
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
1187
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
1188
- expect(pageInput).toHaveDisplayValue('1');
1189
- return [4 /*yield*/, user.click(pageInput)];
1190
- case 2:
1191
- _a.sent();
1192
- expect(pageInput).toHaveFocus();
1193
- return [4 /*yield*/, user.keyboard('{PageDown}')];
1194
- case 3:
1195
- _a.sent();
1196
- expect(pageInput).not.toHaveDisplayValue('2');
1197
- expect(pageInput).toHaveDisplayValue('1');
1198
- // remove focus
1199
- return [4 /*yield*/, user.keyboard('{Escape}')];
1200
- case 4:
1201
- // remove focus
1202
- _a.sent();
1203
- expect(pageInput).not.toHaveFocus();
1204
- return [4 /*yield*/, user.keyboard('{PageDown}')];
1205
- case 5:
1206
- _a.sent();
1207
- expect(pageInput).toHaveDisplayValue('2');
1208
- // focus input again
1209
- return [4 /*yield*/, user.click(pageInput)];
1210
- case 6:
1211
- // focus input again
1212
- _a.sent();
1213
- expect(pageInput).toHaveFocus();
1214
- return [4 /*yield*/, user.keyboard('{PageUp}')];
1215
- case 7:
1216
- _a.sent();
1217
- expect(pageInput).not.toHaveDisplayValue('1');
1218
- expect(pageInput).toHaveDisplayValue('2');
1219
- // remove focus
1220
- return [4 /*yield*/, user.keyboard('{Escape}')];
1221
- case 8:
1222
- // remove focus
1223
- _a.sent();
1224
- expect(pageInput).not.toHaveFocus();
1225
- return [4 /*yield*/, user.keyboard('{PageUp}')];
1226
- case 9:
1227
- _a.sent();
1228
- expect(pageInput).toHaveDisplayValue('1');
1229
- return [2 /*return*/];
1230
- }
1231
- });
1232
- }); });
1233
- });
1234
- test('ArrowUp and ArrowDown', function () { return __awaiter(void 0, void 0, void 0, function () {
1235
- var onClose, scrollByFn, user, pageInput;
1236
- return __generator(this, function (_a) {
1237
- switch (_a.label) {
1238
- case 0:
1239
- onClose = jest.fn();
1240
- scrollByFn = jest.fn();
1241
- window.HTMLElement.prototype.scrollBy = scrollByFn;
1242
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
1243
- setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
1244
- }).user;
1245
- return [4 /*yield*/, react_2.screen.findByText(/Loading document preview…/i)];
1246
- case 1:
1247
- _a.sent();
1248
- // eslint-disable-next-line testing-library/no-node-access
1249
- expect(document.querySelector('canvas')).toBeVisible();
1250
- expect(react_2.screen.getByText(/page/i)).toBeVisible();
1251
- pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
1252
- expect(pageInput).toHaveDisplayValue('1');
1253
- return [4 /*yield*/, user.click(pageInput)];
1254
- case 2:
1255
- _a.sent();
1256
- expect(pageInput).toHaveFocus();
1257
- return [4 /*yield*/, user.keyboard('{ArrowDown}')];
1258
- case 3:
1259
- _a.sent();
1260
- expect(scrollByFn).not.toHaveBeenCalled();
1261
- // remove focus
1262
- return [4 /*yield*/, user.keyboard('{Escape}')];
1263
- case 4:
1264
- // remove focus
1265
- _a.sent();
1266
- expect(pageInput).not.toHaveFocus();
1267
- return [4 /*yield*/, user.keyboard('{ArrowDown}')];
1268
- case 5:
1269
- _a.sent();
1270
- expect(scrollByFn).toHaveBeenCalledTimes(1);
1271
- expect(scrollByFn).toHaveBeenCalledWith(0, 40);
1272
- return [4 /*yield*/, user.click(pageInput)];
1273
- case 6:
1274
- _a.sent();
1275
- expect(pageInput).toHaveFocus();
1276
- return [4 /*yield*/, user.keyboard('{ArrowUp}')];
1277
- case 7:
1278
- _a.sent();
1279
- expect(scrollByFn).toHaveBeenCalledTimes(1);
1280
- // remove focus
1281
- return [4 /*yield*/, user.keyboard('{Escape}')];
1282
- case 8:
1283
- // remove focus
1284
- _a.sent();
1285
- expect(pageInput).not.toHaveFocus();
1286
- return [4 /*yield*/, user.keyboard('{ArrowUp}')];
1287
- case 9:
1288
- _a.sent();
1289
- expect(scrollByFn).toHaveBeenCalledTimes(2);
1290
- expect(scrollByFn).toHaveBeenCalledWith(0, -40);
1291
- return [2 /*return*/];
1292
- }
1293
- });
1294
- }); });
1295
- });
1296
- });
1297
- //# sourceMappingURL=PdfPreview.test.js.map