react-native-timer-picker 2.6.0 → 2.6.1

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 (181) hide show
  1. package/dist/commonjs/components/DurationScroll/DurationScroll.js +426 -0
  2. package/dist/commonjs/components/DurationScroll/DurationScroll.js.map +1 -0
  3. package/dist/commonjs/components/DurationScroll/index.js +27 -0
  4. package/dist/commonjs/components/DurationScroll/index.js.map +1 -0
  5. package/dist/commonjs/components/DurationScroll/types.js +6 -0
  6. package/dist/commonjs/components/DurationScroll/types.js.map +1 -0
  7. package/dist/commonjs/components/Modal/Modal.js +107 -0
  8. package/dist/commonjs/components/Modal/Modal.js.map +1 -0
  9. package/dist/commonjs/components/Modal/index.js +27 -0
  10. package/dist/commonjs/components/Modal/index.js.map +1 -0
  11. package/dist/commonjs/components/Modal/styles.js +25 -0
  12. package/dist/commonjs/components/Modal/styles.js.map +1 -0
  13. package/dist/commonjs/components/Modal/types.js +6 -0
  14. package/dist/commonjs/components/Modal/types.js.map +1 -0
  15. package/dist/commonjs/components/PickerItem/PickerItem.js +48 -0
  16. package/dist/commonjs/components/PickerItem/PickerItem.js.map +1 -0
  17. package/dist/commonjs/components/PickerItem/index.js +14 -0
  18. package/dist/commonjs/components/PickerItem/index.js.map +1 -0
  19. package/dist/commonjs/components/TimerPicker/TimerPicker.js +266 -0
  20. package/dist/commonjs/components/TimerPicker/TimerPicker.js.map +1 -0
  21. package/dist/commonjs/components/TimerPicker/index.js +39 -0
  22. package/dist/commonjs/components/TimerPicker/index.js.map +1 -0
  23. package/dist/commonjs/components/TimerPicker/styles.js +140 -0
  24. package/dist/commonjs/components/TimerPicker/styles.js.map +1 -0
  25. package/dist/commonjs/components/TimerPicker/types.js +6 -0
  26. package/dist/commonjs/components/TimerPicker/types.js.map +1 -0
  27. package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js +173 -0
  28. package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js.map +1 -0
  29. package/dist/commonjs/components/TimerPickerModal/index.js +39 -0
  30. package/dist/commonjs/components/TimerPickerModal/index.js.map +1 -0
  31. package/dist/commonjs/components/TimerPickerModal/styles.js +95 -0
  32. package/dist/commonjs/components/TimerPickerModal/styles.js.map +1 -0
  33. package/dist/commonjs/components/TimerPickerModal/types.js +6 -0
  34. package/dist/commonjs/components/TimerPickerModal/types.js.map +1 -0
  35. package/dist/commonjs/index.js +21 -0
  36. package/dist/commonjs/index.js.map +1 -0
  37. package/dist/commonjs/tests/DurationScroll.test.js +163 -0
  38. package/dist/commonjs/tests/DurationScroll.test.js.map +1 -0
  39. package/dist/commonjs/tests/Modal.test.js +99 -0
  40. package/dist/commonjs/tests/Modal.test.js.map +1 -0
  41. package/dist/commonjs/tests/TimerPicker.test.js +161 -0
  42. package/dist/commonjs/tests/TimerPicker.test.js.map +1 -0
  43. package/dist/commonjs/tests/TimerPickerModal.test.js +276 -0
  44. package/dist/commonjs/tests/TimerPickerModal.test.js.map +1 -0
  45. package/dist/commonjs/tests/colorToRgba.test.js +176 -0
  46. package/dist/commonjs/tests/colorToRgba.test.js.map +1 -0
  47. package/dist/commonjs/tests/generateNumbers.test.js +350 -0
  48. package/dist/commonjs/tests/generateNumbers.test.js.map +1 -0
  49. package/dist/commonjs/tests/getAdjustedLimit.test.js +324 -0
  50. package/dist/commonjs/tests/getAdjustedLimit.test.js.map +1 -0
  51. package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js +424 -0
  52. package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
  53. package/dist/commonjs/tests/getInitialScrollIndex.test.js +396 -0
  54. package/dist/commonjs/tests/getInitialScrollIndex.test.js.map +1 -0
  55. package/dist/commonjs/tests/getSafeInitialValue.test.js +499 -0
  56. package/dist/commonjs/tests/getSafeInitialValue.test.js.map +1 -0
  57. package/dist/commonjs/tests/padNumber.test.js +301 -0
  58. package/dist/commonjs/tests/padNumber.test.js.map +1 -0
  59. package/dist/commonjs/utils/colorToRgba.js +87 -0
  60. package/dist/commonjs/utils/colorToRgba.js.map +1 -0
  61. package/dist/commonjs/utils/generateNumbers.js +124 -0
  62. package/dist/commonjs/utils/generateNumbers.js.map +1 -0
  63. package/dist/commonjs/utils/getAdjustedLimit.js +58 -0
  64. package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -0
  65. package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js +62 -0
  66. package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js.map +1 -0
  67. package/dist/commonjs/utils/getInitialScrollIndex.js +57 -0
  68. package/dist/commonjs/utils/getInitialScrollIndex.js.map +1 -0
  69. package/dist/commonjs/utils/getSafeInitialValue.js +41 -0
  70. package/dist/commonjs/utils/getSafeInitialValue.js.map +1 -0
  71. package/dist/commonjs/utils/padNumber.js +40 -0
  72. package/dist/commonjs/utils/padNumber.js.map +1 -0
  73. package/dist/module/components/DurationScroll/DurationScroll.js +418 -0
  74. package/dist/module/components/DurationScroll/DurationScroll.js.map +1 -0
  75. package/dist/module/components/DurationScroll/index.js +3 -0
  76. package/dist/module/components/DurationScroll/index.js.map +1 -0
  77. package/dist/module/components/DurationScroll/types.js +2 -0
  78. package/dist/module/components/DurationScroll/types.js.map +1 -0
  79. package/dist/module/components/Modal/Modal.js +99 -0
  80. package/dist/module/components/Modal/Modal.js.map +1 -0
  81. package/dist/module/components/Modal/index.js +3 -0
  82. package/dist/module/components/Modal/index.js.map +1 -0
  83. package/dist/module/components/Modal/styles.js +19 -0
  84. package/dist/module/components/Modal/styles.js.map +1 -0
  85. package/dist/module/components/Modal/types.js +2 -0
  86. package/dist/module/components/Modal/types.js.map +1 -0
  87. package/dist/module/components/PickerItem/PickerItem.js +41 -0
  88. package/dist/module/components/PickerItem/PickerItem.js.map +1 -0
  89. package/dist/module/components/PickerItem/index.js +2 -0
  90. package/dist/module/components/PickerItem/index.js.map +1 -0
  91. package/dist/module/components/TimerPicker/TimerPicker.js +258 -0
  92. package/dist/module/components/TimerPicker/TimerPicker.js.map +1 -0
  93. package/dist/module/components/TimerPicker/index.js +4 -0
  94. package/dist/module/components/TimerPicker/index.js.map +1 -0
  95. package/dist/module/components/TimerPicker/styles.js +133 -0
  96. package/dist/module/components/TimerPicker/styles.js.map +1 -0
  97. package/dist/module/components/TimerPicker/types.js +2 -0
  98. package/dist/module/components/TimerPicker/types.js.map +1 -0
  99. package/dist/module/components/TimerPickerModal/TimerPickerModal.js +165 -0
  100. package/dist/module/components/TimerPickerModal/TimerPickerModal.js.map +1 -0
  101. package/dist/module/components/TimerPickerModal/index.js +4 -0
  102. package/dist/module/components/TimerPickerModal/index.js.map +1 -0
  103. package/dist/module/components/TimerPickerModal/styles.js +88 -0
  104. package/dist/module/components/TimerPickerModal/styles.js.map +1 -0
  105. package/dist/module/components/TimerPickerModal/types.js +2 -0
  106. package/dist/module/components/TimerPickerModal/types.js.map +1 -0
  107. package/dist/module/index.js +3 -0
  108. package/dist/module/index.js.map +1 -0
  109. package/dist/module/tests/DurationScroll.test.js +160 -0
  110. package/dist/module/tests/DurationScroll.test.js.map +1 -0
  111. package/dist/module/tests/Modal.test.js +96 -0
  112. package/dist/module/tests/Modal.test.js.map +1 -0
  113. package/dist/module/tests/TimerPicker.test.js +159 -0
  114. package/dist/module/tests/TimerPicker.test.js.map +1 -0
  115. package/dist/module/tests/TimerPickerModal.test.js +273 -0
  116. package/dist/module/tests/TimerPickerModal.test.js.map +1 -0
  117. package/dist/module/tests/colorToRgba.test.js +174 -0
  118. package/dist/module/tests/colorToRgba.test.js.map +1 -0
  119. package/dist/module/tests/generateNumbers.test.js +348 -0
  120. package/dist/module/tests/generateNumbers.test.js.map +1 -0
  121. package/dist/module/tests/getAdjustedLimit.test.js +322 -0
  122. package/dist/module/tests/getAdjustedLimit.test.js.map +1 -0
  123. package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js +422 -0
  124. package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
  125. package/dist/module/tests/getInitialScrollIndex.test.js +394 -0
  126. package/dist/module/tests/getInitialScrollIndex.test.js.map +1 -0
  127. package/dist/module/tests/getSafeInitialValue.test.js +496 -0
  128. package/dist/module/tests/getSafeInitialValue.test.js.map +1 -0
  129. package/dist/module/tests/padNumber.test.js +299 -0
  130. package/dist/module/tests/padNumber.test.js.map +1 -0
  131. package/dist/module/utils/colorToRgba.js +80 -0
  132. package/dist/module/utils/colorToRgba.js.map +1 -0
  133. package/dist/module/utils/generateNumbers.js +117 -0
  134. package/dist/module/utils/generateNumbers.js.map +1 -0
  135. package/dist/module/utils/getAdjustedLimit.js +51 -0
  136. package/dist/module/utils/getAdjustedLimit.js.map +1 -0
  137. package/dist/module/utils/getDurationAndIndexFromScrollOffset.js +55 -0
  138. package/dist/module/utils/getDurationAndIndexFromScrollOffset.js.map +1 -0
  139. package/dist/module/utils/getInitialScrollIndex.js +50 -0
  140. package/dist/module/utils/getInitialScrollIndex.js.map +1 -0
  141. package/dist/module/utils/getSafeInitialValue.js +34 -0
  142. package/dist/module/utils/getSafeInitialValue.js.map +1 -0
  143. package/dist/module/utils/padNumber.js +33 -0
  144. package/dist/module/utils/padNumber.js.map +1 -0
  145. package/dist/typescript/components/DurationScroll/DurationScroll.d.ts +4 -0
  146. package/dist/typescript/components/DurationScroll/index.d.ts +2 -0
  147. package/dist/typescript/components/DurationScroll/types.d.ts +70 -0
  148. package/dist/typescript/components/Modal/Modal.d.ts +5 -0
  149. package/dist/typescript/components/Modal/index.d.ts +2 -0
  150. package/dist/typescript/components/Modal/styles.d.ts +17 -0
  151. package/dist/typescript/components/Modal/types.d.ts +16 -0
  152. package/dist/typescript/components/PickerItem/PickerItem.d.ts +19 -0
  153. package/dist/typescript/components/PickerItem/index.d.ts +1 -0
  154. package/dist/typescript/components/TimerPicker/TimerPicker.d.ts +4 -0
  155. package/dist/typescript/components/TimerPicker/index.d.ts +3 -0
  156. package/dist/typescript/components/TimerPicker/styles.d.ts +1583 -0
  157. package/dist/typescript/components/TimerPicker/types.d.ts +91 -0
  158. package/dist/typescript/components/TimerPickerModal/TimerPickerModal.d.ts +4 -0
  159. package/dist/typescript/components/TimerPickerModal/index.d.ts +3 -0
  160. package/dist/typescript/components/TimerPickerModal/styles.d.ts +952 -0
  161. package/dist/typescript/components/TimerPickerModal/types.d.ts +56 -0
  162. package/dist/typescript/index.d.ts +4 -0
  163. package/dist/typescript/tests/DurationScroll.test.d.ts +1 -0
  164. package/dist/typescript/tests/Modal.test.d.ts +1 -0
  165. package/dist/typescript/tests/TimerPicker.test.d.ts +1 -0
  166. package/dist/typescript/tests/TimerPickerModal.test.d.ts +1 -0
  167. package/dist/typescript/tests/colorToRgba.test.d.ts +1 -0
  168. package/dist/typescript/tests/generateNumbers.test.d.ts +1 -0
  169. package/dist/typescript/tests/getAdjustedLimit.test.d.ts +1 -0
  170. package/dist/typescript/tests/getDurationAndIndexFromScrollOffset.test.d.ts +1 -0
  171. package/dist/typescript/tests/getInitialScrollIndex.test.d.ts +1 -0
  172. package/dist/typescript/tests/getSafeInitialValue.test.d.ts +1 -0
  173. package/dist/typescript/tests/padNumber.test.d.ts +1 -0
  174. package/dist/typescript/utils/colorToRgba.d.ts +38 -0
  175. package/dist/typescript/utils/generateNumbers.d.ts +80 -0
  176. package/dist/typescript/utils/getAdjustedLimit.d.ts +30 -0
  177. package/dist/typescript/utils/getDurationAndIndexFromScrollOffset.d.ts +49 -0
  178. package/dist/typescript/utils/getInitialScrollIndex.d.ts +46 -0
  179. package/dist/typescript/utils/getSafeInitialValue.d.ts +38 -0
  180. package/dist/typescript/utils/padNumber.d.ts +28 -0
  181. package/package.json +3 -2
