@zextras/carbonio-ui-preview 0.1.3 → 0.2.0

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 (107) hide show
  1. package/README.md +5 -5
  2. package/lib/index.d.ts +6 -0
  3. package/lib/index.js +28 -0
  4. package/lib/index.js.map +1 -0
  5. package/lib/preview/FocusWithin.d.ts +7 -0
  6. package/lib/preview/FocusWithin.js +87 -0
  7. package/lib/preview/FocusWithin.js.map +1 -0
  8. package/lib/preview/Header.d.ts +29 -0
  9. package/lib/preview/Header.js +44 -0
  10. package/lib/preview/Header.js.map +1 -0
  11. package/lib/preview/Header.test.d.ts +1 -0
  12. package/lib/preview/Header.test.js +143 -0
  13. package/lib/preview/Header.test.js.map +1 -0
  14. package/lib/preview/ImagePreview.d.ts +42 -0
  15. package/lib/preview/ImagePreview.js +116 -0
  16. package/lib/preview/ImagePreview.js.map +1 -0
  17. package/lib/preview/ImagePreview.test.d.ts +1 -0
  18. package/lib/preview/ImagePreview.test.js +161 -0
  19. package/lib/preview/ImagePreview.test.js.map +1 -0
  20. package/lib/preview/PdfPreview.d.ts +63 -0
  21. package/lib/preview/PdfPreview.js +235 -0
  22. package/lib/preview/PdfPreview.js.map +1 -0
  23. package/lib/preview/PdfPreview.test.d.ts +1 -0
  24. package/lib/preview/PdfPreview.test.js +718 -0
  25. package/lib/preview/PdfPreview.test.js.map +1 -0
  26. package/lib/preview/PreviewCriteriaAlternativeContent.d.ts +12 -0
  27. package/lib/preview/PreviewCriteriaAlternativeContent.js +72 -0
  28. package/lib/preview/PreviewCriteriaAlternativeContent.js.map +1 -0
  29. package/lib/preview/PreviewManager.d.ts +13 -0
  30. package/lib/preview/PreviewManager.js +102 -0
  31. package/lib/preview/PreviewManager.js.map +1 -0
  32. package/lib/preview/PreviewManager.test.d.ts +1 -0
  33. package/lib/preview/PreviewManager.test.js +162 -0
  34. package/lib/preview/PreviewManager.test.js.map +1 -0
  35. package/lib/preview/PreviewWrapper.d.ts +9 -0
  36. package/lib/preview/PreviewWrapper.js +42 -0
  37. package/lib/preview/PreviewWrapper.js.map +1 -0
  38. package/lib/preview/PreviewWrapper.test.d.ts +1 -0
  39. package/lib/preview/PreviewWrapper.test.js +85 -0
  40. package/lib/preview/PreviewWrapper.test.js.map +1 -0
  41. package/lib/preview/constants.d.ts +1 -0
  42. package/lib/preview/constants.js +10 -0
  43. package/lib/preview/constants.js.map +1 -0
  44. package/lib/utils/test-utils.d.ts +20 -0
  45. package/lib/utils/test-utils.js +86 -0
  46. package/lib/utils/test-utils.js.map +1 -0
  47. package/lib/utils/utils.d.ts +3 -0
  48. package/lib/utils/utils.js +8 -0
  49. package/lib/utils/utils.js.map +1 -0
  50. package/lib-esm/index.d.ts +6 -0
  51. package/{src/index.ts → lib-esm/index.js} +1 -1
  52. package/lib-esm/index.js.map +1 -0
  53. package/lib-esm/preview/FocusWithin.d.ts +7 -0
  54. package/lib-esm/preview/FocusWithin.js +59 -0
  55. package/lib-esm/preview/FocusWithin.js.map +1 -0
  56. package/lib-esm/preview/Header.d.ts +29 -0
  57. package/lib-esm/preview/Header.js +39 -0
  58. package/lib-esm/preview/Header.js.map +1 -0
  59. package/lib-esm/preview/Header.test.d.ts +1 -0
  60. package/lib-esm/preview/Header.test.js +138 -0
  61. package/lib-esm/preview/Header.test.js.map +1 -0
  62. package/lib-esm/preview/ImagePreview.d.ts +42 -0
  63. package/lib-esm/preview/ImagePreview.js +87 -0
  64. package/lib-esm/preview/ImagePreview.js.map +1 -0
  65. package/lib-esm/preview/ImagePreview.test.d.ts +1 -0
  66. package/lib-esm/preview/ImagePreview.test.js +156 -0
  67. package/lib-esm/preview/ImagePreview.test.js.map +1 -0
  68. package/lib-esm/preview/PdfPreview.d.ts +63 -0
  69. package/lib-esm/preview/PdfPreview.js +206 -0
  70. package/lib-esm/preview/PdfPreview.js.map +1 -0
  71. package/lib-esm/preview/PdfPreview.test.d.ts +1 -0
  72. package/lib-esm/preview/PdfPreview.test.js +713 -0
  73. package/lib-esm/preview/PdfPreview.test.js.map +1 -0
  74. package/lib-esm/preview/PreviewCriteriaAlternativeContent.d.ts +12 -0
  75. package/lib-esm/preview/PreviewCriteriaAlternativeContent.js +42 -0
  76. package/lib-esm/preview/PreviewCriteriaAlternativeContent.js.map +1 -0
  77. package/lib-esm/preview/PreviewManager.d.ts +13 -0
  78. package/lib-esm/preview/PreviewManager.js +75 -0
  79. package/lib-esm/preview/PreviewManager.js.map +1 -0
  80. package/lib-esm/preview/PreviewManager.test.d.ts +1 -0
  81. package/lib-esm/preview/PreviewManager.test.js +137 -0
  82. package/lib-esm/preview/PreviewManager.test.js.map +1 -0
  83. package/lib-esm/preview/PreviewWrapper.d.ts +9 -0
  84. package/lib-esm/preview/PreviewWrapper.js +36 -0
  85. package/lib-esm/preview/PreviewWrapper.js.map +1 -0
  86. package/lib-esm/preview/PreviewWrapper.test.d.ts +1 -0
  87. package/lib-esm/preview/PreviewWrapper.test.js +80 -0
  88. package/lib-esm/preview/PreviewWrapper.test.js.map +1 -0
  89. package/lib-esm/preview/constants.d.ts +1 -0
  90. package/{src/utils.ts → lib-esm/preview/constants.js} +2 -2
  91. package/lib-esm/preview/constants.js.map +1 -0
  92. package/lib-esm/utils/test-utils.d.ts +20 -0
  93. package/lib-esm/utils/test-utils.js +55 -0
  94. package/lib-esm/utils/test-utils.js.map +1 -0
  95. package/lib-esm/utils/utils.d.ts +3 -0
  96. package/{src/types/carbonio-design-system.d.ts → lib-esm/utils/utils.js} +2 -2
  97. package/lib-esm/utils/utils.js.map +1 -0
  98. package/package.json +49 -20
  99. package/babel.config.js +0 -13
  100. package/src/preview/ContainerWithGap.tsx +0 -11
  101. package/src/preview/FocusWithin.tsx +0 -76
  102. package/src/preview/Header.tsx +0 -122
  103. package/src/preview/ImagePreview.tsx +0 -194
  104. package/src/preview/PdfPreview.tsx +0 -398
  105. package/src/preview/PreviewCriteriaAlternativeContent.tsx +0 -94
  106. package/src/preview/PreviewManager.tsx +0 -75
  107. package/src/preview/PreviewWrapper.tsx +0 -20
