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