ferns-ui 1.10.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/Accordion.js +1 -1
  2. package/dist/Accordion.js.map +1 -1
  3. package/dist/Accordion.test.d.ts +1 -0
  4. package/dist/Accordion.test.js +71 -0
  5. package/dist/Accordion.test.js.map +1 -0
  6. package/dist/AddressField.test.d.ts +1 -0
  7. package/dist/AddressField.test.js +65 -0
  8. package/dist/AddressField.test.js.map +1 -0
  9. package/dist/Avatar.js +2 -2
  10. package/dist/Avatar.js.map +1 -1
  11. package/dist/Avatar.test.d.ts +1 -0
  12. package/dist/Avatar.test.js +131 -0
  13. package/dist/Avatar.test.js.map +1 -0
  14. package/dist/Badge.d.ts +1 -1
  15. package/dist/Badge.js +3 -3
  16. package/dist/Badge.js.map +1 -1
  17. package/dist/Badge.test.d.ts +1 -0
  18. package/dist/Badge.test.js +76 -0
  19. package/dist/Badge.test.js.map +1 -0
  20. package/dist/Box.test.d.ts +1 -0
  21. package/dist/Box.test.js +528 -0
  22. package/dist/Box.test.js.map +1 -0
  23. package/dist/Common.d.ts +100 -1
  24. package/dist/Common.js.map +1 -1
  25. package/dist/DateTimeField.js +15 -2
  26. package/dist/DateTimeField.js.map +1 -1
  27. package/dist/InfoModalIcon.js +1 -1
  28. package/dist/InfoModalIcon.js.map +1 -1
  29. package/dist/Slider.d.ts +3 -0
  30. package/dist/Slider.js +94 -0
  31. package/dist/Slider.js.map +1 -0
  32. package/dist/Text.js +2 -0
  33. package/dist/Text.js.map +1 -1
  34. package/dist/TextField.test.js +9 -9
  35. package/dist/TextField.test.js.map +1 -1
  36. package/dist/Tooltip.js +2 -0
  37. package/dist/Tooltip.js.map +1 -1
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.js +1 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/setupTests.js +40 -2
  42. package/dist/setupTests.js.map +1 -1
  43. package/dist/test-utils.js.map +1 -1
  44. package/package.json +2 -1
  45. package/src/Accordion.test.tsx +104 -0
  46. package/src/Accordion.tsx +1 -0
  47. package/src/AddressField.test.tsx +89 -0
  48. package/src/Avatar.test.tsx +163 -0
  49. package/src/Avatar.tsx +2 -0
  50. package/src/Badge.test.tsx +116 -0
  51. package/src/Badge.tsx +3 -1
  52. package/src/Box.test.tsx +665 -0
  53. package/src/Common.ts +114 -1
  54. package/src/DateTimeField.tsx +15 -2
  55. package/src/InfoModalIcon.tsx +1 -0
  56. package/src/Slider.tsx +205 -0
  57. package/src/Text.tsx +2 -0
  58. package/src/TextField.test.tsx +59 -71
  59. package/src/Tooltip.tsx +2 -0
  60. package/src/__snapshots__/Accordion.test.tsx.snap +120 -0
  61. package/src/__snapshots__/AddressField.test.tsx.snap +464 -0
  62. package/src/__snapshots__/Avatar.test.tsx.snap +78 -0
  63. package/src/__snapshots__/Badge.test.tsx.snap +44 -0
  64. package/src/__snapshots__/Box.test.tsx.snap +159 -0
  65. package/src/__snapshots__/TextArea.test.tsx.snap +12 -0
  66. package/src/__snapshots__/TextField.test.tsx.snap +38 -1
  67. package/src/index.tsx +1 -0
  68. package/src/setupTests.ts +45 -2
  69. package/src/test-utils.tsx +1 -0
