@jobber/components-native 0.80.1-upgrade-to-feb557b.16 → 0.80.1-upgrade-to-2887450.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components-native",
3
- "version": "0.80.1-upgrade-to-feb557b.16+feb557bf",
3
+ "version": "0.80.1-upgrade-to-2887450.21+28874506",
4
4
  "license": "MIT",
5
5
  "description": "React Native implementation of Atlantis",
6
6
  "repository": {
@@ -80,5 +80,5 @@
80
80
  "react-native-safe-area-context": "^4.5.2",
81
81
  "react-native-svg": ">=12.0.0"
82
82
  },
83
- "gitHead": "feb557bf7d157f62138d5d34303d9fdb2cf61fb1"
83
+ "gitHead": "288745068c78774ec580f968bb469a5b1790ce46"
84
84
  }
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { fireEvent, render } from "@testing-library/react-native";
2
+ import { fireEvent, render, screen } from "@testing-library/react-native";
3
3
  import { ReactTestInstance } from "react-test-renderer";
4
4
  import { Disclosure } from ".";
5
5
  import { Text } from "../Text";
@@ -23,49 +23,107 @@ function fireLayoutEvent(disclosureContent: ReactTestInstance) {
23
23
  });
24
24
  }
25
25
 
26
- it("renders a Disclosure with a header and a content when open is true", () => {
27
- const disclosure = render(
28
- <Disclosure
29
- header={<Text>This is the header</Text>}
30
- content={<Text>This is the content</Text>}
31
- open={true}
32
- isEmpty={false}
33
- onToggle={() => {
34
- return;
35
- }}
36
- />,
37
- );
38
- fireLayoutEvent(disclosure.getByTestId("content"));
39
- expect(disclosure).toMatchSnapshot();
40
- });
26
+ describe("Disclosure", () => {
27
+ const defaultProps = {
28
+ header: <Text>This is the header</Text>,
29
+ content: <Text>This is the content</Text>,
30
+ onToggle: jest.fn(),
31
+ };
41
32
 
42
- it("renders a Disclosure with a header and with a content of size 0 when closed is false", () => {
43
- const disclosure = render(
44
- <Disclosure
45
- header={<Text>This is the header</Text>}
46
- content={<Text>This is the content</Text>}
47
- open={false}
48
- isEmpty={false}
49
- onToggle={() => {
50
- return;
51
- }}
52
- />,
53
- );
54
- fireLayoutEvent(disclosure.getByTestId("content"));
55
- expect(disclosure).toMatchSnapshot();
56
- });
33
+ it("renders a Disclosure with a header and a content when open is true", () => {
34
+ render(
35
+ <Disclosure
36
+ header={<Text>This is the header</Text>}
37
+ content={<Text>This is the content</Text>}
38
+ open={true}
39
+ isEmpty={false}
40
+ onToggle={() => {
41
+ return;
42
+ }}
43
+ />,
44
+ );
45
+
46
+ expect(screen.getByText("This is the header")).toBeTruthy();
47
+
48
+ const content = screen.getByTestId("content");
49
+ fireLayoutEvent(content);
50
+
51
+ expect(screen.getByText("This is the content")).toBeTruthy();
52
+ expect(screen.getByTestId("arrowUp")).toBeTruthy();
53
+ });
54
+
55
+ it("renders a Disclosure with a header and with a content of size 0 when open is false", () => {
56
+ render(
57
+ <Disclosure
58
+ header={<Text>This is the header</Text>}
59
+ content={<Text>This is the content</Text>}
60
+ open={false}
61
+ isEmpty={false}
62
+ onToggle={() => {
63
+ return;
64
+ }}
65
+ />,
66
+ );
67
+
68
+ expect(screen.getByText("This is the header")).toBeTruthy();
69
+
70
+ const content = screen.getByTestId("content");
71
+ fireLayoutEvent(content);
72
+
73
+ expect(screen.getByText("This is the content")).toBeTruthy();
74
+ expect(screen.getByTestId("arrowUp")).toBeTruthy();
75
+ });
57
76
 
58
- it("should not render the caret when the Disclosure is empty", () => {
59
- const disclosure = render(
60
- <Disclosure
61
- header={<Text>This is the header</Text>}
62
- content={<Text>This is the content</Text>}
63
- open={false}
64
- isEmpty={true}
65
- onToggle={() => {
66
- return;
67
- }}
68
- />,
69
- );
70
- expect(disclosure).toMatchSnapshot();
77
+ it("should not render the caret when the Disclosure is empty", () => {
78
+ render(
79
+ <Disclosure
80
+ header={<Text>This is the header</Text>}
81
+ content={<Text>This is the content</Text>}
82
+ open={false}
83
+ isEmpty={true}
84
+ onToggle={() => {
85
+ return;
86
+ }}
87
+ />,
88
+ );
89
+
90
+ expect(screen.getByText("This is the header")).toBeTruthy();
91
+ expect(screen.queryByTestId("arrowUp")).toBeNull();
92
+ });
93
+
94
+ it("calls onToggle when header is pressed", () => {
95
+ const onToggleMock = jest.fn();
96
+ const { getByText } = render(
97
+ <Disclosure
98
+ {...defaultProps}
99
+ onToggle={onToggleMock}
100
+ open={false}
101
+ isEmpty={false}
102
+ />,
103
+ );
104
+
105
+ const headerText = getByText("This is the header");
106
+
107
+ fireEvent.press(headerText);
108
+
109
+ expect(onToggleMock).toHaveBeenCalledTimes(1);
110
+ });
111
+
112
+ it("does not call onToggle when header is pressed and isEmpty is true", () => {
113
+ const onToggleMock = jest.fn();
114
+ const { getByText } = render(
115
+ <Disclosure
116
+ {...defaultProps}
117
+ onToggle={onToggleMock}
118
+ open={false}
119
+ isEmpty={true}
120
+ />,
121
+ );
122
+
123
+ const headerText = getByText("This is the header");
124
+
125
+ fireEvent.press(headerText);
126
+
127
+ expect(onToggleMock).not.toHaveBeenCalled();
128
+ });
71
129
  });
package/src/Form/Form.tsx CHANGED
@@ -138,7 +138,7 @@ function InternalForm<T extends FieldValues, S>({
138
138
 
139
139
  const styles = useStyles();
140
140
 
141
- // Comment to trigger build once more
141
+ // Comment to trigger build once more and again
142
142
  return (
143
143
  <FormProvider {...formMethods}>
144
144
  <>
@@ -4,8 +4,8 @@ import {
4
4
  fireEvent,
5
5
  render as renderComponent,
6
6
  } from "@testing-library/react-native";
7
+ import { Animated } from "react-native";
7
8
  import { GLIMMER_SHINE_TEST_ID, GLIMMER_TEST_ID, Glimmer } from "./Glimmer";
8
- import { tokens } from "../utils/design";
9
9
 
10
10
  let screen: ReturnType<typeof renderComponent<typeof Glimmer>>;
11
11
 
@@ -48,6 +48,10 @@ describe("Glimmer", () => {
48
48
 
49
49
  it("renders sets the correct width", () => {
50
50
  jest.useFakeTimers();
51
+
52
+ // Spy on Animated.timing to verify the animation configuration
53
+ const timingSpy = jest.spyOn(Animated, "timing");
54
+
51
55
  render(<Glimmer />);
52
56
 
53
57
  act(() => {
@@ -62,12 +66,19 @@ describe("Glimmer", () => {
62
66
  expect.objectContaining({ transform: [{ translateX: -48 }] }),
63
67
  );
64
68
 
65
- jest.advanceTimersByTime(tokens["timing-loading--extended"]);
69
+ expect(timingSpy).toHaveBeenCalled();
66
70
 
67
- expect(element.props.style).toEqual(
68
- expect.objectContaining({ transform: [{ translateX: 348 }] }),
69
- );
71
+ // Get the last call to timing
72
+ const lastCall = timingSpy.mock.calls[timingSpy.mock.calls.length - 1];
73
+
74
+ // The first argument should be the animated value
75
+ // The second argument should be the config
76
+ const config = lastCall[1];
77
+
78
+ // Verify animation targets the right end position (300 + 48 = 348)
79
+ expect(config.toValue).toBe(348);
70
80
 
81
+ timingSpy.mockRestore();
71
82
  jest.useRealTimers();
72
83
  });
73
84
  });
@@ -1,482 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`renders a Disclosure with a header and a content when open is true 1`] = `
4
- <View
5
- style={
6
- {
7
- "width": "100%",
8
- }
9
- }
10
- >
11
- <View
12
- accessibilityState={
13
- {
14
- "busy": undefined,
15
- "checked": undefined,
16
- "disabled": false,
17
- "expanded": undefined,
18
- "selected": undefined,
19
- }
20
- }
21
- accessibilityValue={
22
- {
23
- "max": undefined,
24
- "min": undefined,
25
- "now": undefined,
26
- "text": undefined,
27
- }
28
- }
29
- accessible={true}
30
- collapsable={false}
31
- focusable={true}
32
- onClick={[Function]}
33
- onResponderGrant={[Function]}
34
- onResponderMove={[Function]}
35
- onResponderRelease={[Function]}
36
- onResponderTerminate={[Function]}
37
- onResponderTerminationRequest={[Function]}
38
- onStartShouldSetResponder={[Function]}
39
- style={
40
- {
41
- "opacity": 1,
42
- }
43
- }
44
- >
45
- <View
46
- style={
47
- {
48
- "alignItems": "flex-start",
49
- "flexDirection": "row",
50
- "justifyContent": "space-between",
51
- }
52
- }
53
- >
54
- <Text
55
- accessibilityRole="text"
56
- adjustsFontSizeToFit={false}
57
- allowFontScaling={true}
58
- collapsable={false}
59
- maxFontSizeMultiplier={3.125}
60
- selectable={true}
61
- selectionColor="hsl(86, 100%, 46%)"
62
- style={
63
- [
64
- {
65
- "fontFamily": "inter-regular",
66
- },
67
- {
68
- "color": "hsl(198, 35%, 21%)",
69
- },
70
- {
71
- "textAlign": "left",
72
- },
73
- {
74
- "fontSize": 16,
75
- "lineHeight": 20,
76
- },
77
- {
78
- "letterSpacing": 0,
79
- },
80
- ]
81
- }
82
- >
83
- This is the header
84
- </Text>
85
- <View
86
- style={
87
- [
88
- {
89
- "transform": [
90
- {
91
- "rotateZ": "0deg",
92
- },
93
- ],
94
- },
95
- ]
96
- }
97
- >
98
- <SVGMock
99
- style={
100
- {
101
- "display": "flex",
102
- "fill": "hsl(0, 0%, 72%)",
103
- "height": 24,
104
- "verticalAlign": "middle",
105
- "width": 24,
106
- }
107
- }
108
- testID="arrowUp"
109
- viewBox="0 0 24 24"
110
- >
111
- <Path
112
- d="M16.297 14.709a.996.996 0 0 0 1.41-.001.994.994 0 0 0 0-1.41l-5-5.005a.998.998 0 0 0-1.415 0l-5 5a.994.994 0 0 0 0 1.41.996.996 0 0 0 1.411.001L12 10.416l4.297 4.293Z"
113
- fill="hsl(0, 0%, 72%)"
114
- />
115
- </SVGMock>
116
- </View>
117
- </View>
118
- </View>
119
- <RCTScrollView
120
- collapsable={false}
121
- scrollEnabled={false}
122
- scrollEventThrottle={0.0001}
123
- showsHorizontalScrollIndicator={false}
124
- showsVerticalScrollIndicator={false}
125
- style={
126
- {
127
- "height": 100,
128
- "paddingTop": 8,
129
- }
130
- }
131
- >
132
- <View>
133
- <View
134
- onLayout={[Function]}
135
- testID="content"
136
- >
137
- <Text
138
- accessibilityRole="text"
139
- adjustsFontSizeToFit={false}
140
- allowFontScaling={true}
141
- collapsable={false}
142
- maxFontSizeMultiplier={3.125}
143
- selectable={true}
144
- selectionColor="hsl(86, 100%, 46%)"
145
- style={
146
- [
147
- {
148
- "fontFamily": "inter-regular",
149
- },
150
- {
151
- "color": "hsl(198, 35%, 21%)",
152
- },
153
- {
154
- "textAlign": "left",
155
- },
156
- {
157
- "fontSize": 16,
158
- "lineHeight": 20,
159
- },
160
- {
161
- "letterSpacing": 0,
162
- },
163
- ]
164
- }
165
- >
166
- This is the content
167
- </Text>
168
- </View>
169
- </View>
170
- </RCTScrollView>
171
- </View>
172
- `;
173
-
174
- exports[`renders a Disclosure with a header and with a content of size 0 when closed is false 1`] = `
175
- <View
176
- style={
177
- {
178
- "width": "100%",
179
- }
180
- }
181
- >
182
- <View
183
- accessibilityState={
184
- {
185
- "busy": undefined,
186
- "checked": undefined,
187
- "disabled": false,
188
- "expanded": undefined,
189
- "selected": undefined,
190
- }
191
- }
192
- accessibilityValue={
193
- {
194
- "max": undefined,
195
- "min": undefined,
196
- "now": undefined,
197
- "text": undefined,
198
- }
199
- }
200
- accessible={true}
201
- collapsable={false}
202
- focusable={true}
203
- onClick={[Function]}
204
- onResponderGrant={[Function]}
205
- onResponderMove={[Function]}
206
- onResponderRelease={[Function]}
207
- onResponderTerminate={[Function]}
208
- onResponderTerminationRequest={[Function]}
209
- onStartShouldSetResponder={[Function]}
210
- style={
211
- {
212
- "opacity": 1,
213
- }
214
- }
215
- >
216
- <View
217
- style={
218
- {
219
- "alignItems": "flex-start",
220
- "flexDirection": "row",
221
- "justifyContent": "space-between",
222
- }
223
- }
224
- >
225
- <Text
226
- accessibilityRole="text"
227
- adjustsFontSizeToFit={false}
228
- allowFontScaling={true}
229
- collapsable={false}
230
- maxFontSizeMultiplier={3.125}
231
- selectable={true}
232
- selectionColor="hsl(86, 100%, 46%)"
233
- style={
234
- [
235
- {
236
- "fontFamily": "inter-regular",
237
- },
238
- {
239
- "color": "hsl(198, 35%, 21%)",
240
- },
241
- {
242
- "textAlign": "left",
243
- },
244
- {
245
- "fontSize": 16,
246
- "lineHeight": 20,
247
- },
248
- {
249
- "letterSpacing": 0,
250
- },
251
- ]
252
- }
253
- >
254
- This is the header
255
- </Text>
256
- <View
257
- style={
258
- [
259
- {
260
- "transform": [
261
- {
262
- "rotateZ": "-180deg",
263
- },
264
- ],
265
- },
266
- ]
267
- }
268
- >
269
- <SVGMock
270
- style={
271
- {
272
- "display": "flex",
273
- "fill": "hsl(0, 0%, 72%)",
274
- "height": 24,
275
- "verticalAlign": "middle",
276
- "width": 24,
277
- }
278
- }
279
- testID="arrowUp"
280
- viewBox="0 0 24 24"
281
- >
282
- <Path
283
- d="M16.297 14.709a.996.996 0 0 0 1.41-.001.994.994 0 0 0 0-1.41l-5-5.005a.998.998 0 0 0-1.415 0l-5 5a.994.994 0 0 0 0 1.41.996.996 0 0 0 1.411.001L12 10.416l4.297 4.293Z"
284
- fill="hsl(0, 0%, 72%)"
285
- />
286
- </SVGMock>
287
- </View>
288
- </View>
289
- </View>
290
- <RCTScrollView
291
- collapsable={false}
292
- scrollEnabled={false}
293
- scrollEventThrottle={0.0001}
294
- showsHorizontalScrollIndicator={false}
295
- showsVerticalScrollIndicator={false}
296
- style={
297
- {
298
- "height": 0,
299
- "paddingTop": 8,
300
- }
301
- }
302
- >
303
- <View>
304
- <View
305
- onLayout={[Function]}
306
- testID="content"
307
- >
308
- <Text
309
- accessibilityRole="text"
310
- adjustsFontSizeToFit={false}
311
- allowFontScaling={true}
312
- collapsable={false}
313
- maxFontSizeMultiplier={3.125}
314
- selectable={true}
315
- selectionColor="hsl(86, 100%, 46%)"
316
- style={
317
- [
318
- {
319
- "fontFamily": "inter-regular",
320
- },
321
- {
322
- "color": "hsl(198, 35%, 21%)",
323
- },
324
- {
325
- "textAlign": "left",
326
- },
327
- {
328
- "fontSize": 16,
329
- "lineHeight": 20,
330
- },
331
- {
332
- "letterSpacing": 0,
333
- },
334
- ]
335
- }
336
- >
337
- This is the content
338
- </Text>
339
- </View>
340
- </View>
341
- </RCTScrollView>
342
- </View>
343
- `;
344
-
345
- exports[`should not render the caret when the Disclosure is empty 1`] = `
346
- <View
347
- style={
348
- {
349
- "width": "100%",
350
- }
351
- }
352
- >
353
- <View
354
- accessibilityState={
355
- {
356
- "busy": undefined,
357
- "checked": undefined,
358
- "disabled": true,
359
- "expanded": undefined,
360
- "selected": undefined,
361
- }
362
- }
363
- accessibilityValue={
364
- {
365
- "max": undefined,
366
- "min": undefined,
367
- "now": undefined,
368
- "text": undefined,
369
- }
370
- }
371
- accessible={true}
372
- collapsable={false}
373
- focusable={false}
374
- onClick={[Function]}
375
- onResponderGrant={[Function]}
376
- onResponderMove={[Function]}
377
- onResponderRelease={[Function]}
378
- onResponderTerminate={[Function]}
379
- onResponderTerminationRequest={[Function]}
380
- onStartShouldSetResponder={[Function]}
381
- style={
382
- {
383
- "opacity": 1,
384
- }
385
- }
386
- >
387
- <View
388
- style={
389
- {
390
- "alignItems": "flex-start",
391
- "flexDirection": "row",
392
- "justifyContent": "space-between",
393
- }
394
- }
395
- >
396
- <Text
397
- accessibilityRole="text"
398
- adjustsFontSizeToFit={false}
399
- allowFontScaling={true}
400
- collapsable={false}
401
- maxFontSizeMultiplier={3.125}
402
- selectable={true}
403
- selectionColor="hsl(86, 100%, 46%)"
404
- style={
405
- [
406
- {
407
- "fontFamily": "inter-regular",
408
- },
409
- {
410
- "color": "hsl(198, 35%, 21%)",
411
- },
412
- {
413
- "textAlign": "left",
414
- },
415
- {
416
- "fontSize": 16,
417
- "lineHeight": 20,
418
- },
419
- {
420
- "letterSpacing": 0,
421
- },
422
- ]
423
- }
424
- >
425
- This is the header
426
- </Text>
427
- </View>
428
- </View>
429
- <RCTScrollView
430
- collapsable={false}
431
- scrollEnabled={false}
432
- scrollEventThrottle={0.0001}
433
- showsHorizontalScrollIndicator={false}
434
- showsVerticalScrollIndicator={false}
435
- style={
436
- {
437
- "height": 0,
438
- "paddingTop": 8,
439
- }
440
- }
441
- >
442
- <View>
443
- <View
444
- onLayout={[Function]}
445
- testID="content"
446
- >
447
- <Text
448
- accessibilityRole="text"
449
- adjustsFontSizeToFit={false}
450
- allowFontScaling={true}
451
- collapsable={false}
452
- maxFontSizeMultiplier={3.125}
453
- selectable={true}
454
- selectionColor="hsl(86, 100%, 46%)"
455
- style={
456
- [
457
- {
458
- "fontFamily": "inter-regular",
459
- },
460
- {
461
- "color": "hsl(198, 35%, 21%)",
462
- },
463
- {
464
- "textAlign": "left",
465
- },
466
- {
467
- "fontSize": 16,
468
- "lineHeight": 20,
469
- },
470
- {
471
- "letterSpacing": 0,
472
- },
473
- ]
474
- }
475
- >
476
- This is the content
477
- </Text>
478
- </View>
479
- </View>
480
- </RCTScrollView>
481
- </View>
482
- `;