@multiplatform.one/test-utils 7.83.1 → 7.83.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,382 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var index_exports = {};
26
+ __export(index_exports, {
27
+ TestProviders: () => TestProviders,
28
+ act: () => import_react2.act,
29
+ afterEach: () => import_vitest.afterEach,
30
+ beforeEach: () => import_vitest.beforeEach,
31
+ createFixture: () => createFixture,
32
+ createMemoryCookies: () => createMemoryCookies,
33
+ describe: () => import_vitest.describe,
34
+ expect: () => import_vitest.expect,
35
+ findTextInContainer: () => findTextInContainer,
36
+ fireEvent: () => import_react2.fireEvent,
37
+ it: () => import_vitest.it,
38
+ modelFirstFocusableShow: () => modelFirstFocusableShow,
39
+ render: () => import_react2.render,
40
+ renderWithProviders: () => renderWithProviders,
41
+ screen: () => import_react2.screen,
42
+ vi: () => import_vitest.vi,
43
+ waitFor: () => import_react2.waitFor,
44
+ waitForElement: () => waitForElement,
45
+ within: () => import_react2.within
46
+ });
47
+ module.exports = __toCommonJS(index_exports);
48
+ var import_jsx_runtime = require("react/jsx-runtime");
49
+ var import_config = require("@tamagui/config");
50
+ var import_v5_css = require("@tamagui/config/v5-css");
51
+ var import_react = require("@testing-library/react");
52
+ var import_tamagui = require("tamagui");
53
+ var import_react_query = require("@tanstack/react-query");
54
+ var import_react_cookie = require("react-cookie");
55
+ var import_react2 = require("@testing-library/react");
56
+ var import_vitest = require("vitest");
57
+ function _instanceof(left, right) {
58
+ "@swc/helpers - instanceof";
59
+
60
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
61
+ return !!right[Symbol.hasInstance](left);
62
+ } else {
63
+ return left instanceof right;
64
+ }
65
+ }
66
+ function _type_of(obj) {
67
+ "@swc/helpers - typeof";
68
+
69
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
70
+ }
71
+ var tamaguiConfig = function () {
72
+ try {
73
+ var {
74
+ createTamagui
75
+ } = require("tamagui");
76
+ return createTamagui({
77
+ ...import_config.configWithoutAnimations,
78
+ animations: import_v5_css.animationsCSS
79
+ });
80
+ } catch (unused) {
81
+ return import_config.configWithoutAnimations;
82
+ }
83
+ }();
84
+ function createDefaultQueryClient() {
85
+ return new import_react_query.QueryClient({
86
+ defaultOptions: {
87
+ queries: {
88
+ retry: false,
89
+ gcTime: 0
90
+ },
91
+ mutations: {
92
+ retry: false
93
+ }
94
+ }
95
+ });
96
+ }
97
+ function createMemoryCookies() {
98
+ var initial = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
99
+ var jar = new import_react_cookie.Cookies(initial);
100
+ Reflect.set(jar, "HAS_DOCUMENT_COOKIE", false);
101
+ return jar;
102
+ }
103
+ function enhanceRenderResult(result) {
104
+ var container = result.container;
105
+ return {
106
+ ...result,
107
+ getInput: function getInput(name) {
108
+ if (name) {
109
+ return container.querySelector(`input[name="${name}"]`) || container.querySelector(`input[aria-label*="${name}"]`) || container.querySelector('input[type="text"]') || container.querySelector("input:not([type])");
110
+ }
111
+ return container.querySelector('input[type="text"]') || container.querySelector("input:not([type])") || container.querySelector("input");
112
+ },
113
+ getAllInputs: function getAllInputs() {
114
+ return Array.from(container.querySelectorAll('input[type="text"], input:not([type]), input'));
115
+ },
116
+ getButton: function getButton(text) {
117
+ var buttons = Array.from(container.querySelectorAll("button"));
118
+ var _iteratorNormalCompletion = true,
119
+ _didIteratorError = false,
120
+ _iteratorError = void 0;
121
+ try {
122
+ for (var _iterator = buttons[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
123
+ var btn = _step.value;
124
+ if (btn && typeof btn.getAttribute !== "function" && Element.prototype.getAttribute) {
125
+ btn.getAttribute = Element.prototype.getAttribute.bind(btn);
126
+ }
127
+ }
128
+ } catch (err) {
129
+ _didIteratorError = true;
130
+ _iteratorError = err;
131
+ } finally {
132
+ try {
133
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
134
+ _iterator.return();
135
+ }
136
+ } finally {
137
+ if (_didIteratorError) {
138
+ throw _iteratorError;
139
+ }
140
+ }
141
+ }
142
+ var nativeButton = buttons.find(function (btn2) {
143
+ var _btn_textContent, _btn_getAttribute;
144
+ return ((_btn_textContent = btn2.textContent) === null || _btn_textContent === void 0 ? void 0 : _btn_textContent.includes(text)) || ((_btn_getAttribute = btn2.getAttribute("aria-label")) === null || _btn_getAttribute === void 0 ? void 0 : _btn_getAttribute.includes(text));
145
+ });
146
+ if (nativeButton) return nativeButton;
147
+ var roleButtons = Array.from(container.querySelectorAll('[role="button"]'));
148
+ var _iteratorNormalCompletion1 = true,
149
+ _didIteratorError1 = false,
150
+ _iteratorError1 = void 0;
151
+ try {
152
+ for (var _iterator1 = roleButtons[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
153
+ var btn1 = _step1.value;
154
+ if (btn1 && typeof btn1.getAttribute !== "function" && Element.prototype.getAttribute) {
155
+ btn1.getAttribute = Element.prototype.getAttribute.bind(btn1);
156
+ }
157
+ }
158
+ } catch (err) {
159
+ _didIteratorError1 = true;
160
+ _iteratorError1 = err;
161
+ } finally {
162
+ try {
163
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
164
+ _iterator1.return();
165
+ }
166
+ } finally {
167
+ if (_didIteratorError1) {
168
+ throw _iteratorError1;
169
+ }
170
+ }
171
+ }
172
+ return roleButtons.find(function (btn2) {
173
+ var _btn_textContent, _btn_getAttribute;
174
+ return ((_btn_textContent = btn2.textContent) === null || _btn_textContent === void 0 ? void 0 : _btn_textContent.includes(text)) || ((_btn_getAttribute = btn2.getAttribute("aria-label")) === null || _btn_getAttribute === void 0 ? void 0 : _btn_getAttribute.includes(text));
175
+ });
176
+ },
177
+ getSubmitButton: function getSubmitButton() {
178
+ var submitByType = container.querySelector('button[type="submit"]');
179
+ if (submitByType) return submitByType;
180
+ var roleButtonByText = Array.from(container.querySelectorAll('[role="button"]')).find(function (btn) {
181
+ var _btn_textContent;
182
+ return (_btn_textContent = btn.textContent) === null || _btn_textContent === void 0 ? void 0 : _btn_textContent.toLowerCase().includes("submit");
183
+ });
184
+ if (roleButtonByText) return roleButtonByText;
185
+ var submitByText = Array.from(container.querySelectorAll("button")).find(function (btn) {
186
+ var _btn_textContent;
187
+ return (_btn_textContent = btn.textContent) === null || _btn_textContent === void 0 ? void 0 : _btn_textContent.toLowerCase().includes("submit");
188
+ });
189
+ if (submitByText) return submitByText;
190
+ var buttonByType = Array.from(container.querySelectorAll('button[type="button"]')).find(function (btn) {
191
+ return !btn.getAttribute("role") || btn.getAttribute("role") === "button";
192
+ });
193
+ if (buttonByType) return buttonByType;
194
+ var anyButton = Array.from(container.querySelectorAll("button")).find(function (btn) {
195
+ return !btn.getAttribute("role") || btn.getAttribute("role") === "button";
196
+ });
197
+ if (anyButton) return anyButton;
198
+ return container.querySelector('[role="button"]');
199
+ },
200
+ findTextElement: function findTextElement(text) {
201
+ try {
202
+ var containerQueries = (0, import_react.within)(container);
203
+ return containerQueries.queryByText(text, {
204
+ exact: false
205
+ }) || void 0;
206
+ } catch (unused) {
207
+ var allElements = Array.from(container.querySelectorAll("*"));
208
+ return allElements.find(function (el) {
209
+ var _el_textContent;
210
+ return (_el_textContent = el.textContent) === null || _el_textContent === void 0 ? void 0 : _el_textContent.includes(text);
211
+ });
212
+ }
213
+ },
214
+ getTextArea: function getTextArea(name) {
215
+ if (name) {
216
+ return container.querySelector(`textarea[name="${name}"]`) || container.querySelector(`textarea[aria-label*="${name}"]`) || container.querySelector("textarea");
217
+ }
218
+ return container.querySelector("textarea");
219
+ },
220
+ getCheckbox: function getCheckbox(name) {
221
+ if (name) {
222
+ return container.querySelector(`[role="checkbox"][aria-labelledby*="${name}"]`) || container.querySelector(`input[type="checkbox"][name="${name}"]`);
223
+ }
224
+ return container.querySelector('[role="checkbox"]') || container.querySelector('input[type="checkbox"]');
225
+ },
226
+ getRadio: function getRadio(value) {
227
+ if (value) {
228
+ return container.querySelector(`input[type="radio"][value="${value}"]`) || container.querySelector(`[role="radio"][aria-label*="${value}"]`);
229
+ }
230
+ return container.querySelector('input[type="radio"]') || container.querySelector('[role="radio"]');
231
+ },
232
+ getSelect: function getSelect(name) {
233
+ if (name) {
234
+ return container.querySelector(`select[name="${name}"]`) || container.querySelector(`[role="combobox"][aria-label*="${name}"]`);
235
+ }
236
+ return container.querySelector("select") || container.querySelector('[role="combobox"]');
237
+ },
238
+ getSlider: function getSlider(name) {
239
+ if (name) {
240
+ return container.querySelector(`[role="slider"][aria-label*="${name}"]`) || container.querySelector(`input[type="range"][name="${name}"]`);
241
+ }
242
+ return container.querySelector('[role="slider"]') || container.querySelector('input[type="range"]');
243
+ },
244
+ getSwitch: function getSwitch(name) {
245
+ if (name) {
246
+ return container.querySelector(`[role="switch"][aria-label*="${name}"]`) || container.querySelector(`input[type="checkbox"][name="${name}"]`);
247
+ }
248
+ return container.querySelector('[role="switch"]') || container.querySelector('input[type="checkbox"]');
249
+ },
250
+ getLabel: function getLabel(text) {
251
+ var _container_querySelector_textContent, _container_querySelector;
252
+ return ((_container_querySelector = container.querySelector("label")) === null || _container_querySelector === void 0 ? void 0 : (_container_querySelector_textContent = _container_querySelector.textContent) === null || _container_querySelector_textContent === void 0 ? void 0 : _container_querySelector_textContent.includes(text)) ? container.querySelector("label") : Array.from(container.querySelectorAll('[role="label"], [aria-label]')).find(function (el) {
253
+ var _el_textContent, _el_getAttribute;
254
+ return ((_el_textContent = el.textContent) === null || _el_textContent === void 0 ? void 0 : _el_textContent.includes(text)) || ((_el_getAttribute = el.getAttribute("aria-label")) === null || _el_getAttribute === void 0 ? void 0 : _el_getAttribute.includes(text));
255
+ });
256
+ },
257
+ getError: function getError() {
258
+ return container.querySelector('[role="alert"]') || container.querySelector('[aria-live="polite"]') || Array.from(container.querySelectorAll("*")).find(function (el) {
259
+ var _el_className, _el_className1;
260
+ return (((_el_className = el.className) === null || _el_className === void 0 ? void 0 : _el_className.includes("error")) || ((_el_className1 = el.className) === null || _el_className1 === void 0 ? void 0 : _el_className1.includes("Error"))) && el.textContent;
261
+ });
262
+ }
263
+ };
264
+ }
265
+ function TestProviders(param) {
266
+ var {
267
+ children
268
+ } = param;
269
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.TamaguiProvider, {
270
+ config: tamaguiConfig,
271
+ defaultTheme: "light",
272
+ disableInjectCSS: true,
273
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
274
+ flex: 1,
275
+ backgroundColor: "$background",
276
+ children
277
+ })
278
+ });
279
+ }
280
+ function renderWithProviders(ui) {
281
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
282
+ var {
283
+ tamagui = true,
284
+ queryClient = true,
285
+ cookies = true,
286
+ theme: _theme = false,
287
+ frappe: _frappe = false,
288
+ keycloak: _keycloak = false,
289
+ ...renderOptions
290
+ } = options;
291
+ var jar = cookies === false ? void 0 : (typeof cookies === "undefined" ? "undefined" : _type_of(cookies)) === "object" ? cookies : createMemoryCookies();
292
+ function Wrapper(param) {
293
+ var {
294
+ children
295
+ } = param;
296
+ var content = children;
297
+ if (queryClient) {
298
+ var client = _instanceof(queryClient, import_react_query.QueryClient) ? queryClient : createDefaultQueryClient();
299
+ content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_query.QueryClientProvider, {
300
+ client,
301
+ children: content
302
+ });
303
+ }
304
+ if (jar) {
305
+ content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_cookie.CookiesProvider, {
306
+ cookies: jar,
307
+ children: content
308
+ });
309
+ }
310
+ if (tamagui) {
311
+ content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.TamaguiProvider, {
312
+ config: tamaguiConfig,
313
+ defaultTheme: "light",
314
+ disableInjectCSS: true,
315
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
316
+ flex: 1,
317
+ backgroundColor: "$background",
318
+ children: content
319
+ })
320
+ });
321
+ }
322
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
323
+ children: content
324
+ });
325
+ }
326
+ var result = (0, import_react.render)(ui, {
327
+ wrapper: Wrapper,
328
+ ...renderOptions
329
+ });
330
+ return enhanceRenderResult(result);
331
+ }
332
+ function findTextInContainer(container, text) {
333
+ var elements = container.querySelectorAll("*");
334
+ for (var i = 0; i < elements.length; i++) {
335
+ var _element_textContent;
336
+ var element = elements[i];
337
+ if ((_element_textContent = element.textContent) === null || _element_textContent === void 0 ? void 0 : _element_textContent.includes(text)) {
338
+ return element;
339
+ }
340
+ }
341
+ return null;
342
+ }
343
+ async function waitForElement(getFn) {
344
+ var timeout = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 3e3;
345
+ var startTime = Date.now();
346
+ while (Date.now() - startTime < timeout) {
347
+ var element = getFn();
348
+ if (element) return element;
349
+ await new Promise(function (resolve) {
350
+ return setTimeout(resolve, 50);
351
+ });
352
+ }
353
+ throw new Error("Element not found within timeout");
354
+ }
355
+ function modelFirstFocusableShow() {
356
+ var proto = HTMLDialogElement.prototype;
357
+ var original = Object.getOwnPropertyDescriptor(proto, "show");
358
+ proto.show = function show() {
359
+ this.setAttribute("open", "");
360
+ var first = Array.from(this.querySelectorAll("*")).find(function (el) {
361
+ return el.hasAttribute("tabindex") || el.matches("input, button, select, textarea, a[href]") && !el.disabled;
362
+ });
363
+ first === null || first === void 0 ? void 0 : first.focus();
364
+ };
365
+ return function () {
366
+ if (original) Object.defineProperty(proto, "show", original);else delete proto.show;
367
+ };
368
+ }
369
+ function createFixture(doctype, overrides) {
370
+ var suffix = Math.random().toString(36).substring(2, 6);
371
+ var base = {
372
+ name: `${doctype}-${suffix}`
373
+ };
374
+ if (overrides) {
375
+ return {
376
+ ...base,
377
+ ...overrides
378
+ };
379
+ }
380
+ return base;
381
+ }
382
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","index_exports","TestProviders","act","import_react2","afterEach","import_vitest","beforeEach","createFixture","createMemoryCookies","describe","expect","findTextInContainer","fireEvent","it","modelFirstFocusableShow","render","renderWithProviders","screen","vi","waitFor","waitForElement","within","module","exports","import_jsx_runtime","require","import_config","import_v5_css","import_react","import_tamagui","import_react_query","import_react_cookie","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","tamaguiConfig","createTamagui","configWithoutAnimations","animations","animationsCSS","unused","createDefaultQueryClient","QueryClient","defaultOptions","queries","retry","gcTime","mutations","initial","arguments","length","jar","Cookies","Reflect","set","enhanceRenderResult","result","container","getInput","querySelector","getAllInputs","Array","querySelectorAll","getButton","text","buttons","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","btn","getAttribute","Element","bind","err","return","nativeButton","find","btn2","_btn_textContent","_btn_getAttribute","textContent","includes","roleButtons","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","_step1","btn1","getSubmitButton","submitByType","roleButtonByText","toLowerCase","submitByText","buttonByType","anyButton","findTextElement","containerQueries","queryByText","exact","allElements","el","_el_textContent","getTextArea","getCheckbox","getRadio","getSelect","getSlider","getSwitch","getLabel","_container_querySelector_textContent","_container_querySelector","_el_getAttribute","getError","_el_className","_el_className1","className","param","children","jsx","TamaguiProvider","config","defaultTheme","disableInjectCSS","YStack","flex","backgroundColor","ui","options","tamagui","queryClient","cookies","theme","_theme","frappe","_frappe","keycloak","_keycloak","renderOptions","Wrapper","content","client","QueryClientProvider","CookiesProvider","Fragment","wrapper","elements","i","_element_textContent","element","getFn","timeout","startTime","Date","now","Promise","resolve","setTimeout","Error","proto","HTMLDialogElement","original","show","setAttribute","first","hasAttribute","matches","disabled","focus","doctype","overrides","suffix","Math","random","toString","substring","base"],"sources":["index.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar index_exports = {};\n__export(index_exports, {\n TestProviders: () => TestProviders,\n act: () => import_react2.act,\n afterEach: () => import_vitest.afterEach,\n beforeEach: () => import_vitest.beforeEach,\n createFixture: () => createFixture,\n createMemoryCookies: () => createMemoryCookies,\n describe: () => import_vitest.describe,\n expect: () => import_vitest.expect,\n findTextInContainer: () => findTextInContainer,\n fireEvent: () => import_react2.fireEvent,\n it: () => import_vitest.it,\n modelFirstFocusableShow: () => modelFirstFocusableShow,\n render: () => import_react2.render,\n renderWithProviders: () => renderWithProviders,\n screen: () => import_react2.screen,\n vi: () => import_vitest.vi,\n waitFor: () => import_react2.waitFor,\n waitForElement: () => waitForElement,\n within: () => import_react2.within\n});\nmodule.exports = __toCommonJS(index_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_config = require(\"@tamagui/config\");\nvar import_v5_css = require(\"@tamagui/config/v5-css\");\nvar import_react = require(\"@testing-library/react\");\nvar import_tamagui = require(\"tamagui\");\nvar import_react_query = require(\"@tanstack/react-query\");\nvar import_react_cookie = require(\"react-cookie\");\nvar import_react2 = require(\"@testing-library/react\");\nvar import_vitest = require(\"vitest\");\nfunction _instanceof(left, right) {\n \"@swc/helpers - instanceof\";\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nvar tamaguiConfig = (function() {\n try {\n var { createTamagui } = require(\"tamagui\");\n return createTamagui({\n ...import_config.configWithoutAnimations,\n animations: import_v5_css.animationsCSS\n });\n } catch (unused) {\n return import_config.configWithoutAnimations;\n }\n})();\nfunction createDefaultQueryClient() {\n return new import_react_query.QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n gcTime: 0\n },\n mutations: {\n retry: false\n }\n }\n });\n}\nfunction createMemoryCookies() {\n var initial = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n var jar = new import_react_cookie.Cookies(initial);\n Reflect.set(jar, \"HAS_DOCUMENT_COOKIE\", false);\n return jar;\n}\nfunction enhanceRenderResult(result) {\n var container = result.container;\n return {\n ...result,\n getInput: function getInput(name) {\n if (name) {\n return container.querySelector(`input[name=\"${name}\"]`) || container.querySelector(`input[aria-label*=\"${name}\"]`) || container.querySelector('input[type=\"text\"]') || container.querySelector(\"input:not([type])\");\n }\n return container.querySelector('input[type=\"text\"]') || container.querySelector(\"input:not([type])\") || container.querySelector(\"input\");\n },\n getAllInputs: function getAllInputs() {\n return Array.from(container.querySelectorAll('input[type=\"text\"], input:not([type]), input'));\n },\n getButton: function getButton(text) {\n var buttons = Array.from(container.querySelectorAll(\"button\"));\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = buttons[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var btn = _step.value;\n if (btn && typeof btn.getAttribute !== \"function\" && Element.prototype.getAttribute) {\n btn.getAttribute = Element.prototype.getAttribute.bind(btn);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var nativeButton = buttons.find(function(btn2) {\n var _btn_textContent, _btn_getAttribute;\n return ((_btn_textContent = btn2.textContent) === null || _btn_textContent === void 0 ? void 0 : _btn_textContent.includes(text)) || ((_btn_getAttribute = btn2.getAttribute(\"aria-label\")) === null || _btn_getAttribute === void 0 ? void 0 : _btn_getAttribute.includes(text));\n });\n if (nativeButton) return nativeButton;\n var roleButtons = Array.from(container.querySelectorAll('[role=\"button\"]'));\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = roleButtons[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var btn1 = _step1.value;\n if (btn1 && typeof btn1.getAttribute !== \"function\" && Element.prototype.getAttribute) {\n btn1.getAttribute = Element.prototype.getAttribute.bind(btn1);\n }\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n return roleButtons.find(function(btn2) {\n var _btn_textContent, _btn_getAttribute;\n return ((_btn_textContent = btn2.textContent) === null || _btn_textContent === void 0 ? void 0 : _btn_textContent.includes(text)) || ((_btn_getAttribute = btn2.getAttribute(\"aria-label\")) === null || _btn_getAttribute === void 0 ? void 0 : _btn_getAttribute.includes(text));\n });\n },\n getSubmitButton: function getSubmitButton() {\n var submitByType = container.querySelector('button[type=\"submit\"]');\n if (submitByType) return submitByType;\n var roleButtonByText = Array.from(container.querySelectorAll('[role=\"button\"]')).find(function(btn) {\n var _btn_textContent;\n return (_btn_textContent = btn.textContent) === null || _btn_textContent === void 0 ? void 0 : _btn_textContent.toLowerCase().includes(\"submit\");\n });\n if (roleButtonByText) return roleButtonByText;\n var submitByText = Array.from(container.querySelectorAll(\"button\")).find(function(btn) {\n var _btn_textContent;\n return (_btn_textContent = btn.textContent) === null || _btn_textContent === void 0 ? void 0 : _btn_textContent.toLowerCase().includes(\"submit\");\n });\n if (submitByText) return submitByText;\n var buttonByType = Array.from(container.querySelectorAll('button[type=\"button\"]')).find(function(btn) {\n return !btn.getAttribute(\"role\") || btn.getAttribute(\"role\") === \"button\";\n });\n if (buttonByType) return buttonByType;\n var anyButton = Array.from(container.querySelectorAll(\"button\")).find(function(btn) {\n return !btn.getAttribute(\"role\") || btn.getAttribute(\"role\") === \"button\";\n });\n if (anyButton) return anyButton;\n return container.querySelector('[role=\"button\"]');\n },\n findTextElement: function findTextElement(text) {\n try {\n var containerQueries = (0, import_react.within)(container);\n return containerQueries.queryByText(text, {\n exact: false\n }) || void 0;\n } catch (unused) {\n var allElements = Array.from(container.querySelectorAll(\"*\"));\n return allElements.find(function(el) {\n var _el_textContent;\n return (_el_textContent = el.textContent) === null || _el_textContent === void 0 ? void 0 : _el_textContent.includes(text);\n });\n }\n },\n getTextArea: function getTextArea(name) {\n if (name) {\n return container.querySelector(`textarea[name=\"${name}\"]`) || container.querySelector(`textarea[aria-label*=\"${name}\"]`) || container.querySelector(\"textarea\");\n }\n return container.querySelector(\"textarea\");\n },\n getCheckbox: function getCheckbox(name) {\n if (name) {\n return container.querySelector(`[role=\"checkbox\"][aria-labelledby*=\"${name}\"]`) || container.querySelector(`input[type=\"checkbox\"][name=\"${name}\"]`);\n }\n return container.querySelector('[role=\"checkbox\"]') || container.querySelector('input[type=\"checkbox\"]');\n },\n getRadio: function getRadio(value) {\n if (value) {\n return container.querySelector(`input[type=\"radio\"][value=\"${value}\"]`) || container.querySelector(`[role=\"radio\"][aria-label*=\"${value}\"]`);\n }\n return container.querySelector('input[type=\"radio\"]') || container.querySelector('[role=\"radio\"]');\n },\n getSelect: function getSelect(name) {\n if (name) {\n return container.querySelector(`select[name=\"${name}\"]`) || container.querySelector(`[role=\"combobox\"][aria-label*=\"${name}\"]`);\n }\n return container.querySelector(\"select\") || container.querySelector('[role=\"combobox\"]');\n },\n getSlider: function getSlider(name) {\n if (name) {\n return container.querySelector(`[role=\"slider\"][aria-label*=\"${name}\"]`) || container.querySelector(`input[type=\"range\"][name=\"${name}\"]`);\n }\n return container.querySelector('[role=\"slider\"]') || container.querySelector('input[type=\"range\"]');\n },\n getSwitch: function getSwitch(name) {\n if (name) {\n return container.querySelector(`[role=\"switch\"][aria-label*=\"${name}\"]`) || container.querySelector(`input[type=\"checkbox\"][name=\"${name}\"]`);\n }\n return container.querySelector('[role=\"switch\"]') || container.querySelector('input[type=\"checkbox\"]');\n },\n getLabel: function getLabel(text) {\n var _container_querySelector_textContent, _container_querySelector;\n return ((_container_querySelector = container.querySelector(\"label\")) === null || _container_querySelector === void 0 ? void 0 : (_container_querySelector_textContent = _container_querySelector.textContent) === null || _container_querySelector_textContent === void 0 ? void 0 : _container_querySelector_textContent.includes(text)) ? container.querySelector(\"label\") : Array.from(container.querySelectorAll('[role=\"label\"], [aria-label]')).find(function(el) {\n var _el_textContent, _el_getAttribute;\n return ((_el_textContent = el.textContent) === null || _el_textContent === void 0 ? void 0 : _el_textContent.includes(text)) || ((_el_getAttribute = el.getAttribute(\"aria-label\")) === null || _el_getAttribute === void 0 ? void 0 : _el_getAttribute.includes(text));\n });\n },\n getError: function getError() {\n return container.querySelector('[role=\"alert\"]') || container.querySelector('[aria-live=\"polite\"]') || Array.from(container.querySelectorAll(\"*\")).find(function(el) {\n var _el_className, _el_className1;\n return (((_el_className = el.className) === null || _el_className === void 0 ? void 0 : _el_className.includes(\"error\")) || ((_el_className1 = el.className) === null || _el_className1 === void 0 ? void 0 : _el_className1.includes(\"Error\"))) && el.textContent;\n });\n }\n };\n}\nfunction TestProviders(param) {\n var { children } = param;\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.TamaguiProvider, {\n config: tamaguiConfig,\n defaultTheme: \"light\",\n disableInjectCSS: true,\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.YStack, {\n flex: 1,\n backgroundColor: \"$background\",\n children\n })\n });\n}\nfunction renderWithProviders(ui) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var { tamagui = true, queryClient = true, cookies = true, theme: _theme = false, frappe: _frappe = false, keycloak: _keycloak = false, ...renderOptions } = options;\n var jar = cookies === false ? void 0 : (typeof cookies === \"undefined\" ? \"undefined\" : _type_of(cookies)) === \"object\" ? cookies : createMemoryCookies();\n function Wrapper(param) {\n var { children } = param;\n var content = children;\n if (queryClient) {\n var client = _instanceof(queryClient, import_react_query.QueryClient) ? queryClient : createDefaultQueryClient();\n content = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_query.QueryClientProvider, {\n client,\n children: content\n });\n }\n if (jar) {\n content = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_cookie.CookiesProvider, {\n cookies: jar,\n children: content\n });\n }\n if (tamagui) {\n content = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.TamaguiProvider, {\n config: tamaguiConfig,\n defaultTheme: \"light\",\n disableInjectCSS: true,\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.YStack, {\n flex: 1,\n backgroundColor: \"$background\",\n children: content\n })\n });\n }\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {\n children: content\n });\n }\n var result = (0, import_react.render)(ui, {\n wrapper: Wrapper,\n ...renderOptions\n });\n return enhanceRenderResult(result);\n}\nfunction findTextInContainer(container, text) {\n var elements = container.querySelectorAll(\"*\");\n for (var i = 0; i < elements.length; i++) {\n var _element_textContent;\n var element = elements[i];\n if ((_element_textContent = element.textContent) === null || _element_textContent === void 0 ? void 0 : _element_textContent.includes(text)) {\n return element;\n }\n }\n return null;\n}\nasync function waitForElement(getFn) {\n var timeout = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 3e3;\n var startTime = Date.now();\n while (Date.now() - startTime < timeout) {\n var element = getFn();\n if (element) return element;\n await new Promise(function(resolve) {\n return setTimeout(resolve, 50);\n });\n }\n throw new Error(\"Element not found within timeout\");\n}\nfunction modelFirstFocusableShow() {\n var proto = HTMLDialogElement.prototype;\n var original = Object.getOwnPropertyDescriptor(proto, \"show\");\n proto.show = function show() {\n this.setAttribute(\"open\", \"\");\n var first = Array.from(this.querySelectorAll(\"*\")).find(function(el) {\n return el.hasAttribute(\"tabindex\") || el.matches(\"input, button, select, textarea, a[href]\") && !el.disabled;\n });\n first === null || first === void 0 ? void 0 : first.focus();\n };\n return function() {\n if (original) Object.defineProperty(proto, \"show\", original);\n else delete proto.show;\n };\n}\nfunction createFixture(doctype, overrides) {\n var suffix = Math.random().toString(36).substring(2, 6);\n var base = {\n name: `${doctype}-${suffix}`\n };\n if (overrides) {\n return {\n ...base,\n ...overrides\n };\n }\n return base;\n}\n//# sourceMappingURL=index.js.map\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,148 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var mocks_exports = {};
24
+ __export(mocks_exports, {
25
+ createMockFrappeApp: () => createMockFrappeApp,
26
+ createMockKeycloakContext: () => createMockKeycloakContext,
27
+ mockCreateDoc: () => mockCreateDoc,
28
+ mockDeleteDoc: () => mockDeleteDoc,
29
+ mockDocList: () => mockDocList,
30
+ mockGetDoc: () => mockGetDoc,
31
+ mockUpdateDoc: () => mockUpdateDoc
32
+ });
33
+ module.exports = __toCommonJS(mocks_exports);
34
+ var import_vitest = require("vitest");
35
+ function createMockFrappeApp() {
36
+ return {
37
+ db: {
38
+ getDocList: import_vitest.vi.fn().mockResolvedValue([]),
39
+ getDoc: import_vitest.vi.fn().mockResolvedValue(null),
40
+ createDoc: import_vitest.vi.fn().mockResolvedValue({}),
41
+ updateDoc: import_vitest.vi.fn().mockResolvedValue({}),
42
+ deleteDoc: import_vitest.vi.fn().mockResolvedValue({
43
+ message: "ok"
44
+ }),
45
+ getCount: import_vitest.vi.fn().mockResolvedValue(0),
46
+ getValue: import_vitest.vi.fn().mockResolvedValue(null),
47
+ setValue: import_vitest.vi.fn().mockResolvedValue(null),
48
+ exists: import_vitest.vi.fn().mockResolvedValue(false)
49
+ },
50
+ call: {
51
+ get: import_vitest.vi.fn().mockResolvedValue({
52
+ message: {}
53
+ }),
54
+ post: import_vitest.vi.fn().mockResolvedValue({
55
+ message: {}
56
+ })
57
+ },
58
+ auth: {
59
+ getLoggedInUser: import_vitest.vi.fn().mockResolvedValue("Administrator"),
60
+ login: import_vitest.vi.fn().mockResolvedValue({}),
61
+ logout: import_vitest.vi.fn().mockResolvedValue({})
62
+ },
63
+ file: {
64
+ uploadFile: import_vitest.vi.fn().mockResolvedValue({
65
+ file_url: "/files/test.pdf"
66
+ }),
67
+ deleteFile: import_vitest.vi.fn().mockResolvedValue({
68
+ message: "ok"
69
+ }),
70
+ getFileURL: import_vitest.vi.fn().mockReturnValue("/files/test.pdf")
71
+ }
72
+ };
73
+ }
74
+ function mockDocList(mockApp, doctype, data) {
75
+ mockApp.db.getDocList.mockImplementation(async dt => {
76
+ if (dt === doctype) return data;
77
+ return [];
78
+ });
79
+ }
80
+ function mockGetDoc(mockApp, doctype, name, data) {
81
+ mockApp.db.getDoc.mockImplementation(async (dt, n) => {
82
+ if (dt === doctype && n === name) return data;
83
+ return null;
84
+ });
85
+ }
86
+ function mockCreateDoc(mockApp, doctype, returnData) {
87
+ mockApp.db.createDoc.mockImplementation(async (dt, doc) => {
88
+ if (dt === doctype) return {
89
+ ...doc,
90
+ ...returnData
91
+ };
92
+ return {};
93
+ });
94
+ }
95
+ function mockUpdateDoc(mockApp, doctype, name, returnData) {
96
+ mockApp.db.updateDoc.mockImplementation(async (dt, n, doc) => {
97
+ if (dt === doctype && n === name) return {
98
+ name: n,
99
+ ...doc,
100
+ ...returnData
101
+ };
102
+ return {};
103
+ });
104
+ }
105
+ function mockDeleteDoc(mockApp, doctype, name) {
106
+ mockApp.db.deleteDoc.mockImplementation(async (dt, n) => {
107
+ if (dt === doctype && n === name) return {
108
+ message: "ok"
109
+ };
110
+ throw new Error(`Document ${dt}/${n} not found`);
111
+ });
112
+ }
113
+ function createMockKeycloakContext(options = {}) {
114
+ const {
115
+ authenticated = false,
116
+ roles = [],
117
+ token = authenticated ? "mock-jwt-token" : void 0,
118
+ user = {}
119
+ } = options;
120
+ const sub = user.sub || "mock-user-id";
121
+ const email = user.email || (authenticated ? "test@example.com" : void 0);
122
+ const name = user.name || (authenticated ? "Test User" : void 0);
123
+ return {
124
+ authenticated,
125
+ token: authenticated ? token : void 0,
126
+ tokenParsed: authenticated ? {
127
+ email,
128
+ name,
129
+ preferred_username: email,
130
+ sub,
131
+ realm_access: {
132
+ roles
133
+ }
134
+ } : void 0,
135
+ idToken: authenticated ? `mock-id-token-${sub}` : void 0,
136
+ refreshToken: authenticated ? `mock-refresh-token-${sub}` : void 0,
137
+ realmAccess: authenticated ? {
138
+ roles
139
+ } : void 0,
140
+ subject: authenticated ? sub : void 0,
141
+ email: authenticated ? email : void 0,
142
+ username: authenticated ? email : void 0,
143
+ login: import_vitest.vi.fn().mockResolvedValue(void 0),
144
+ logout: import_vitest.vi.fn().mockResolvedValue(void 0),
145
+ hasRealmRole: role => roles.includes(role),
146
+ hasResourceRole: (_role, _resource) => false
147
+ };
148
+ }