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