@@ -0,0 +1,528 @@
1
+ import { act, fireEvent } from "@testing-library/react-native";
2
+ import React from "react";
3
+ import { Box } from "./Box";
4
+ import { Text } from "./Text";
5
+ import { renderWithTheme } from "./test-utils";
6
+ // Mock the mediaQueryLargerThan function
7
+ jest.mock("./MediaQuery", () => ({
8
+ mediaQueryLargerThan: jest.fn(() => false),
9
+ }));
10
+ describe("Box", () => {
11
+ describe("basic rendering", () => {
12
+ it("should render with default props", () => {
13
+ const { root } = renderWithTheme(React.createElement(Box, null));
14
+ expect(root).toBeTruthy();
15
+ });
16
+ it("should render children", () => {
17
+ const { getByText } = renderWithTheme(React.createElement(Box, null,
18
+ React.createElement(Text, null, "Test Content")));
19
+ expect(getByText("Test Content")).toBeTruthy();
20
+ });
21
+ it("should apply testID", () => {
22
+ const { getByTestId } = renderWithTheme(React.createElement(Box, { testID: "test-box" }));
23
+ expect(getByTestId("test-box")).toBeTruthy();
24
+ });
25
+ });
26
+ describe("layout props", () => {
27
+ it("should apply direction prop", () => {
28
+ const { root } = renderWithTheme(React.createElement(Box, { direction: "column" }));
29
+ const view = root.findByType("View");
30
+ expect(view.props.style).toMatchObject({
31
+ flexDirection: "column",
32
+ display: "flex"
33
+ });
34
+ });
35
+ it("should apply responsive direction props", () => {
36
+ const { root } = renderWithTheme(React.createElement(Box, { smDirection: "row" }));
37
+ expect(root).toBeTruthy();
38
+ });
39
+ it("should apply flex grow", () => {
40
+ const { root } = renderWithTheme(React.createElement(Box, { flex: "grow" }));
41
+ const view = root.findByType("View");
42
+ expect(view.props.style).toMatchObject({
43
+ flexGrow: 1,
44
+ flexShrink: 1,
45
+ display: "flex"
46
+ });
47
+ });
48
+ it("should apply flex shrink", () => {
49
+ const { root } = renderWithTheme(React.createElement(Box, { flex: "shrink" }));
50
+ const view = root.findByType("View");
51
+ expect(view.props.style).toMatchObject({
52
+ flexShrink: 1,
53
+ display: "flex"
54
+ });
55
+ });
56
+ it("should apply flex none", () => {
57
+ const { root } = renderWithTheme(React.createElement(Box, { flex: "none" }));
58
+ const view = root.findByType("View");
59
+ expect(view.props.style).toMatchObject({
60
+ flex: 0,
61
+ display: "flex"
62
+ });
63
+ });
64
+ it("should apply justifyContent", () => {
65
+ const { root } = renderWithTheme(React.createElement(Box, { justifyContent: "center" }));
66
+ const view = root.findByType("View");
67
+ expect(view.props.style).toMatchObject({
68
+ justifyContent: "center"
69
+ });
70
+ });
71
+ it("should apply alignItems", () => {
72
+ const { root } = renderWithTheme(React.createElement(Box, { alignItems: "center" }));
73
+ const view = root.findByType("View");
74
+ expect(view.props.style).toMatchObject({
75
+ alignItems: "center"
76
+ });
77
+ });
78
+ it("should apply alignContent", () => {
79
+ const { root } = renderWithTheme(React.createElement(Box, { alignContent: "center" }));
80
+ const view = root.findByType("View");
81
+ expect(view.props.style).toMatchObject({
82
+ alignContent: "center"
83
+ });
84
+ });
85
+ it("should apply alignSelf", () => {
86
+ const { root } = renderWithTheme(React.createElement(Box, { alignSelf: "center" }));
87
+ const view = root.findByType("View");
88
+ expect(view.props.style).toMatchObject({
89
+ alignSelf: "center"
90
+ });
91
+ });
92
+ it("should apply wrap", () => {
93
+ const { root } = renderWithTheme(React.createElement(Box, { wrap: true }));
94
+ const view = root.findByType("View");
95
+ expect(view.props.style).toMatchObject({
96
+ flexWrap: "wrap",
97
+ alignItems: "flex-start"
98
+ });
99
+ });
100
+ it("should apply gap", () => {
101
+ const { root } = renderWithTheme(React.createElement(Box, { gap: 4 }));
102
+ const view = root.findByType("View");
103
+ expect(view.props.style).toMatchObject({
104
+ gap: 16
105
+ });
106
+ });
107
+ });
108
+ describe("spacing props", () => {
109
+ it("should apply padding", () => {
110
+ const { root } = renderWithTheme(React.createElement(Box, { padding: 4 }));
111
+ const view = root.findByType("View");
112
+ expect(view.props.style).toMatchObject({
113
+ padding: 16
114
+ });
115
+ });
116
+ it("should apply paddingX", () => {
117
+ const { root } = renderWithTheme(React.createElement(Box, { paddingX: 2 }));
118
+ const view = root.findByType("View");
119
+ expect(view.props.style).toMatchObject({
120
+ paddingLeft: 8,
121
+ paddingRight: 8
122
+ });
123
+ });
124
+ it("should apply paddingY", () => {
125
+ const { root } = renderWithTheme(React.createElement(Box, { paddingY: 3 }));
126
+ const view = root.findByType("View");
127
+ expect(view.props.style).toMatchObject({
128
+ paddingTop: 12,
129
+ paddingBottom: 12
130
+ });
131
+ });
132
+ it("should apply margin", () => {
133
+ const { root } = renderWithTheme(React.createElement(Box, { margin: 4 }));
134
+ const view = root.findByType("View");
135
+ expect(view.props.style).toMatchObject({
136
+ margin: 16
137
+ });
138
+ });
139
+ it("should apply marginTop", () => {
140
+ const { root } = renderWithTheme(React.createElement(Box, { marginTop: 2 }));
141
+ const view = root.findByType("View");
142
+ expect(view.props.style).toMatchObject({
143
+ marginTop: 8
144
+ });
145
+ });
146
+ it("should apply marginBottom", () => {
147
+ const { root } = renderWithTheme(React.createElement(Box, { marginBottom: 2 }));
148
+ const view = root.findByType("View");
149
+ expect(view.props.style).toMatchObject({
150
+ marginBottom: 8
151
+ });
152
+ });
153
+ it("should apply marginLeft", () => {
154
+ const { root } = renderWithTheme(React.createElement(Box, { marginLeft: 2 }));
155
+ const view = root.findByType("View");
156
+ expect(view.props.style).toMatchObject({
157
+ marginLeft: 8
158
+ });
159
+ });
160
+ it("should apply marginRight", () => {
161
+ const { root } = renderWithTheme(React.createElement(Box, { marginRight: 2 }));
162
+ const view = root.findByType("View");
163
+ expect(view.props.style).toMatchObject({
164
+ marginRight: 8
165
+ });
166
+ });
167
+ });
168
+ describe("sizing props", () => {
169
+ it("should apply width", () => {
170
+ const { root } = renderWithTheme(React.createElement(Box, { width: 100 }));
171
+ const view = root.findByType("View");
172
+ expect(view.props.style).toMatchObject({
173
+ width: 100
174
+ });
175
+ });
176
+ it("should apply height", () => {
177
+ const { root } = renderWithTheme(React.createElement(Box, { height: 100 }));
178
+ const view = root.findByType("View");
179
+ expect(view.props.style).toMatchObject({
180
+ height: 100
181
+ });
182
+ });
183
+ it("should apply string width", () => {
184
+ const { root } = renderWithTheme(React.createElement(Box, { width: "50%" }));
185
+ const view = root.findByType("View");
186
+ expect(view.props.style).toMatchObject({
187
+ width: "50%"
188
+ });
189
+ });
190
+ it("should apply string height", () => {
191
+ const { root } = renderWithTheme(React.createElement(Box, { height: "50%" }));
192
+ const view = root.findByType("View");
193
+ expect(view.props.style).toMatchObject({
194
+ height: "50%"
195
+ });
196
+ });
197
+ });
198
+ describe("position props", () => {
199
+ it("should apply position absolute", () => {
200
+ const { root } = renderWithTheme(React.createElement(Box, { position: "absolute" }));
201
+ const view = root.findByType("View");
202
+ expect(view.props.style).toMatchObject({
203
+ position: "absolute"
204
+ });
205
+ });
206
+ it("should apply top", () => {
207
+ const { root } = renderWithTheme(React.createElement(Box, { top: true }));
208
+ const view = root.findByType("View");
209
+ expect(view.props.style).toMatchObject({
210
+ top: 0
211
+ });
212
+ });
213
+ it("should apply bottom", () => {
214
+ const { root } = renderWithTheme(React.createElement(Box, { bottom: true }));
215
+ const view = root.findByType("View");
216
+ expect(view.props.style).toMatchObject({
217
+ bottom: 0
218
+ });
219
+ });
220
+ it("should apply left", () => {
221
+ const { root } = renderWithTheme(React.createElement(Box, { left: true }));
222
+ const view = root.findByType("View");
223
+ expect(view.props.style).toMatchObject({
224
+ left: 0
225
+ });
226
+ });
227
+ it("should apply right", () => {
228
+ const { root } = renderWithTheme(React.createElement(Box, { right: true }));
229
+ const view = root.findByType("View");
230
+ expect(view.props.style).toMatchObject({
231
+ right: 0
232
+ });
233
+ });
234
+ it("should apply zIndex", () => {
235
+ const { root } = renderWithTheme(React.createElement(Box, { zIndex: 10 }));
236
+ const view = root.findByType("View");
237
+ expect(view.props.style).toMatchObject({
238
+ zIndex: 10
239
+ });
240
+ });
241
+ });
242
+ describe("color and surface props", () => {
243
+ it("should apply background color", () => {
244
+ const { root } = renderWithTheme(React.createElement(Box, { color: "primary" }));
245
+ const view = root.findByType("View");
246
+ expect(view.props.style.backgroundColor).toBeDefined();
247
+ });
248
+ });
249
+ describe("border props", () => {
250
+ it("should apply border", () => {
251
+ const { root } = renderWithTheme(React.createElement(Box, { border: "default" }));
252
+ const view = root.findByType("View");
253
+ expect(view.props.style.borderColor).toBeDefined();
254
+ expect(view.props.style.borderWidth).toBe(1);
255
+ });
256
+ it("should apply borderTop", () => {
257
+ const { root } = renderWithTheme(React.createElement(Box, { borderTop: "default" }));
258
+ const view = root.findByType("View");
259
+ expect(view.props.style.borderTopColor).toBeDefined();
260
+ expect(view.props.style.borderTopWidth).toBe(1);
261
+ });
262
+ it("should apply borderBottom", () => {
263
+ const { root } = renderWithTheme(React.createElement(Box, { borderBottom: "default" }));
264
+ const view = root.findByType("View");
265
+ expect(view.props.style.borderBottomColor).toBeDefined();
266
+ expect(view.props.style.borderBottomWidth).toBe(1);
267
+ });
268
+ it("should apply borderLeft", () => {
269
+ const { root } = renderWithTheme(React.createElement(Box, { borderLeft: "default" }));
270
+ const view = root.findByType("View");
271
+ expect(view.props.style.borderLeftColor).toBeDefined();
272
+ expect(view.props.style.borderLeftWidth).toBe(1);
273
+ });
274
+ it("should apply borderRight", () => {
275
+ const { root } = renderWithTheme(React.createElement(Box, { borderRight: "default" }));
276
+ const view = root.findByType("View");
277
+ expect(view.props.style.borderRightColor).toBeDefined();
278
+ expect(view.props.style.borderRightWidth).toBe(1);
279
+ });
280
+ it("should adjust width for border", () => {
281
+ const { root } = renderWithTheme(React.createElement(Box, { border: "default", width: 100 }));
282
+ const view = root.findByType("View");
283
+ expect(view.props.style.width).toBe(104); // 100 + 2*2 for border
284
+ });
285
+ it("should adjust height for border", () => {
286
+ const { root } = renderWithTheme(React.createElement(Box, { border: "default", height: 100 }));
287
+ const view = root.findByType("View");
288
+ expect(view.props.style.height).toBe(104); // 100 + 2*2 for border
289
+ });
290
+ });
291
+ describe("rounding props", () => {
292
+ it("should apply rounding", () => {
293
+ const { root } = renderWithTheme(React.createElement(Box, { rounding: "md" }));
294
+ const view = root.findByType("View");
295
+ expect(view.props.style.borderRadius).toBe(4);
296
+ });
297
+ it("should apply circle rounding with width", () => {
298
+ const { root } = renderWithTheme(React.createElement(Box, { rounding: "circle", width: 50 }));
299
+ const view = root.findByType("View");
300
+ expect(view.props.style.borderRadius).toBe(50);
301
+ });
302
+ it("should apply circle rounding with height", () => {
303
+ const { root } = renderWithTheme(React.createElement(Box, { rounding: "circle", height: 50 }));
304
+ const view = root.findByType("View");
305
+ expect(view.props.style.borderRadius).toBe(50);
306
+ });
307
+ it("should warn when using circle without dimensions", () => {
308
+ const consoleSpy = jest.spyOn(console, "warn").mockImplementation();
309
+ renderWithTheme(React.createElement(Box, { rounding: "circle" }));
310
+ expect(consoleSpy).toHaveBeenCalledWith("Cannot use Box rounding='circle' without height or width.");
311
+ consoleSpy.mockRestore();
312
+ });
313
+ });
314
+ describe("display props", () => {
315
+ it("should apply display none", () => {
316
+ const { root } = renderWithTheme(React.createElement(Box, { display: "none" }));
317
+ const view = root.findByType("View");
318
+ expect(view.props.style).toMatchObject({
319
+ display: "none"
320
+ });
321
+ });
322
+ it("should apply display flex", () => {
323
+ const { root } = renderWithTheme(React.createElement(Box, { display: "flex" }));
324
+ const view = root.findByType("View");
325
+ expect(view.props.style).toMatchObject({
326
+ flex: undefined
327
+ });
328
+ });
329
+ it("should apply display block", () => {
330
+ const { root } = renderWithTheme(React.createElement(Box, { display: "block" }));
331
+ const view = root.findByType("View");
332
+ expect(view.props.style).toMatchObject({
333
+ flex: 0,
334
+ flexDirection: "row"
335
+ });
336
+ });
337
+ });
338
+ describe("overflow props", () => {
339
+ it("should apply overflow scroll", () => {
340
+ const { root } = renderWithTheme(React.createElement(Box, { overflow: "scroll" }));
341
+ const view = root.findByType("View");
342
+ expect(view.props.style).toMatchObject({
343
+ overflow: "scroll"
344
+ });
345
+ });
346
+ it("should apply overflow scrollY", () => {
347
+ const { root } = renderWithTheme(React.createElement(Box, { overflow: "scrollY" }));
348
+ const view = root.findByType("View");
349
+ expect(view.props.style).toMatchObject({
350
+ overflow: "scroll"
351
+ });
352
+ });
353
+ it("should apply overflow hidden", () => {
354
+ const { root } = renderWithTheme(React.createElement(Box, { overflow: "hidden" }));
355
+ const view = root.findByType("View");
356
+ expect(view.props.style).toMatchObject({
357
+ overflow: "hidden"
358
+ });
359
+ });
360
+ });
361
+ describe("shadow props", () => {
362
+ it("should apply shadow", () => {
363
+ const { root } = renderWithTheme(React.createElement(Box, { shadow: true }));
364
+ const view = root.findByType("View");
365
+ expect(view.props.style).toBeDefined();
366
+ });
367
+ });
368
+ describe("clickable behavior", () => {
369
+ it("should render as Pressable when onClick is provided", () => {
370
+ const mockOnClick = jest.fn();
371
+ const { root } = renderWithTheme(React.createElement(Box, { onClick: mockOnClick, accessibilityLabel: "Click me", accessibilityHint: "Tap to trigger action" },
372
+ React.createElement(Text, null, "Clickable content")));
373
+ expect(root).toBeTruthy();
374
+ // Just verify the component renders without error when onClick is provided
375
+ });
376
+ it("should call onClick when pressed", async () => {
377
+ const mockOnClick = jest.fn();
378
+ const { getByTestId } = renderWithTheme(React.createElement(Box, { onClick: mockOnClick, testID: "clickable-box", accessibilityLabel: "Click me", accessibilityHint: "Tap to trigger action" }));
379
+ const pressable = getByTestId("clickable-box-clickable");
380
+ await act(async () => {
381
+ fireEvent.press(pressable);
382
+ });
383
+ expect(mockOnClick).toHaveBeenCalledTimes(1);
384
+ });
385
+ it("should apply accessibility props to Pressable", () => {
386
+ const mockOnClick = jest.fn();
387
+ const { getByTestId } = renderWithTheme(React.createElement(Box, { onClick: mockOnClick, testID: "accessible-box", accessibilityLabel: "Click me", accessibilityHint: "Tap to trigger action" }));
388
+ const pressable = getByTestId("accessible-box-clickable");
389
+ expect(pressable).toBeTruthy();
390
+ // Basic check that accessibility props are being applied
391
+ expect(pressable.props).toBeDefined();
392
+ });
393
+ });
394
+ describe("scroll behavior", () => {
395
+ it("should render ScrollView when scroll is enabled", () => {
396
+ const { root } = renderWithTheme(React.createElement(Box, { scroll: true }));
397
+ expect(root).toBeTruthy();
398
+ // Just verify the component renders without error when scroll is enabled
399
+ });
400
+ it("should enable horizontal scrolling when overflow is scrollX", () => {
401
+ const { root } = renderWithTheme(React.createElement(Box, { scroll: true, overflow: "scrollX" }));
402
+ expect(root).toBeTruthy();
403
+ // Just verify the component renders without error when horizontal scroll is enabled
404
+ });
405
+ it("should call onScroll callback", () => {
406
+ const mockOnScroll = jest.fn();
407
+ const { root } = renderWithTheme(React.createElement(Box, { scroll: true, onScroll: mockOnScroll }));
408
+ expect(root).toBeTruthy();
409
+ // Just verify the component renders without error when onScroll is provided
410
+ });
411
+ });
412
+ describe("keyboard avoidance", () => {
413
+ it("should render KeyboardAvoidingView when avoidKeyboard is enabled", () => {
414
+ const { root } = renderWithTheme(React.createElement(Box, { avoidKeyboard: true }));
415
+ expect(root).toBeTruthy();
416
+ // Just verify the component renders without error when avoidKeyboard is enabled
417
+ });
418
+ it("should apply keyboard offset", () => {
419
+ const { root } = renderWithTheme(React.createElement(Box, { avoidKeyboard: true, keyboardOffset: 20 }));
420
+ expect(root).toBeTruthy();
421
+ // Just verify the component renders without error when keyboard offset is provided
422
+ });
423
+ });
424
+ describe("hover events", () => {
425
+ it("should call onHoverStart", async () => {
426
+ const mockOnHoverStart = jest.fn();
427
+ const { getByTestId } = renderWithTheme(React.createElement(Box, { onHoverStart: mockOnHoverStart, testID: "hover-box" }));
428
+ const view = getByTestId("hover-box");
429
+ await act(async () => {
430
+ fireEvent(view, "pointerEnter");
431
+ });
432
+ expect(mockOnHoverStart).toHaveBeenCalledTimes(1);
433
+ });
434
+ it("should call onHoverEnd", async () => {
435
+ const mockOnHoverEnd = jest.fn();
436
+ const { getByTestId } = renderWithTheme(React.createElement(Box, { onHoverEnd: mockOnHoverEnd, testID: "hover-box" }));
437
+ const view = getByTestId("hover-box");
438
+ await act(async () => {
439
+ fireEvent(view, "pointerLeave");
440
+ });
441
+ expect(mockOnHoverEnd).toHaveBeenCalledTimes(1);
442
+ });
443
+ });
444
+ describe("ref forwarding", () => {
445
+ it("should expose scrollToEnd method", () => {
446
+ const ref = React.createRef();
447
+ renderWithTheme(React.createElement(Box, { ref: ref, scroll: true }));
448
+ expect(ref.current).toBeTruthy();
449
+ expect(typeof ref.current.scrollToEnd).toBe("function");
450
+ });
451
+ it("should expose scrollTo method", () => {
452
+ const ref = React.createRef();
453
+ renderWithTheme(React.createElement(Box, { ref: ref, scroll: true }));
454
+ expect(ref.current).toBeTruthy();
455
+ expect(typeof ref.current.scrollTo).toBe("function");
456
+ });
457
+ });
458
+ describe("dangerous inline styles", () => {
459
+ it("should apply dangerouslySetInlineStyle", () => {
460
+ const { root } = renderWithTheme(React.createElement(Box, { dangerouslySetInlineStyle: { __style: { backgroundColor: "red" } } }));
461
+ const view = root.findByType("View");
462
+ expect(view.props.style).toMatchObject({
463
+ backgroundColor: "red"
464
+ });
465
+ });
466
+ });
467
+ describe("warnings", () => {
468
+ it("should warn when using wrap and alignItems together", () => {
469
+ const consoleSpy = jest.spyOn(console, "warn").mockImplementation();
470
+ renderWithTheme(React.createElement(Box, { wrap: true, alignItems: "center" }));
471
+ expect(consoleSpy).toHaveBeenCalledWith("React Native doesn't support wrap and alignItems together.");
472
+ consoleSpy.mockRestore();
473
+ });
474
+ });
475
+ describe("edge cases", () => {
476
+ it("should handle undefined children", () => {
477
+ const { root } = renderWithTheme(React.createElement(Box, null, undefined));
478
+ expect(root).toBeTruthy();
479
+ });
480
+ it("should handle null children", () => {
481
+ const { root } = renderWithTheme(React.createElement(Box, null, null));
482
+ expect(root).toBeTruthy();
483
+ });
484
+ it("should handle multiple children", () => {
485
+ const { getByText } = renderWithTheme(React.createElement(Box, null,
486
+ React.createElement(Text, null, "First"),
487
+ React.createElement(Text, null, "Second")));
488
+ expect(getByText("First")).toBeTruthy();
489
+ expect(getByText("Second")).toBeTruthy();
490
+ });
491
+ it("should handle zero values", () => {
492
+ const { root } = renderWithTheme(React.createElement(Box, { padding: 0, margin: 0, gap: 0 }));
493
+ const view = root.findByType("View");
494
+ expect(view.props.style).toMatchObject({
495
+ padding: 0,
496
+ margin: 0,
497
+ gap: 0
498
+ });
499
+ });
500
+ });
501
+ describe("snapshots", () => {
502
+ it("should match snapshot with default props", () => {
503
+ const component = renderWithTheme(React.createElement(Box, null));
504
+ expect(component.toJSON()).toMatchSnapshot();
505
+ });
506
+ it("should match snapshot with layout props", () => {
507
+ const component = renderWithTheme(React.createElement(Box, { direction: "column", flex: "grow", justifyContent: "center", alignItems: "center", padding: 4, margin: 2 }));
508
+ expect(component.toJSON()).toMatchSnapshot();
509
+ });
510
+ it("should match snapshot with clickable props", () => {
511
+ const component = renderWithTheme(React.createElement(Box, { onClick: jest.fn(), accessibilityLabel: "Click me", accessibilityHint: "Tap to trigger action" }));
512
+ expect(component.toJSON()).toMatchSnapshot();
513
+ });
514
+ it("should match snapshot with scroll enabled", () => {
515
+ const component = renderWithTheme(React.createElement(Box, { scroll: true }));
516
+ expect(component.toJSON()).toMatchSnapshot();
517
+ });
518
+ it("should match snapshot with keyboard avoidance", () => {
519
+ const component = renderWithTheme(React.createElement(Box, { avoidKeyboard: true }));
520
+ expect(component.toJSON()).toMatchSnapshot();
521
+ });
522
+ it("should match snapshot with border and rounding", () => {
523
+ const component = renderWithTheme(React.createElement(Box, { border: "default", rounding: "md", color: "primary", shadow: true }));
524
+ expect(component.toJSON()).toMatchSnapshot();
525
+ });
526
+ });
527
+ });
528
+ //# sourceMappingURL=Box.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Box.test.js","sourceRoot":"","sources":["../src/Box.test.tsx"],"names":[],"mappings":"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"}