@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.
- package/README.md +5 -5
- package/lib/index.d.ts +6 -0
- package/lib/index.js +28 -0
- package/lib/index.js.map +1 -0
- package/lib/preview/FocusWithin.d.ts +7 -0
- package/lib/preview/FocusWithin.js +87 -0
- package/lib/preview/FocusWithin.js.map +1 -0
- package/lib/preview/Header.d.ts +29 -0
- package/lib/preview/Header.js +44 -0
- package/lib/preview/Header.js.map +1 -0
- package/lib/preview/Header.test.d.ts +1 -0
- package/lib/preview/Header.test.js +143 -0
- package/lib/preview/Header.test.js.map +1 -0
- package/lib/preview/ImagePreview.d.ts +42 -0
- package/lib/preview/ImagePreview.js +116 -0
- package/lib/preview/ImagePreview.js.map +1 -0
- package/lib/preview/ImagePreview.test.d.ts +1 -0
- package/lib/preview/ImagePreview.test.js +161 -0
- package/lib/preview/ImagePreview.test.js.map +1 -0
- package/lib/preview/PdfPreview.d.ts +63 -0
- package/lib/preview/PdfPreview.js +235 -0
- package/lib/preview/PdfPreview.js.map +1 -0
- package/lib/preview/PdfPreview.test.d.ts +1 -0
- package/lib/preview/PdfPreview.test.js +718 -0
- package/lib/preview/PdfPreview.test.js.map +1 -0
- package/lib/preview/PreviewCriteriaAlternativeContent.d.ts +12 -0
- package/lib/preview/PreviewCriteriaAlternativeContent.js +72 -0
- package/lib/preview/PreviewCriteriaAlternativeContent.js.map +1 -0
- package/lib/preview/PreviewManager.d.ts +13 -0
- package/lib/preview/PreviewManager.js +102 -0
- package/lib/preview/PreviewManager.js.map +1 -0
- package/lib/preview/PreviewManager.test.d.ts +1 -0
- package/lib/preview/PreviewManager.test.js +162 -0
- package/lib/preview/PreviewManager.test.js.map +1 -0
- package/lib/preview/PreviewWrapper.d.ts +9 -0
- package/lib/preview/PreviewWrapper.js +42 -0
- package/lib/preview/PreviewWrapper.js.map +1 -0
- package/lib/preview/PreviewWrapper.test.d.ts +1 -0
- package/lib/preview/PreviewWrapper.test.js +85 -0
- package/lib/preview/PreviewWrapper.test.js.map +1 -0
- package/lib/preview/constants.d.ts +1 -0
- package/lib/preview/constants.js +10 -0
- package/lib/preview/constants.js.map +1 -0
- package/lib/utils/test-utils.d.ts +20 -0
- package/lib/utils/test-utils.js +86 -0
- package/lib/utils/test-utils.js.map +1 -0
- package/lib/utils/utils.d.ts +3 -0
- package/lib/utils/utils.js +8 -0
- package/lib/utils/utils.js.map +1 -0
- package/lib-esm/index.d.ts +6 -0
- package/{src/index.ts → lib-esm/index.js} +1 -1
- package/lib-esm/index.js.map +1 -0
- package/lib-esm/preview/FocusWithin.d.ts +7 -0
- package/lib-esm/preview/FocusWithin.js +59 -0
- package/lib-esm/preview/FocusWithin.js.map +1 -0
- package/lib-esm/preview/Header.d.ts +29 -0
- package/lib-esm/preview/Header.js +39 -0
- package/lib-esm/preview/Header.js.map +1 -0
- package/lib-esm/preview/Header.test.d.ts +1 -0
- package/lib-esm/preview/Header.test.js +138 -0
- package/lib-esm/preview/Header.test.js.map +1 -0
- package/lib-esm/preview/ImagePreview.d.ts +42 -0
- package/lib-esm/preview/ImagePreview.js +87 -0
- package/lib-esm/preview/ImagePreview.js.map +1 -0
- package/lib-esm/preview/ImagePreview.test.d.ts +1 -0
- package/lib-esm/preview/ImagePreview.test.js +156 -0
- package/lib-esm/preview/ImagePreview.test.js.map +1 -0
- package/lib-esm/preview/PdfPreview.d.ts +63 -0
- package/lib-esm/preview/PdfPreview.js +206 -0
- package/lib-esm/preview/PdfPreview.js.map +1 -0
- package/lib-esm/preview/PdfPreview.test.d.ts +1 -0
- package/lib-esm/preview/PdfPreview.test.js +713 -0
- package/lib-esm/preview/PdfPreview.test.js.map +1 -0
- package/lib-esm/preview/PreviewCriteriaAlternativeContent.d.ts +12 -0
- package/lib-esm/preview/PreviewCriteriaAlternativeContent.js +42 -0
- package/lib-esm/preview/PreviewCriteriaAlternativeContent.js.map +1 -0
- package/lib-esm/preview/PreviewManager.d.ts +13 -0
- package/lib-esm/preview/PreviewManager.js +75 -0
- package/lib-esm/preview/PreviewManager.js.map +1 -0
- package/lib-esm/preview/PreviewManager.test.d.ts +1 -0
- package/lib-esm/preview/PreviewManager.test.js +137 -0
- package/lib-esm/preview/PreviewManager.test.js.map +1 -0
- package/lib-esm/preview/PreviewWrapper.d.ts +9 -0
- package/lib-esm/preview/PreviewWrapper.js +36 -0
- package/lib-esm/preview/PreviewWrapper.js.map +1 -0
- package/lib-esm/preview/PreviewWrapper.test.d.ts +1 -0
- package/lib-esm/preview/PreviewWrapper.test.js +80 -0
- package/lib-esm/preview/PreviewWrapper.test.js.map +1 -0
- package/lib-esm/preview/constants.d.ts +1 -0
- package/{src/utils.ts → lib-esm/preview/constants.js} +2 -2
- package/lib-esm/preview/constants.js.map +1 -0
- package/lib-esm/utils/test-utils.d.ts +20 -0
- package/lib-esm/utils/test-utils.js +55 -0
- package/lib-esm/utils/test-utils.js.map +1 -0
- package/lib-esm/utils/utils.d.ts +3 -0
- package/{src/types/carbonio-design-system.d.ts → lib-esm/utils/utils.js} +2 -2
- package/lib-esm/utils/utils.js.map +1 -0
- package/package.json +49 -20
- package/babel.config.js +0 -13
- package/src/preview/ContainerWithGap.tsx +0 -11
- package/src/preview/FocusWithin.tsx +0 -76
- package/src/preview/Header.tsx +0 -122
- package/src/preview/ImagePreview.tsx +0 -194
- package/src/preview/PdfPreview.tsx +0 -398
- package/src/preview/PreviewCriteriaAlternativeContent.tsx +0 -94
- package/src/preview/PreviewManager.tsx +0 -75
- 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
|