@@ -0,0 +1,160 @@
1
+ import React from "react";
2
+ import { render } from "@testing-library/react-native";
3
+ import DurationScroll from "../components/DurationScroll";
4
+ describe("DurationScroll", () => {
5
+ const onDurationChangeMock = jest.fn();
6
+ const emptyStyles = {
7
+ disabledPickerContainer: {},
8
+ disabledPickerItem: {},
9
+ pickerAmPmContainer: {},
10
+ pickerAmPmLabel: {},
11
+ pickerContainer: {},
12
+ pickerGradientOverlay: {},
13
+ pickerItem: {},
14
+ pickerItemContainer: {},
15
+ pickerLabel: {},
16
+ pickerLabelContainer: {}
17
+ };
18
+ it("renders without crashing", () => {
19
+ const {
20
+ getByTestId
21
+ } = render(/*#__PURE__*/React.createElement(DurationScroll, {
22
+ aggressivelyGetLatestDuration: false,
23
+ interval: 1,
24
+ maximumValue: 1,
25
+ onDurationChange: onDurationChangeMock,
26
+ padWithNItems: 0,
27
+ repeatNumbersNTimesNotExplicitlySet: true,
28
+ styles: emptyStyles,
29
+ testID: "duration-scroll"
30
+ }));
31
+ const component = getByTestId("duration-scroll");
32
+ expect(component).toBeDefined();
33
+ });
34
+ it("renders the correct number of items", () => {
35
+ const {
36
+ getAllByTestId
37
+ } = render(/*#__PURE__*/React.createElement(DurationScroll, {
38
+ aggressivelyGetLatestDuration: false,
39
+ interval: 1,
40
+ maximumValue: 23,
41
+ onDurationChange: onDurationChangeMock,
42
+ padWithNItems: 1,
43
+ repeatNumbersNTimesNotExplicitlySet: true,
44
+ styles: emptyStyles
45
+ }));
46
+ const items = getAllByTestId("picker-item");
47
+ expect(items).toHaveLength(10);
48
+ });
49
+ it("renders the label if provided", () => {
50
+ const {
51
+ getByText
52
+ } = render(/*#__PURE__*/React.createElement(DurationScroll, {
53
+ aggressivelyGetLatestDuration: false,
54
+ interval: 1,
55
+ label: "Duration",
56
+ maximumValue: 59,
57
+ onDurationChange: onDurationChangeMock,
58
+ padWithNItems: 1,
59
+ repeatNumbersNTimesNotExplicitlySet: true,
60
+ styles: emptyStyles
61
+ }));
62
+ const label = getByText("Duration");
63
+ expect(label).toBeDefined();
64
+ });
65
+ it("does not render label when not provided", () => {
66
+ const {
67
+ queryByTestId
68
+ } = render(/*#__PURE__*/React.createElement(DurationScroll, {
69
+ aggressivelyGetLatestDuration: false,
70
+ interval: 1,
71
+ maximumValue: 59,
72
+ onDurationChange: onDurationChangeMock,
73
+ padWithNItems: 1,
74
+ repeatNumbersNTimesNotExplicitlySet: true,
75
+ styles: emptyStyles
76
+ }));
77
+ const label = queryByTestId("picker-label");
78
+ expect(label).toBeNull();
79
+ });
80
+ it("handles different intervals", () => {
81
+ const {
82
+ getAllByTestId
83
+ } = render(/*#__PURE__*/React.createElement(DurationScroll, {
84
+ aggressivelyGetLatestDuration: false,
85
+ interval: 5,
86
+ maximumValue: 55,
87
+ onDurationChange: onDurationChangeMock,
88
+ padWithNItems: 1,
89
+ repeatNumbersNTimesNotExplicitlySet: true,
90
+ styles: emptyStyles
91
+ }));
92
+ const items = getAllByTestId("picker-item");
93
+ expect(items).toBeDefined();
94
+ });
95
+ it("renders with zero padWithNItems", () => {
96
+ const {
97
+ getByTestId
98
+ } = render(/*#__PURE__*/React.createElement(DurationScroll, {
99
+ aggressivelyGetLatestDuration: false,
100
+ interval: 1,
101
+ maximumValue: 59,
102
+ onDurationChange: onDurationChangeMock,
103
+ padWithNItems: 0,
104
+ repeatNumbersNTimesNotExplicitlySet: true,
105
+ styles: emptyStyles,
106
+ testID: "duration-scroll"
107
+ }));
108
+ const component = getByTestId("duration-scroll");
109
+ expect(component).toBeDefined();
110
+ });
111
+ it("handles large maximumValue", () => {
112
+ const {
113
+ getByTestId
114
+ } = render(/*#__PURE__*/React.createElement(DurationScroll, {
115
+ aggressivelyGetLatestDuration: false,
116
+ interval: 1,
117
+ maximumValue: 999,
118
+ onDurationChange: onDurationChangeMock,
119
+ padWithNItems: 1,
120
+ repeatNumbersNTimesNotExplicitlySet: true,
121
+ styles: emptyStyles,
122
+ testID: "duration-scroll"
123
+ }));
124
+ const component = getByTestId("duration-scroll");
125
+ expect(component).toBeDefined();
126
+ });
127
+ it("handles aggressivelyGetLatestDuration set to true", () => {
128
+ const {
129
+ getByTestId
130
+ } = render(/*#__PURE__*/React.createElement(DurationScroll, {
131
+ aggressivelyGetLatestDuration: true,
132
+ interval: 1,
133
+ maximumValue: 59,
134
+ onDurationChange: onDurationChangeMock,
135
+ padWithNItems: 1,
136
+ repeatNumbersNTimesNotExplicitlySet: true,
137
+ styles: emptyStyles,
138
+ testID: "duration-scroll"
139
+ }));
140
+ const component = getByTestId("duration-scroll");
141
+ expect(component).toBeDefined();
142
+ });
143
+ it("handles repeatNumbersNTimesNotExplicitlySet set to false", () => {
144
+ const {
145
+ getByTestId
146
+ } = render(/*#__PURE__*/React.createElement(DurationScroll, {
147
+ aggressivelyGetLatestDuration: false,
148
+ interval: 1,
149
+ maximumValue: 59,
150
+ onDurationChange: onDurationChangeMock,
151
+ padWithNItems: 1,
152
+ repeatNumbersNTimesNotExplicitlySet: false,
153
+ styles: emptyStyles,
154
+ testID: "duration-scroll"
155
+ }));
156
+ const component = getByTestId("duration-scroll");
157
+ expect(component).toBeDefined();
158
+ });
159
+ });
160
+ //# sourceMappingURL=DurationScroll.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","render","DurationScroll","describe","onDurationChangeMock","jest","fn","emptyStyles","disabledPickerContainer","disabledPickerItem","pickerAmPmContainer","pickerAmPmLabel","pickerContainer","pickerGradientOverlay","pickerItem","pickerItemContainer","pickerLabel","pickerLabelContainer","it","getByTestId","createElement","aggressivelyGetLatestDuration","interval","maximumValue","onDurationChange","padWithNItems","repeatNumbersNTimesNotExplicitlySet","styles","testID","component","expect","toBeDefined","getAllByTestId","items","toHaveLength","getByText","label","queryByTestId","toBeNull"],"sources":["DurationScroll.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render } from \"@testing-library/react-native\";\n\nimport DurationScroll from \"../components/DurationScroll\";\nimport type { generateStyles } from \"../components/TimerPicker/styles\";\n\ndescribe(\"DurationScroll\", () => {\n const onDurationChangeMock = jest.fn();\n const emptyStyles = {\n disabledPickerContainer: {},\n disabledPickerItem: {},\n pickerAmPmContainer: {},\n pickerAmPmLabel: {},\n pickerContainer: {},\n pickerGradientOverlay: {},\n pickerItem: {},\n pickerItemContainer: {},\n pickerLabel: {},\n pickerLabelContainer: {},\n } as ReturnType<typeof generateStyles>;\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={1}\n onDurationChange={onDurationChangeMock}\n padWithNItems={0}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"renders the correct number of items\", () => {\n const { getAllByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={23}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const items = getAllByTestId(\"picker-item\");\n expect(items).toHaveLength(10);\n });\n\n it(\"renders the label if provided\", () => {\n const { getByText } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n label=\"Duration\"\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const label = getByText(\"Duration\");\n expect(label).toBeDefined();\n });\n\n it(\"does not render label when not provided\", () => {\n const { queryByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const label = queryByTestId(\"picker-label\");\n expect(label).toBeNull();\n });\n\n it(\"handles different intervals\", () => {\n const { getAllByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={5}\n maximumValue={55}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const items = getAllByTestId(\"picker-item\");\n expect(items).toBeDefined();\n });\n\n it(\"renders with zero padWithNItems\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={0}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles large maximumValue\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={999}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles aggressivelyGetLatestDuration set to true\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={true}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles repeatNumbersNTimesNotExplicitlySet set to false\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={false}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,96 @@
1
+ import React from "react";
2
+ import { render, fireEvent, cleanup } from "@testing-library/react-native";
3
+ import { Text } from "react-native";
4
+ import Modal from "../components/Modal";
5
+ describe("Modal", () => {
6
+ beforeEach(() => {
7
+ jest.useFakeTimers();
8
+ });
9
+ afterEach(() => {
10
+ jest.runOnlyPendingTimers();
11
+ jest.useRealTimers();
12
+ cleanup();
13
+ });
14
+ it("renders without crashing", () => {
15
+ const {
16
+ getByTestId
17
+ } = render(/*#__PURE__*/React.createElement(Modal, {
18
+ isVisible: true
19
+ }));
20
+ const component = getByTestId("modal");
21
+ expect(component).toBeDefined();
22
+ });
23
+ it("renders children when visible", () => {
24
+ const {
25
+ getByText
26
+ } = render(/*#__PURE__*/React.createElement(Modal, {
27
+ isVisible: true
28
+ }, /*#__PURE__*/React.createElement(Text, null, "Modal Content")));
29
+ const content = getByText("Modal Content");
30
+ expect(content).toBeDefined();
31
+ });
32
+ it("calls onOverlayPress when overlay is pressed", () => {
33
+ const onOverlayPressMock = jest.fn();
34
+ const {
35
+ getByTestId
36
+ } = render(/*#__PURE__*/React.createElement(Modal, {
37
+ isVisible: true,
38
+ onOverlayPress: onOverlayPressMock
39
+ }));
40
+ const overlay = getByTestId("modal-backdrop");
41
+ fireEvent.press(overlay);
42
+ expect(onOverlayPressMock).toHaveBeenCalled();
43
+ });
44
+ it("renders but is not visible when isVisible is false", () => {
45
+ const {
46
+ getByTestId
47
+ } = render(/*#__PURE__*/React.createElement(Modal, {
48
+ isVisible: false
49
+ }));
50
+ const modal = getByTestId("modal");
51
+ expect(modal).toBeDefined();
52
+ expect(modal.props.visible).toBe(false);
53
+ });
54
+ it("does not call onOverlayPress when onOverlayPress is not provided", () => {
55
+ const {
56
+ getByTestId
57
+ } = render(/*#__PURE__*/React.createElement(Modal, {
58
+ isVisible: true
59
+ }));
60
+ const overlay = getByTestId("modal-backdrop");
61
+ expect(() => fireEvent.press(overlay)).not.toThrow();
62
+ });
63
+ it("handles rapid visibility changes", () => {
64
+ const {
65
+ getByTestId,
66
+ rerender
67
+ } = render(/*#__PURE__*/React.createElement(Modal, {
68
+ isVisible: true
69
+ }));
70
+ expect(getByTestId("modal")).toBeDefined();
71
+ expect(getByTestId("modal").props.visible).toBe(true);
72
+ rerender(/*#__PURE__*/React.createElement(Modal, {
73
+ isVisible: false
74
+ }));
75
+ expect(getByTestId("modal")).toBeDefined();
76
+ expect(getByTestId("modal").props.visible).toBe(false);
77
+ rerender(/*#__PURE__*/React.createElement(Modal, {
78
+ isVisible: true
79
+ }));
80
+ expect(getByTestId("modal")).toBeDefined();
81
+ expect(getByTestId("modal").props.visible).toBe(true);
82
+ });
83
+ it("calls onOverlayPress exactly once per press", () => {
84
+ const onOverlayPressMock = jest.fn();
85
+ const {
86
+ getByTestId
87
+ } = render(/*#__PURE__*/React.createElement(Modal, {
88
+ isVisible: true,
89
+ onOverlayPress: onOverlayPressMock
90
+ }));
91
+ const overlay = getByTestId("modal-backdrop");
92
+ fireEvent.press(overlay);
93
+ expect(onOverlayPressMock).toHaveBeenCalledTimes(1);
94
+ });
95
+ });
96
+ //# sourceMappingURL=Modal.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","render","fireEvent","cleanup","Text","Modal","describe","beforeEach","jest","useFakeTimers","afterEach","runOnlyPendingTimers","useRealTimers","it","getByTestId","createElement","isVisible","component","expect","toBeDefined","getByText","content","onOverlayPressMock","fn","onOverlayPress","overlay","press","toHaveBeenCalled","modal","props","visible","toBe","not","toThrow","rerender","toHaveBeenCalledTimes"],"sources":["Modal.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render, fireEvent, cleanup } from \"@testing-library/react-native\";\nimport { Text } from \"react-native\";\n\nimport Modal from \"../components/Modal\";\n\ndescribe(\"Modal\", () => {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.runOnlyPendingTimers();\n jest.useRealTimers();\n cleanup();\n });\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(<Modal isVisible />);\n const component = getByTestId(\"modal\");\n expect(component).toBeDefined();\n });\n\n it(\"renders children when visible\", () => {\n const { getByText } = render(\n <Modal isVisible>\n <Text>{\"Modal Content\"}</Text>\n </Modal>\n );\n const content = getByText(\"Modal Content\");\n expect(content).toBeDefined();\n });\n\n it(\"calls onOverlayPress when overlay is pressed\", () => {\n const onOverlayPressMock = jest.fn();\n const { getByTestId } = render(<Modal isVisible onOverlayPress={onOverlayPressMock} />);\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(onOverlayPressMock).toHaveBeenCalled();\n });\n\n it(\"renders but is not visible when isVisible is false\", () => {\n const { getByTestId } = render(<Modal isVisible={false} />);\n const modal = getByTestId(\"modal\");\n expect(modal).toBeDefined();\n expect(modal.props.visible).toBe(false);\n });\n\n it(\"does not call onOverlayPress when onOverlayPress is not provided\", () => {\n const { getByTestId } = render(<Modal isVisible />);\n const overlay = getByTestId(\"modal-backdrop\");\n expect(() => fireEvent.press(overlay)).not.toThrow();\n });\n\n it(\"handles rapid visibility changes\", () => {\n const { getByTestId, rerender } = render(<Modal isVisible={true} />);\n expect(getByTestId(\"modal\")).toBeDefined();\n expect(getByTestId(\"modal\").props.visible).toBe(true);\n\n rerender(<Modal isVisible={false} />);\n expect(getByTestId(\"modal\")).toBeDefined();\n expect(getByTestId(\"modal\").props.visible).toBe(false);\n\n rerender(<Modal isVisible={true} />);\n expect(getByTestId(\"modal\")).toBeDefined();\n expect(getByTestId(\"modal\").props.visible).toBe(true);\n });\n\n it(\"calls onOverlayPress exactly once per press\", () => {\n const onOverlayPressMock = jest.fn();\n const { getByTestId } = render(<Modal isVisible onOverlayPress={onOverlayPressMock} />);\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(onOverlayPressMock).toHaveBeenCalledTimes(1);\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,159 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ import React from "react";
4
+ import { render } from "@testing-library/react-native";
5
+ import { FlatList } from "react-native";
6
+ import TimerPicker from "../components/TimerPicker";
7
+ describe("TimerPicker", () => {
8
+ it("renders without crashing", () => {
9
+ const {
10
+ getByTestId
11
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, null));
12
+ const component = getByTestId("timer-picker");
13
+ expect(component).toBeDefined();
14
+ });
15
+ it("renders without crashing with negative padWithNItems", () => {
16
+ const {
17
+ getByTestId
18
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
19
+ padWithNItems: -1
20
+ }));
21
+ const component = getByTestId("timer-picker");
22
+ expect(component).toBeDefined();
23
+ });
24
+ it("hides days, minutes and seconds when respective hide props are provided", () => {
25
+ const {
26
+ queryByTestId
27
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
28
+ hideDays: true,
29
+ hideMinutes: true,
30
+ hideSeconds: true
31
+ }));
32
+ const dayPicker = queryByTestId("duration-scroll-day");
33
+ const minutePicker = queryByTestId("duration-scroll-minute");
34
+ const secondPicker = queryByTestId("duration-scroll-second");
35
+ expect(dayPicker).toBeNull();
36
+ expect(minutePicker).toBeNull();
37
+ expect(secondPicker).toBeNull();
38
+ });
39
+ it("uses the custom FlatList component when provided", () => {
40
+ const CustomFlatList = props => /*#__PURE__*/React.createElement(FlatList, _extends({}, props, {
41
+ testID: "custom-flat-list"
42
+ }));
43
+ const {
44
+ queryAllByTestId
45
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
46
+ FlatList: CustomFlatList
47
+ }));
48
+ const customFlatList = queryAllByTestId("custom-flat-list");
49
+ expect(customFlatList).toHaveLength(3);
50
+ });
51
+ it("renders all pickers by default (hours, minutes, seconds)", () => {
52
+ const {
53
+ getByTestId
54
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, null));
55
+ expect(getByTestId("duration-scroll-hour")).toBeDefined();
56
+ expect(getByTestId("duration-scroll-minute")).toBeDefined();
57
+ expect(getByTestId("duration-scroll-second")).toBeDefined();
58
+ });
59
+ it("hides hours when hideHours is true", () => {
60
+ const {
61
+ queryByTestId
62
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
63
+ hideHours: true
64
+ }));
65
+ expect(queryByTestId("duration-scroll-hour")).toBeNull();
66
+ });
67
+ it("renders with custom initial value", () => {
68
+ const {
69
+ getByTestId
70
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
71
+ initialValue: {
72
+ hours: 2,
73
+ minutes: 30,
74
+ seconds: 45
75
+ }
76
+ }));
77
+ expect(getByTestId("timer-picker")).toBeDefined();
78
+ });
79
+ it("renders with hourInterval", () => {
80
+ const {
81
+ getByTestId
82
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
83
+ hourInterval: 2
84
+ }));
85
+ expect(getByTestId("timer-picker")).toBeDefined();
86
+ });
87
+ it("renders with minuteInterval", () => {
88
+ const {
89
+ getByTestId
90
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
91
+ minuteInterval: 15
92
+ }));
93
+ expect(getByTestId("timer-picker")).toBeDefined();
94
+ });
95
+ it("renders with secondInterval", () => {
96
+ const {
97
+ getByTestId
98
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
99
+ secondInterval: 5
100
+ }));
101
+ expect(getByTestId("timer-picker")).toBeDefined();
102
+ });
103
+ it("renders with custom labels", () => {
104
+ const {
105
+ getByText
106
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
107
+ hourLabel: "hrs",
108
+ minuteLabel: "mins",
109
+ secondLabel: "secs"
110
+ }));
111
+ expect(getByText("hrs")).toBeDefined();
112
+ expect(getByText("mins")).toBeDefined();
113
+ expect(getByText("secs")).toBeDefined();
114
+ });
115
+ it("renders LinearGradient when specified", () => {
116
+ const {
117
+ getByTestId
118
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
119
+ use12HourPicker: false
120
+ }));
121
+ expect(getByTestId("timer-picker")).toBeDefined();
122
+ });
123
+ it("handles combination of hide props", () => {
124
+ const {
125
+ queryByTestId
126
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
127
+ hideHours: true,
128
+ hideSeconds: true
129
+ }));
130
+ expect(queryByTestId("duration-scroll-hour")).toBeNull();
131
+ expect(queryByTestId("duration-scroll-minute")).toBeDefined();
132
+ expect(queryByTestId("duration-scroll-second")).toBeNull();
133
+ });
134
+ it("handles onDurationChange callback", () => {
135
+ const onDurationChangeMock = jest.fn();
136
+ const {
137
+ getByTestId
138
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
139
+ onDurationChange: onDurationChangeMock
140
+ }));
141
+ expect(getByTestId("timer-picker")).toBeDefined();
142
+ });
143
+ it("renders with all hide props and days enabled", () => {
144
+ const {
145
+ getByTestId,
146
+ queryByTestId
147
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
148
+ hideDays: false,
149
+ hideHours: true,
150
+ hideMinutes: true,
151
+ hideSeconds: true
152
+ }));
153
+ expect(getByTestId("duration-scroll-day")).toBeDefined();
154
+ expect(queryByTestId("duration-scroll-hour")).toBeNull();
155
+ expect(queryByTestId("duration-scroll-minute")).toBeNull();
156
+ expect(queryByTestId("duration-scroll-second")).toBeNull();
157
+ });
158
+ });
159
+ //# sourceMappingURL=TimerPicker.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","render","FlatList","TimerPicker","describe","it","getByTestId","createElement","component","expect","toBeDefined","padWithNItems","queryByTestId","hideDays","hideMinutes","hideSeconds","dayPicker","minutePicker","secondPicker","toBeNull","CustomFlatList","props","_extends","testID","queryAllByTestId","customFlatList","toHaveLength","hideHours","initialValue","hours","minutes","seconds","hourInterval","minuteInterval","secondInterval","getByText","hourLabel","minuteLabel","secondLabel","use12HourPicker","onDurationChangeMock","jest","fn","onDurationChange"],"sources":["TimerPicker.test.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from \"react\";\n\nimport { render } from \"@testing-library/react-native\";\nimport { FlatList } from \"react-native\";\n\nimport TimerPicker from \"../components/TimerPicker\";\n\ndescribe(\"TimerPicker\", () => {\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(<TimerPicker />);\n const component = getByTestId(\"timer-picker\");\n expect(component).toBeDefined();\n });\n\n it(\"renders without crashing with negative padWithNItems\", () => {\n const { getByTestId } = render(<TimerPicker padWithNItems={-1} />);\n const component = getByTestId(\"timer-picker\");\n expect(component).toBeDefined();\n });\n\n it(\"hides days, minutes and seconds when respective hide props are provided\", () => {\n const { queryByTestId } = render(<TimerPicker hideDays hideMinutes hideSeconds />);\n const dayPicker = queryByTestId(\"duration-scroll-day\");\n const minutePicker = queryByTestId(\"duration-scroll-minute\");\n const secondPicker = queryByTestId(\"duration-scroll-second\");\n expect(dayPicker).toBeNull();\n expect(minutePicker).toBeNull();\n expect(secondPicker).toBeNull();\n });\n\n it(\"uses the custom FlatList component when provided\", () => {\n const CustomFlatList = (props: any) => <FlatList {...props} testID=\"custom-flat-list\" />;\n const { queryAllByTestId } = render(<TimerPicker FlatList={CustomFlatList} />);\n const customFlatList = queryAllByTestId(\"custom-flat-list\");\n expect(customFlatList).toHaveLength(3);\n });\n\n it(\"renders all pickers by default (hours, minutes, seconds)\", () => {\n const { getByTestId } = render(<TimerPicker />);\n expect(getByTestId(\"duration-scroll-hour\")).toBeDefined();\n expect(getByTestId(\"duration-scroll-minute\")).toBeDefined();\n expect(getByTestId(\"duration-scroll-second\")).toBeDefined();\n });\n\n it(\"hides hours when hideHours is true\", () => {\n const { queryByTestId } = render(<TimerPicker hideHours />);\n expect(queryByTestId(\"duration-scroll-hour\")).toBeNull();\n });\n\n it(\"renders with custom initial value\", () => {\n const { getByTestId } = render(\n <TimerPicker initialValue={{ hours: 2, minutes: 30, seconds: 45 }} />\n );\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with hourInterval\", () => {\n const { getByTestId } = render(<TimerPicker hourInterval={2} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with minuteInterval\", () => {\n const { getByTestId } = render(<TimerPicker minuteInterval={15} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with secondInterval\", () => {\n const { getByTestId } = render(<TimerPicker secondInterval={5} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with custom labels\", () => {\n const { getByText } = render(\n <TimerPicker hourLabel=\"hrs\" minuteLabel=\"mins\" secondLabel=\"secs\" />\n );\n expect(getByText(\"hrs\")).toBeDefined();\n expect(getByText(\"mins\")).toBeDefined();\n expect(getByText(\"secs\")).toBeDefined();\n });\n\n it(\"renders LinearGradient when specified\", () => {\n const { getByTestId } = render(<TimerPicker use12HourPicker={false} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"handles combination of hide props\", () => {\n const { queryByTestId } = render(<TimerPicker hideHours hideSeconds />);\n expect(queryByTestId(\"duration-scroll-hour\")).toBeNull();\n expect(queryByTestId(\"duration-scroll-minute\")).toBeDefined();\n expect(queryByTestId(\"duration-scroll-second\")).toBeNull();\n });\n\n it(\"handles onDurationChange callback\", () => {\n const onDurationChangeMock = jest.fn();\n const { getByTestId } = render(<TimerPicker onDurationChange={onDurationChangeMock} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with all hide props and days enabled\", () => {\n const { getByTestId, queryByTestId } = render(\n <TimerPicker hideDays={false} hideHours hideMinutes hideSeconds />\n );\n expect(getByTestId(\"duration-scroll-day\")).toBeDefined();\n expect(queryByTestId(\"duration-scroll-hour\")).toBeNull();\n expect(queryByTestId(\"duration-scroll-minute\")).toBeNull();\n expect(queryByTestId(\"duration-scroll-second\")).toBeNull();\n });\n});\n"],"mappings":"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","ignoreList":[]}