@@ -0,0 +1,718 @@
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 (_) 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 test_utils_1 = require("../utils/test-utils");
51
+ var constants_1 = require("./constants");
52
+ var PdfPreview_1 = require("./PdfPreview");
53
+ var pdfFile = (0, test_utils_1.loadPDF)('./__mocks__/_pdf.pdf');
54
+ var zoomInIcon = 'icon: Plus';
55
+ var zoomOutIcon = 'icon: Minus';
56
+ var zoomFitToWidthIcon = 'icon: MaximizeOutline';
57
+ var zoomResetWidthIcon = 'icon: MinimizeOutline';
58
+ jest.useRealTimers();
59
+ describe('Pdf Preview', function () {
60
+ test('Render a pdf document', function () { return __awaiter(void 0, void 0, void 0, function () {
61
+ var onClose, pageElement;
62
+ return __generator(this, function (_a) {
63
+ switch (_a.label) {
64
+ case 0:
65
+ onClose = jest.fn();
66
+ (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
67
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
68
+ });
69
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
70
+ case 1:
71
+ _a.sent();
72
+ expect(react_2.screen.queryByText(/loading pdf/i)).not.toBeInTheDocument();
73
+ expect(react_2.screen.getByTestId('pdf-preview-container')).toBeInTheDocument();
74
+ pageElement = document.querySelector('[data-page-number="1"]');
75
+ expect(pageElement).toBeDefined();
76
+ expect(pageElement).not.toBeNull();
77
+ expect(pageElement).toBeInTheDocument();
78
+ return [2 /*return*/];
79
+ }
80
+ });
81
+ }); });
82
+ test('If show is false does not render the pdf', function () { return __awaiter(void 0, void 0, void 0, function () {
83
+ var onClose;
84
+ return __generator(this, function (_a) {
85
+ onClose = jest.fn();
86
+ (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: false, src: pdfFile.dataURI, onClose: onClose }), {
87
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
88
+ });
89
+ expect(react_2.screen.queryByText(/loading pdf/i)).not.toBeInTheDocument();
90
+ expect(react_2.screen.queryByTestId('pdf-preview-container')).not.toBeInTheDocument();
91
+ return [2 /*return*/];
92
+ });
93
+ }); });
94
+ test('If pdf is not valid render an error message', function () { return __awaiter(void 0, void 0, void 0, function () {
95
+ var onClose;
96
+ return __generator(this, function (_a) {
97
+ switch (_a.label) {
98
+ case 0:
99
+ onClose = jest.fn();
100
+ (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: "invalid-pdf.pdf", onClose: onClose }), {
101
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
102
+ });
103
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
104
+ case 1:
105
+ _a.sent();
106
+ return [4 /*yield*/, react_2.screen.findByText(/Failed to load PDF file/i)];
107
+ case 2:
108
+ _a.sent();
109
+ expect(react_2.screen.queryByText(/loading pdf/i)).not.toBeInTheDocument();
110
+ expect(react_2.screen.getByTestId('pdf-preview-container')).toBeInTheDocument();
111
+ return [2 /*return*/];
112
+ }
113
+ });
114
+ }); });
115
+ test('If fallback is requested, does not render the pdf but the fallback instead', function () { return __awaiter(void 0, void 0, void 0, function () {
116
+ var onClose;
117
+ return __generator(this, function (_a) {
118
+ onClose = jest.fn();
119
+ (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, useFallback: true, openSrc: "open-src" }), {
120
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
121
+ });
122
+ expect(react_2.screen.getByText(/This item cannot be displayed/i)).toBeVisible();
123
+ expect(react_2.screen.getByText(/The file size exceeds the limit allowed and cannot be displayed/i)).toBeVisible();
124
+ expect(react_2.screen.getByText(/Please, download it or open it in a separate tab/i)).toBeVisible();
125
+ expect(react_2.screen.getByRole('button', { name: /download/i })).toBeVisible();
126
+ expect(react_2.screen.getByRole('button', { name: /open/i })).toBeVisible();
127
+ return [2 /*return*/];
128
+ });
129
+ }); });
130
+ test('Render a custom fallback', function () { return __awaiter(void 0, void 0, void 0, function () {
131
+ var onClose, CustomContent;
132
+ return __generator(this, function (_a) {
133
+ onClose = jest.fn();
134
+ CustomContent = react_1.default.createElement("div", null, "Custom content");
135
+ (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" }), {
136
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
137
+ });
138
+ expect(react_2.screen.queryByText(/This item cannot be displayed/i)).not.toBeInTheDocument();
139
+ expect(react_2.screen.queryByText(/The file size exceeds the limit allowed and cannot be displayed/i)).not.toBeInTheDocument();
140
+ expect(react_2.screen.queryByText(/Please, download it or open it in a separate tab/i)).not.toBeInTheDocument();
141
+ expect(react_2.screen.queryByRole('button', { name: /download/i })).not.toBeInTheDocument();
142
+ expect(react_2.screen.queryByRole('button', { name: /open/i })).not.toBeInTheDocument();
143
+ expect(react_2.screen.getByText(/custom content/i)).toBeVisible();
144
+ return [2 /*return*/];
145
+ });
146
+ }); });
147
+ test('Additional data are visible', function () { return __awaiter(void 0, void 0, void 0, function () {
148
+ var onClose;
149
+ return __generator(this, function (_a) {
150
+ switch (_a.label) {
151
+ case 0:
152
+ onClose = jest.fn();
153
+ (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" }), {
154
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
155
+ });
156
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
157
+ case 1:
158
+ _a.sent();
159
+ expect(react_2.screen.queryByText(/loading pdf/i)).not.toBeInTheDocument();
160
+ expect(react_2.screen.getByText(/file name/i)).toBeVisible();
161
+ expect(react_2.screen.getByText(/pdf.*18KB/i)).toBeVisible();
162
+ return [2 /*return*/];
163
+ }
164
+ });
165
+ }); });
166
+ test('Escape key close the preview', function () { return __awaiter(void 0, void 0, void 0, function () {
167
+ var onClose, user;
168
+ return __generator(this, function (_a) {
169
+ switch (_a.label) {
170
+ case 0:
171
+ onClose = jest.fn();
172
+ user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
173
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
174
+ }).user;
175
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
176
+ case 1:
177
+ _a.sent();
178
+ expect(react_2.screen.queryByText(/loading pdf/i)).not.toBeInTheDocument();
179
+ return [4 /*yield*/, user.keyboard('{Escape}')];
180
+ case 2:
181
+ _a.sent();
182
+ expect(onClose).toHaveBeenCalled();
183
+ return [2 /*return*/];
184
+ }
185
+ });
186
+ }); });
187
+ test('Close action calls onClose if no click action is provided', function () { return __awaiter(void 0, void 0, void 0, function () {
188
+ var onClose, closeAction, user, closeActionElement;
189
+ return __generator(this, function (_a) {
190
+ switch (_a.label) {
191
+ case 0:
192
+ onClose = jest.fn(function (e) {
193
+ e.preventDefault();
194
+ });
195
+ closeAction = {
196
+ id: 'closeAction',
197
+ icon: 'Activity',
198
+ tooltipLabel: 'Custom close action'
199
+ };
200
+ user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, closeAction: closeAction }), {
201
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
202
+ }).user;
203
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
204
+ case 1:
205
+ _a.sent();
206
+ expect(react_2.screen.queryByText(/loading pdf/i)).not.toBeInTheDocument();
207
+ closeActionElement = react_2.screen.getByTestId('icon: Activity');
208
+ expect(closeActionElement).toBeVisible();
209
+ return [4 /*yield*/, user.hover(closeActionElement)];
210
+ case 2:
211
+ _a.sent();
212
+ return [4 /*yield*/, react_2.screen.findByText(/custom close action/i)];
213
+ case 3:
214
+ _a.sent();
215
+ return [4 /*yield*/, user.click(closeActionElement)];
216
+ case 4:
217
+ _a.sent();
218
+ expect(onClose).toHaveBeenCalledTimes(1);
219
+ return [2 /*return*/];
220
+ }
221
+ });
222
+ }); });
223
+ 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 () {
224
+ var onClose, actions, closeAction, user, action1Item, action2Item, closeActionItem;
225
+ return __generator(this, function (_a) {
226
+ switch (_a.label) {
227
+ case 0:
228
+ onClose = jest.fn();
229
+ actions = [
230
+ {
231
+ id: 'action1',
232
+ icon: 'Activity',
233
+ onClick: jest.fn()
234
+ },
235
+ {
236
+ id: 'action2',
237
+ icon: 'People',
238
+ onClick: jest.fn(function (ev) {
239
+ ev.preventDefault();
240
+ }),
241
+ disabled: true
242
+ }
243
+ ];
244
+ closeAction = {
245
+ id: 'closeAction',
246
+ icon: 'Close',
247
+ onClick: jest.fn(function (ev) {
248
+ ev.preventDefault();
249
+ })
250
+ };
251
+ 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 }), {
252
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
253
+ }).user;
254
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
255
+ case 1:
256
+ _a.sent();
257
+ return [4 /*yield*/, (0, react_2.waitFor)(function () {
258
+ // eslint-disable-next-line testing-library/no-node-access
259
+ return expect(document.querySelector('[data-page-number="1"]')).toBeInTheDocument();
260
+ })];
261
+ case 2:
262
+ _a.sent();
263
+ action1Item = react_2.screen.getByTestId('icon: Activity');
264
+ action2Item = react_2.screen.getByTestId('icon: People');
265
+ closeActionItem = react_2.screen.getByTestId('icon: Close');
266
+ expect(action1Item).toBeVisible();
267
+ expect(action2Item).toBeVisible();
268
+ // eslint-disable-next-line testing-library/no-node-access
269
+ expect(action2Item.parentElement).toHaveAttribute('disabled');
270
+ expect(closeActionItem).toBeVisible();
271
+ // click on action 1 is propagated and calls onClose
272
+ return [4 /*yield*/, user.click(action1Item)];
273
+ case 3:
274
+ // click on action 1 is propagated and calls onClose
275
+ _a.sent();
276
+ expect(actions[0].onClick).toHaveBeenCalled();
277
+ expect(onClose).toHaveBeenCalledTimes(1);
278
+ // click on action 2 skips the handler of the action since it is disabled and do not calls onClose
279
+ return [4 /*yield*/, user.click(action2Item)];
280
+ case 4:
281
+ // click on action 2 skips the handler of the action since it is disabled and do not calls onClose
282
+ _a.sent();
283
+ expect(actions[1].onClick).not.toHaveBeenCalled();
284
+ expect(onClose).toHaveBeenCalledTimes(1);
285
+ // click on close action is stopped by the action, event is not propagated and onClose is not called
286
+ return [4 /*yield*/, user.click(closeActionItem)];
287
+ case 5:
288
+ // click on close action is stopped by the action, event is not propagated and onClose is not called
289
+ _a.sent();
290
+ // FIXME
291
+ // expect(closeAction.onClick).toHaveBeenCalled();
292
+ expect(onClose).toHaveBeenCalledTimes(3);
293
+ // click on filename is equivalent to a click on the overlay, so onClose is called
294
+ return [4 /*yield*/, user.click(react_2.screen.getByText(/pdf name/i))];
295
+ case 6:
296
+ // click on filename is equivalent to a click on the overlay, so onClose is called
297
+ _a.sent();
298
+ expect(onClose).toHaveBeenCalledTimes(4);
299
+ return [2 /*return*/];
300
+ }
301
+ });
302
+ }); });
303
+ test('Zoom starts at lowest step', function () { return __awaiter(void 0, void 0, void 0, function () {
304
+ var onClose, user, canvas;
305
+ return __generator(this, function (_a) {
306
+ switch (_a.label) {
307
+ case 0:
308
+ onClose = jest.fn();
309
+ user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
310
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
311
+ }).user;
312
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
313
+ case 1:
314
+ _a.sent();
315
+ canvas = document.querySelector('canvas');
316
+ expect(canvas).toBeVisible();
317
+ expect(canvas).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
318
+ return [2 /*return*/];
319
+ }
320
+ });
321
+ }); });
322
+ test('Decrease zoom is disabled when zoom is at lowest point', function () { return __awaiter(void 0, void 0, void 0, function () {
323
+ var onClose, user, canvas;
324
+ return __generator(this, function (_a) {
325
+ switch (_a.label) {
326
+ case 0:
327
+ onClose = jest.fn();
328
+ user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
329
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
330
+ }).user;
331
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
332
+ case 1:
333
+ _a.sent();
334
+ canvas = document.querySelector('canvas');
335
+ expect(canvas).toBeVisible();
336
+ expect(canvas).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
337
+ expect(react_2.screen.getByTestId(zoomOutIcon)).toBeVisible();
338
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
339
+ expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
340
+ expect(react_2.screen.getByTestId(zoomInIcon)).toBeVisible();
341
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomInIcon))];
342
+ case 2:
343
+ _a.sent();
344
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
345
+ expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).not.toHaveAttribute('disabled', '');
346
+ return [4 /*yield*/, user_event_1.default.click(react_2.screen.getByTestId(zoomOutIcon))];
347
+ case 3:
348
+ _a.sent();
349
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
350
+ expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
351
+ return [2 /*return*/];
352
+ }
353
+ });
354
+ }); });
355
+ test('Increase and decrease zoom change zoom by 1 step per time', function () { return __awaiter(void 0, void 0, void 0, function () {
356
+ var onClose, user, step, step;
357
+ return __generator(this, function (_a) {
358
+ switch (_a.label) {
359
+ case 0:
360
+ onClose = jest.fn();
361
+ user = (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
+ }).user;
364
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
365
+ case 1:
366
+ _a.sent();
367
+ // eslint-disable-next-line testing-library/no-node-access
368
+ expect(document.querySelector('canvas')).toBeVisible();
369
+ expect(react_2.screen.getByTestId(zoomOutIcon)).toBeVisible();
370
+ expect(react_2.screen.getByTestId(zoomInIcon)).toBeVisible();
371
+ // eslint-disable-next-line testing-library/no-node-access
372
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
373
+ step = 0;
374
+ _a.label = 2;
375
+ case 2:
376
+ if (!(step < constants_1.ZOOM_STEPS.length - 1)) return [3 /*break*/, 5];
377
+ // eslint-disable-next-line no-await-in-loop
378
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomInIcon))];
379
+ case 3:
380
+ // eslint-disable-next-line no-await-in-loop
381
+ _a.sent();
382
+ // eslint-disable-next-line testing-library/no-node-access
383
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[step + 1]));
384
+ _a.label = 4;
385
+ case 4:
386
+ step += 1;
387
+ return [3 /*break*/, 2];
388
+ case 5:
389
+ step = constants_1.ZOOM_STEPS.length - 1;
390
+ _a.label = 6;
391
+ case 6:
392
+ if (!(step > 0)) return [3 /*break*/, 9];
393
+ // eslint-disable-next-line no-await-in-loop
394
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomOutIcon))];
395
+ case 7:
396
+ // eslint-disable-next-line no-await-in-loop
397
+ _a.sent();
398
+ // eslint-disable-next-line testing-library/no-node-access
399
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[step - 1]));
400
+ _a.label = 8;
401
+ case 8:
402
+ step -= 1;
403
+ return [3 /*break*/, 6];
404
+ case 9: return [2 /*return*/];
405
+ }
406
+ });
407
+ }); });
408
+ test('Increase zoom is disabled when zoom is at greatest point', function () { return __awaiter(void 0, void 0, void 0, function () {
409
+ var onClose, user, step;
410
+ return __generator(this, function (_a) {
411
+ switch (_a.label) {
412
+ case 0:
413
+ onClose = jest.fn();
414
+ user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
415
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
416
+ }).user;
417
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
418
+ case 1:
419
+ _a.sent();
420
+ // eslint-disable-next-line testing-library/no-node-access
421
+ expect(document.querySelector('canvas')).toBeVisible();
422
+ expect(react_2.screen.getByTestId(zoomInIcon)).toBeVisible();
423
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
424
+ expect(react_2.screen.getByTestId(zoomInIcon).parentElement).not.toHaveAttribute('disabled', '');
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
+ _a.label = 4;
435
+ case 4:
436
+ step += 1;
437
+ return [3 /*break*/, 2];
438
+ case 5:
439
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
440
+ expect(react_2.screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
441
+ return [2 /*return*/];
442
+ }
443
+ });
444
+ }); });
445
+ test('Fit to width zoom set width of pdf to width of the window', function () { return __awaiter(void 0, void 0, void 0, function () {
446
+ var onClose, ref, mockPdfWidth, _a, user, container;
447
+ return __generator(this, function (_b) {
448
+ switch (_b.label) {
449
+ case 0:
450
+ onClose = jest.fn();
451
+ ref = react_1.default.createRef();
452
+ mockPdfWidth = 1000;
453
+ _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
454
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
455
+ }), user = _a.user, container = _a.container;
456
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
457
+ case 1:
458
+ _b.sent();
459
+ // eslint-disable-next-line testing-library/no-node-access
460
+ expect(document.querySelector('canvas')).toBeVisible();
461
+ expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
462
+ expect(react_2.screen.queryByTestId(zoomResetWidthIcon)).not.toBeInTheDocument();
463
+ expect(ref.current).not.toBeNull();
464
+ jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
465
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
466
+ case 2:
467
+ _b.sent();
468
+ // eslint-disable-next-line testing-library/no-node-access
469
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth));
470
+ expect(react_2.screen.getByTestId(zoomResetWidthIcon)).toBeVisible();
471
+ expect(react_2.screen.queryByTestId(zoomFitToWidthIcon)).not.toBeInTheDocument();
472
+ return [2 /*return*/];
473
+ }
474
+ });
475
+ }); });
476
+ test('Reset zoom set width to lowest step', function () { return __awaiter(void 0, void 0, void 0, function () {
477
+ var onClose, ref, mockPdfWidth, _a, user, container;
478
+ return __generator(this, function (_b) {
479
+ switch (_b.label) {
480
+ case 0:
481
+ onClose = jest.fn();
482
+ ref = react_1.default.createRef();
483
+ mockPdfWidth = 1000;
484
+ _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
485
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
486
+ }), user = _a.user, container = _a.container;
487
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
488
+ case 1:
489
+ _b.sent();
490
+ // eslint-disable-next-line testing-library/no-node-access
491
+ expect(document.querySelector('canvas')).toBeVisible();
492
+ expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
493
+ expect(react_2.screen.queryByTestId(zoomResetWidthIcon)).not.toBeInTheDocument();
494
+ expect(ref.current).not.toBeNull();
495
+ jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
496
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
497
+ case 2:
498
+ _b.sent();
499
+ // eslint-disable-next-line testing-library/no-node-access
500
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth));
501
+ expect(react_2.screen.getByTestId(zoomResetWidthIcon)).toBeVisible();
502
+ expect(react_2.screen.queryByTestId(zoomFitToWidthIcon)).not.toBeInTheDocument();
503
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomResetWidthIcon))];
504
+ case 3:
505
+ _b.sent();
506
+ // eslint-disable-next-line testing-library/no-node-access
507
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
508
+ expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
509
+ expect(react_2.screen.queryByTestId(zoomResetWidthIcon)).not.toBeInTheDocument();
510
+ return [2 /*return*/];
511
+ }
512
+ });
513
+ }); });
514
+ 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 () {
515
+ var onClose, ref, mockPdfWidth, _a, user, container;
516
+ return __generator(this, function (_b) {
517
+ switch (_b.label) {
518
+ case 0:
519
+ onClose = jest.fn();
520
+ ref = react_1.default.createRef();
521
+ mockPdfWidth = constants_1.ZOOM_STEPS[0] - 1;
522
+ _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
523
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
524
+ }), user = _a.user, container = _a.container;
525
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
526
+ case 1:
527
+ _b.sent();
528
+ // eslint-disable-next-line testing-library/no-node-access
529
+ expect(document.querySelector('canvas')).toBeVisible();
530
+ expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
531
+ jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
532
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
533
+ case 2:
534
+ _b.sent();
535
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
536
+ expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
537
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
538
+ expect(react_2.screen.getByTestId(zoomInIcon).parentElement).not.toHaveAttribute('disabled', '');
539
+ return [2 /*return*/];
540
+ }
541
+ });
542
+ }); });
543
+ 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 () {
544
+ var onClose, ref, mockPdfWidth, _a, user, container;
545
+ return __generator(this, function (_b) {
546
+ switch (_b.label) {
547
+ case 0:
548
+ onClose = jest.fn();
549
+ ref = react_1.default.createRef();
550
+ mockPdfWidth = constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1] + 1;
551
+ _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
552
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
553
+ }), user = _a.user, container = _a.container;
554
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
555
+ case 1:
556
+ _b.sent();
557
+ // eslint-disable-next-line testing-library/no-node-access
558
+ expect(document.querySelector('canvas')).toBeVisible();
559
+ expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
560
+ jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
561
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
562
+ case 2:
563
+ _b.sent();
564
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
565
+ expect(react_2.screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
566
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
567
+ expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).not.toHaveAttribute('disabled', '');
568
+ return [2 /*return*/];
569
+ }
570
+ });
571
+ }); });
572
+ test('After fit to width, decrease zoom set zoom to nearest lower zoom step', function () { return __awaiter(void 0, void 0, void 0, function () {
573
+ var onClose, ref, stepToReach, mockPdfWidth, _a, user, container;
574
+ return __generator(this, function (_b) {
575
+ switch (_b.label) {
576
+ case 0:
577
+ onClose = jest.fn();
578
+ ref = react_1.default.createRef();
579
+ stepToReach = 1;
580
+ mockPdfWidth = constants_1.ZOOM_STEPS[stepToReach + 1] - 1;
581
+ _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
582
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
583
+ }), user = _a.user, container = _a.container;
584
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
585
+ case 1:
586
+ _b.sent();
587
+ // eslint-disable-next-line testing-library/no-node-access
588
+ expect(document.querySelector('canvas')).toBeVisible();
589
+ expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
590
+ jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
591
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
592
+ case 2:
593
+ _b.sent();
594
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
595
+ expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).not.toHaveAttribute('disabled', '');
596
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomOutIcon))];
597
+ case 3:
598
+ _b.sent();
599
+ // eslint-disable-next-line testing-library/no-node-access
600
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[stepToReach]));
601
+ return [2 /*return*/];
602
+ }
603
+ });
604
+ }); });
605
+ test('After fit to width, increase zoom set zoom to nearest greater zoom step', function () { return __awaiter(void 0, void 0, void 0, function () {
606
+ var onClose, ref, stepToReach, mockPdfWidth, _a, user, container;
607
+ return __generator(this, function (_b) {
608
+ switch (_b.label) {
609
+ case 0:
610
+ onClose = jest.fn();
611
+ ref = react_1.default.createRef();
612
+ stepToReach = 2;
613
+ mockPdfWidth = constants_1.ZOOM_STEPS[stepToReach - 1] + 1;
614
+ _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
615
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
616
+ }), user = _a.user, container = _a.container;
617
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
618
+ case 1:
619
+ _b.sent();
620
+ // eslint-disable-next-line testing-library/no-node-access
621
+ expect(document.querySelector('canvas')).toBeVisible();
622
+ expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
623
+ jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
624
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
625
+ case 2:
626
+ _b.sent();
627
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
628
+ expect(react_2.screen.getByTestId(zoomInIcon).parentElement).not.toHaveAttribute('disabled', '');
629
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomInIcon))];
630
+ case 3:
631
+ _b.sent();
632
+ // eslint-disable-next-line testing-library/no-node-access
633
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[stepToReach]));
634
+ return [2 /*return*/];
635
+ }
636
+ });
637
+ }); });
638
+ 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 () {
639
+ var onClose, ref, mockPdfWidth, _a, user, container, getPreviewClientWidthMock;
640
+ return __generator(this, function (_b) {
641
+ switch (_b.label) {
642
+ case 0:
643
+ onClose = jest.fn();
644
+ ref = react_1.default.createRef();
645
+ mockPdfWidth = [1001, 1501, 2001];
646
+ _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
647
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
648
+ }), user = _a.user, container = _a.container;
649
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
650
+ case 1:
651
+ _b.sent();
652
+ // eslint-disable-next-line testing-library/no-node-access
653
+ expect(document.querySelector('canvas')).toBeVisible();
654
+ expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
655
+ getPreviewClientWidthMock = jest.spyOn(ref.current, 'clientWidth', 'get');
656
+ getPreviewClientWidthMock.mockReturnValueOnce(mockPdfWidth[0]);
657
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
658
+ case 2:
659
+ _b.sent();
660
+ // eslint-disable-next-line testing-library/no-node-access
661
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth[0]));
662
+ getPreviewClientWidthMock.mockReturnValueOnce(mockPdfWidth[1]);
663
+ // resize window to trigger listener
664
+ (0, react_2.act)(function () {
665
+ window.resizeTo(mockPdfWidth[1], mockPdfWidth[1]);
666
+ });
667
+ // eslint-disable-next-line testing-library/no-node-access
668
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth[1]));
669
+ return [2 /*return*/];
670
+ }
671
+ });
672
+ }); });
673
+ 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 () {
674
+ var onClose, ref, mockPdfWidth, _a, user, container;
675
+ return __generator(this, function (_b) {
676
+ switch (_b.label) {
677
+ case 0:
678
+ onClose = jest.fn();
679
+ ref = react_1.default.createRef();
680
+ mockPdfWidth = [1001, 1501, 2001];
681
+ _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
682
+ setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
683
+ }), user = _a.user, container = _a.container;
684
+ return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
685
+ case 1:
686
+ _b.sent();
687
+ // eslint-disable-next-line testing-library/no-node-access
688
+ expect(document.querySelector('canvas')).toBeVisible();
689
+ // eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
690
+ expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
691
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomOutIcon))];
692
+ case 2:
693
+ _b.sent();
694
+ // eslint-disable-next-line testing-library/no-node-access
695
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
696
+ expect(onClose).not.toHaveBeenCalled();
697
+ jest
698
+ .spyOn(ref.current, 'clientWidth', 'get')
699
+ .mockReturnValue(constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1]);
700
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
701
+ case 3:
702
+ _b.sent();
703
+ // eslint-disable-next-line testing-library/no-node-access
704
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1]));
705
+ // eslint-disable-next-line testing-library/no-node-access,jest-dom/prefer-enabled-disabled
706
+ expect(react_2.screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
707
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomInIcon))];
708
+ case 4:
709
+ _b.sent();
710
+ // eslint-disable-next-line testing-library/no-node-access
711
+ expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1]));
712
+ expect(onClose).not.toHaveBeenCalled();
713
+ return [2 /*return*/];
714
+ }
715
+ });
716
+ }); });
717
+ });
718
+ //# sourceMappingURL=PdfPreview.test.js.map