react-native-timer-picker 2.2.0 → 2.2.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.
Files changed (63) hide show
  1. package/README.md +37 -35
  2. package/dist/commonjs/components/TimerPicker/TimerPicker.js +20 -9
  3. package/dist/commonjs/components/TimerPicker/TimerPicker.js.map +1 -1
  4. package/dist/commonjs/components/TimerPicker/types.js.map +1 -1
  5. package/dist/commonjs/tests/DurationScroll.test.js +94 -0
  6. package/dist/commonjs/tests/DurationScroll.test.js.map +1 -1
  7. package/dist/commonjs/tests/Modal.test.js +79 -2
  8. package/dist/commonjs/tests/Modal.test.js.map +1 -1
  9. package/dist/commonjs/tests/TimerPicker.test.js +115 -0
  10. package/dist/commonjs/tests/TimerPicker.test.js.map +1 -1
  11. package/dist/commonjs/tests/TimerPickerModal.test.js +120 -0
  12. package/dist/commonjs/tests/TimerPickerModal.test.js.map +1 -1
  13. package/dist/commonjs/tests/colorToRgba.test.js +176 -0
  14. package/dist/commonjs/tests/colorToRgba.test.js.map +1 -0
  15. package/dist/commonjs/tests/generateNumbers.test.js +350 -0
  16. package/dist/commonjs/tests/generateNumbers.test.js.map +1 -0
  17. package/dist/commonjs/tests/getAdjustedLimit.test.js +324 -0
  18. package/dist/commonjs/tests/getAdjustedLimit.test.js.map +1 -0
  19. package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js +424 -0
  20. package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
  21. package/dist/commonjs/tests/getInitialScrollIndex.test.js +396 -0
  22. package/dist/commonjs/tests/getInitialScrollIndex.test.js.map +1 -0
  23. package/dist/commonjs/tests/getSafeInitialValue.test.js +497 -0
  24. package/dist/commonjs/tests/getSafeInitialValue.test.js.map +1 -0
  25. package/dist/commonjs/tests/padNumber.test.js +301 -0
  26. package/dist/commonjs/tests/padNumber.test.js.map +1 -0
  27. package/dist/commonjs/utils/colorToRgba.js +5 -0
  28. package/dist/commonjs/utils/colorToRgba.js.map +1 -1
  29. package/dist/commonjs/utils/getAdjustedLimit.js +3 -3
  30. package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -1
  31. package/dist/module/components/TimerPicker/TimerPicker.js +20 -9
  32. package/dist/module/components/TimerPicker/TimerPicker.js.map +1 -1
  33. package/dist/module/components/TimerPicker/types.js.map +1 -1
  34. package/dist/module/tests/DurationScroll.test.js +94 -0
  35. package/dist/module/tests/DurationScroll.test.js.map +1 -1
  36. package/dist/module/tests/Modal.test.js +80 -3
  37. package/dist/module/tests/Modal.test.js.map +1 -1
  38. package/dist/module/tests/TimerPicker.test.js +115 -0
  39. package/dist/module/tests/TimerPicker.test.js.map +1 -1
  40. package/dist/module/tests/TimerPickerModal.test.js +121 -1
  41. package/dist/module/tests/TimerPickerModal.test.js.map +1 -1
  42. package/dist/module/tests/colorToRgba.test.js +174 -0
  43. package/dist/module/tests/colorToRgba.test.js.map +1 -0
  44. package/dist/module/tests/generateNumbers.test.js +348 -0
  45. package/dist/module/tests/generateNumbers.test.js.map +1 -0
  46. package/dist/module/tests/getAdjustedLimit.test.js +322 -0
  47. package/dist/module/tests/getAdjustedLimit.test.js.map +1 -0
  48. package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js +422 -0
  49. package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
  50. package/dist/module/tests/getInitialScrollIndex.test.js +394 -0
  51. package/dist/module/tests/getInitialScrollIndex.test.js.map +1 -0
  52. package/dist/module/tests/getSafeInitialValue.test.js +495 -0
  53. package/dist/module/tests/getSafeInitialValue.test.js.map +1 -0
  54. package/dist/module/tests/padNumber.test.js +299 -0
  55. package/dist/module/tests/padNumber.test.js.map +1 -0
  56. package/dist/module/utils/colorToRgba.js +5 -0
  57. package/dist/module/utils/colorToRgba.js.map +1 -1
  58. package/dist/module/utils/getAdjustedLimit.js +3 -3
  59. package/dist/module/utils/getAdjustedLimit.js.map +1 -1
  60. package/dist/typescript/components/TimerPicker/styles.d.ts +0 -247
  61. package/dist/typescript/components/TimerPicker/types.d.ts +4 -4
  62. package/dist/typescript/components/TimerPickerModal/styles.d.ts +0 -152
  63. package/package.json +3 -4
@@ -62,5 +62,99 @@ describe("DurationScroll", () => {
62
62
  const label = getByText("Duration");
63
63
  expect(label).toBeDefined();
64
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
+ });
65
159
  });
66
160
  //# sourceMappingURL=DurationScroll.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","render","DurationScroll","describe","onDurationChangeMock","jest","fn","emptyStyles","pickerContainer","pickerLabelContainer","pickerLabel","pickerItemContainer","pickerItem","pickerAmPmContainer","pickerAmPmLabel","disabledPickerContainer","disabledPickerItem","pickerGradientOverlay","it","getByTestId","createElement","aggressivelyGetLatestDuration","interval","maximumValue","onDurationChange","padWithNItems","repeatNumbersNTimesNotExplicitlySet","styles","testID","component","expect","toBeDefined","getAllByTestId","items","toHaveLength","getByText","label"],"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 pickerContainer: {},\n pickerLabelContainer: {},\n pickerLabel: {},\n pickerItemContainer: {},\n pickerItem: {},\n pickerAmPmContainer: {},\n pickerAmPmLabel: {},\n disabledPickerContainer: {},\n disabledPickerItem: {},\n pickerGradientOverlay: {},\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"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,MAAM,QAAQ,+BAA+B;AAEtD,OAAOC,cAAc,MAAM,8BAA8B;AAGzDC,QAAQ,CAAC,gBAAgB,EAAE,MAAM;EAC7B,MAAMC,oBAAoB,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EACtC,MAAMC,WAAW,GAAG;IAChBC,eAAe,EAAE,CAAC,CAAC;IACnBC,oBAAoB,EAAE,CAAC,CAAC;IACxBC,WAAW,EAAE,CAAC,CAAC;IACfC,mBAAmB,EAAE,CAAC,CAAC;IACvBC,UAAU,EAAE,CAAC,CAAC;IACdC,mBAAmB,EAAE,CAAC,CAAC;IACvBC,eAAe,EAAE,CAAC,CAAC;IACnBC,uBAAuB,EAAE,CAAC,CAAC;IAC3BC,kBAAkB,EAAE,CAAC,CAAC;IACtBC,qBAAqB,EAAE,CAAC;EAC5B,CAAsC;EAEtCC,EAAE,CAAC,0BAA0B,EAAE,MAAM;IACjC,MAAM;MAAEC;IAAY,CAAC,GAAGlB,MAAM,cAC1BD,KAAA,CAAAoB,aAAA,CAAClB,cAAc;MACXmB,6BAA6B,EAAE,KAAM;MACrCC,QAAQ,EAAE,CAAE;MACZC,YAAY,EAAE,CAAE;MAChBC,gBAAgB,EAAEpB,oBAAqB;MACvCqB,aAAa,EAAE,CAAE;MACjBC,mCAAmC,EAAE,IAAK;MAC1CC,MAAM,EAAEpB,WAAY;MACpBqB,MAAM,EAAC;IAAiB,CAC3B,CACL,CAAC;IACD,MAAMC,SAAS,GAAGV,WAAW,CAAC,iBAAiB,CAAC;IAChDW,MAAM,CAACD,SAAS,CAAC,CAACE,WAAW,CAAC,CAAC;EACnC,CAAC,CAAC;EAEFb,EAAE,CAAC,qCAAqC,EAAE,MAAM;IAC5C,MAAM;MAAEc;IAAe,CAAC,GAAG/B,MAAM,cAC7BD,KAAA,CAAAoB,aAAA,CAAClB,cAAc;MACXmB,6BAA6B,EAAE,KAAM;MACrCC,QAAQ,EAAE,CAAE;MACZC,YAAY,EAAE,EAAG;MACjBC,gBAAgB,EAAEpB,oBAAqB;MACvCqB,aAAa,EAAE,CAAE;MACjBC,mCAAmC,EAAE,IAAK;MAC1CC,MAAM,EAAEpB;IAAY,CACvB,CACL,CAAC;IACD,MAAM0B,KAAK,GAAGD,cAAc,CAAC,aAAa,CAAC;IAC3CF,MAAM,CAACG,KAAK,CAAC,CAACC,YAAY,CAAC,EAAE,CAAC;EAClC,CAAC,CAAC;EAEFhB,EAAE,CAAC,+BAA+B,EAAE,MAAM;IACtC,MAAM;MAAEiB;IAAU,CAAC,GAAGlC,MAAM,cACxBD,KAAA,CAAAoB,aAAA,CAAClB,cAAc;MACXmB,6BAA6B,EAAE,KAAM;MACrCC,QAAQ,EAAE,CAAE;MACZc,KAAK,EAAC,UAAU;MAChBb,YAAY,EAAE,EAAG;MACjBC,gBAAgB,EAAEpB,oBAAqB;MACvCqB,aAAa,EAAE,CAAE;MACjBC,mCAAmC,EAAE,IAAK;MAC1CC,MAAM,EAAEpB;IAAY,CACvB,CACL,CAAC;IACD,MAAM6B,KAAK,GAAGD,SAAS,CAAC,UAAU,CAAC;IACnCL,MAAM,CAACM,KAAK,CAAC,CAACL,WAAW,CAAC,CAAC;EAC/B,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","render","DurationScroll","describe","onDurationChangeMock","jest","fn","emptyStyles","pickerContainer","pickerLabelContainer","pickerLabel","pickerItemContainer","pickerItem","pickerAmPmContainer","pickerAmPmLabel","disabledPickerContainer","disabledPickerItem","pickerGradientOverlay","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 pickerContainer: {},\n pickerLabelContainer: {},\n pickerLabel: {},\n pickerItemContainer: {},\n pickerItem: {},\n pickerAmPmContainer: {},\n pickerAmPmLabel: {},\n disabledPickerContainer: {},\n disabledPickerItem: {},\n pickerGradientOverlay: {},\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":[]}
@@ -1,8 +1,16 @@
1
1
  import React from "react";
2
- import { render, fireEvent } from "@testing-library/react-native";
2
+ import { render, fireEvent, cleanup } from "@testing-library/react-native";
3
3
  import { Text } from "react-native";
4
4
  import Modal from "../components/Modal";
5
5
  describe("Modal", () => {
6
+ beforeEach(() => {
7
+ jest.useFakeTimers();
8
+ });
9
+ afterEach(() => {
10
+ jest.runOnlyPendingTimers();
11
+ jest.useRealTimers();
12
+ cleanup();
13
+ });
6
14
  it("renders without crashing", () => {
7
15
  const {
8
16
  getByTestId
@@ -33,7 +41,76 @@ describe("Modal", () => {
33
41
  fireEvent.press(overlay);
34
42
  expect(onOverlayPressMock).toHaveBeenCalled();
35
43
  });
36
-
37
- // Add more test cases to cover different interactions, scenarios, and edge cases
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("renders multiple children", () => {
64
+ const {
65
+ getByText
66
+ } = render(/*#__PURE__*/React.createElement(Modal, {
67
+ isVisible: true
68
+ }, /*#__PURE__*/React.createElement(Text, null, "First Child"), /*#__PURE__*/React.createElement(Text, null, "Second Child")));
69
+ const firstChild = getByText("First Child");
70
+ const secondChild = getByText("Second Child");
71
+ expect(firstChild).toBeDefined();
72
+ expect(secondChild).toBeDefined();
73
+ });
74
+ it("handles rapid visibility changes", () => {
75
+ const {
76
+ rerender,
77
+ getByTestId
78
+ } = render(/*#__PURE__*/React.createElement(Modal, {
79
+ isVisible: true
80
+ }));
81
+ expect(getByTestId("modal")).toBeDefined();
82
+ expect(getByTestId("modal").props.visible).toBe(true);
83
+ rerender(/*#__PURE__*/React.createElement(Modal, {
84
+ isVisible: false
85
+ }));
86
+ expect(getByTestId("modal")).toBeDefined();
87
+ expect(getByTestId("modal").props.visible).toBe(false);
88
+ rerender(/*#__PURE__*/React.createElement(Modal, {
89
+ isVisible: true
90
+ }));
91
+ expect(getByTestId("modal")).toBeDefined();
92
+ expect(getByTestId("modal").props.visible).toBe(true);
93
+ });
94
+ it("calls onOverlayPress exactly once per press", () => {
95
+ const onOverlayPressMock = jest.fn();
96
+ const {
97
+ getByTestId
98
+ } = render(/*#__PURE__*/React.createElement(Modal, {
99
+ isVisible: true,
100
+ onOverlayPress: onOverlayPressMock
101
+ }));
102
+ const overlay = getByTestId("modal-backdrop");
103
+ fireEvent.press(overlay);
104
+ expect(onOverlayPressMock).toHaveBeenCalledTimes(1);
105
+ });
106
+ it("renders children with complex structure", () => {
107
+ const {
108
+ getByText
109
+ } = render(/*#__PURE__*/React.createElement(Modal, {
110
+ isVisible: true
111
+ }, /*#__PURE__*/React.createElement(Text, null, "Parent"), /*#__PURE__*/React.createElement(Text, null, "Child")));
112
+ expect(getByText("Parent")).toBeDefined();
113
+ expect(getByText("Child")).toBeDefined();
114
+ });
38
115
  });
39
116
  //# sourceMappingURL=Modal.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","render","fireEvent","Text","Modal","describe","it","getByTestId","createElement","isVisible","component","expect","toBeDefined","getByText","content","onOverlayPressMock","jest","fn","onOverlayPress","overlay","press","toHaveBeenCalled"],"sources":["Modal.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render, fireEvent } from \"@testing-library/react-native\";\nimport { Text } from \"react-native\";\n\nimport Modal from \"../components/Modal\";\n\ndescribe(\"Modal\", () => {\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(\n <Modal isVisible onOverlayPress={onOverlayPressMock} />\n );\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(onOverlayPressMock).toHaveBeenCalled();\n });\n\n // Add more test cases to cover different interactions, scenarios, and edge cases\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,MAAM,EAAEC,SAAS,QAAQ,+BAA+B;AACjE,SAASC,IAAI,QAAQ,cAAc;AAEnC,OAAOC,KAAK,MAAM,qBAAqB;AAEvCC,QAAQ,CAAC,OAAO,EAAE,MAAM;EACpBC,EAAE,CAAC,0BAA0B,EAAE,MAAM;IACjC,MAAM;MAAEC;IAAY,CAAC,GAAGN,MAAM,cAACD,KAAA,CAAAQ,aAAA,CAACJ,KAAK;MAACK,SAAS;IAAA,CAAC,CAAC,CAAC;IAClD,MAAMC,SAAS,GAAGH,WAAW,CAAC,OAAO,CAAC;IACtCI,MAAM,CAACD,SAAS,CAAC,CAACE,WAAW,CAAC,CAAC;EACnC,CAAC,CAAC;EAEFN,EAAE,CAAC,+BAA+B,EAAE,MAAM;IACtC,MAAM;MAAEO;IAAU,CAAC,GAAGZ,MAAM,cACxBD,KAAA,CAAAQ,aAAA,CAACJ,KAAK;MAACK,SAAS;IAAA,gBACZT,KAAA,CAAAQ,aAAA,CAACL,IAAI,QAAE,eAAsB,CAC1B,CACX,CAAC;IACD,MAAMW,OAAO,GAAGD,SAAS,CAAC,eAAe,CAAC;IAC1CF,MAAM,CAACG,OAAO,CAAC,CAACF,WAAW,CAAC,CAAC;EACjC,CAAC,CAAC;EAEFN,EAAE,CAAC,8CAA8C,EAAE,MAAM;IACrD,MAAMS,kBAAkB,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;IACpC,MAAM;MAAEV;IAAY,CAAC,GAAGN,MAAM,cAC1BD,KAAA,CAAAQ,aAAA,CAACJ,KAAK;MAACK,SAAS;MAACS,cAAc,EAAEH;IAAmB,CAAE,CAC1D,CAAC;IACD,MAAMI,OAAO,GAAGZ,WAAW,CAAC,gBAAgB,CAAC;IAC7CL,SAAS,CAACkB,KAAK,CAACD,OAAO,CAAC;IACxBR,MAAM,CAACI,kBAAkB,CAAC,CAACM,gBAAgB,CAAC,CAAC;EACjD,CAAC,CAAC;;EAEF;AACJ,CAAC,CAAC","ignoreList":[]}
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","firstChild","secondChild","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(\n <Modal isVisible onOverlayPress={onOverlayPressMock} />\n );\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(\"renders multiple children\", () => {\n const { getByText } = render(\n <Modal isVisible>\n <Text>{\"First Child\"}</Text>\n <Text>{\"Second Child\"}</Text>\n </Modal>\n );\n const firstChild = getByText(\"First Child\");\n const secondChild = getByText(\"Second Child\");\n expect(firstChild).toBeDefined();\n expect(secondChild).toBeDefined();\n });\n\n it(\"handles rapid visibility changes\", () => {\n const { rerender, getByTestId } = render(\n <Modal isVisible={true} />\n );\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(\n <Modal isVisible onOverlayPress={onOverlayPressMock} />\n );\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(onOverlayPressMock).toHaveBeenCalledTimes(1);\n });\n\n it(\"renders children with complex structure\", () => {\n const { getByText } = render(\n <Modal isVisible>\n <Text>{\"Parent\"}</Text>\n <Text>{\"Child\"}</Text>\n </Modal>\n );\n expect(getByText(\"Parent\")).toBeDefined();\n expect(getByText(\"Child\")).toBeDefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -47,5 +47,120 @@ describe("TimerPicker", () => {
47
47
  const customFlatList = queryAllByTestId("custom-flat-list");
48
48
  expect(customFlatList).toHaveLength(3);
49
49
  });
50
+ it("renders all pickers by default (hours, minutes, seconds)", () => {
51
+ const {
52
+ getByTestId
53
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, null));
54
+ expect(getByTestId("duration-scroll-hour")).toBeDefined();
55
+ expect(getByTestId("duration-scroll-minute")).toBeDefined();
56
+ expect(getByTestId("duration-scroll-second")).toBeDefined();
57
+ });
58
+ it("hides hours when hideHours is true", () => {
59
+ const {
60
+ queryByTestId
61
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
62
+ hideHours: true
63
+ }));
64
+ expect(queryByTestId("duration-scroll-hour")).toBeNull();
65
+ });
66
+ it("renders with custom initial value", () => {
67
+ const {
68
+ getByTestId
69
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
70
+ initialValue: {
71
+ hours: 2,
72
+ minutes: 30,
73
+ seconds: 45
74
+ }
75
+ }));
76
+ expect(getByTestId("timer-picker")).toBeDefined();
77
+ });
78
+ it("renders with hourInterval", () => {
79
+ const {
80
+ getByTestId
81
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
82
+ hourInterval: 2
83
+ }));
84
+ expect(getByTestId("timer-picker")).toBeDefined();
85
+ });
86
+ it("renders with minuteInterval", () => {
87
+ const {
88
+ getByTestId
89
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
90
+ minuteInterval: 15
91
+ }));
92
+ expect(getByTestId("timer-picker")).toBeDefined();
93
+ });
94
+ it("renders with secondInterval", () => {
95
+ const {
96
+ getByTestId
97
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
98
+ secondInterval: 5
99
+ }));
100
+ expect(getByTestId("timer-picker")).toBeDefined();
101
+ });
102
+ it("renders with custom labels", () => {
103
+ const {
104
+ getByText
105
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
106
+ hourLabel: "hrs",
107
+ minuteLabel: "mins",
108
+ secondLabel: "secs"
109
+ }));
110
+ expect(getByText("hrs")).toBeDefined();
111
+ expect(getByText("mins")).toBeDefined();
112
+ expect(getByText("secs")).toBeDefined();
113
+ });
114
+ it("renders with disabled state", () => {
115
+ const {
116
+ getByTestId
117
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
118
+ disabled: true
119
+ }));
120
+ expect(getByTestId("timer-picker")).toBeDefined();
121
+ });
122
+ it("renders LinearGradient when specified", () => {
123
+ const {
124
+ getByTestId
125
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
126
+ use12HourPicker: false
127
+ }));
128
+ expect(getByTestId("timer-picker")).toBeDefined();
129
+ });
130
+ it("handles combination of hide props", () => {
131
+ const {
132
+ queryByTestId
133
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
134
+ hideHours: true,
135
+ hideSeconds: true
136
+ }));
137
+ expect(queryByTestId("duration-scroll-hour")).toBeNull();
138
+ expect(queryByTestId("duration-scroll-minute")).toBeDefined();
139
+ expect(queryByTestId("duration-scroll-second")).toBeNull();
140
+ });
141
+ it("handles onDurationChange callback", () => {
142
+ const onDurationChangeMock = jest.fn();
143
+ const {
144
+ getByTestId
145
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
146
+ onDurationChange: onDurationChangeMock
147
+ }));
148
+ expect(getByTestId("timer-picker")).toBeDefined();
149
+ });
150
+ it("renders with all hide props and days enabled", () => {
151
+ const {
152
+ getByTestId,
153
+ queryByTestId
154
+ } = render(/*#__PURE__*/React.createElement(TimerPicker, {
155
+ hideDays: false,
156
+ hideHours: true,
157
+ hideMinutes: true,
158
+ hideSeconds: true
159
+ }));
160
+ expect(getByTestId("duration-scroll-day")).toBeDefined();
161
+ expect(queryByTestId("duration-scroll-hour")).toBeNull();
162
+ expect(queryByTestId("duration-scroll-minute")).toBeNull();
163
+ expect(queryByTestId("duration-scroll-second")).toBeNull();
164
+ });
50
165
  });
51
166
  //# sourceMappingURL=TimerPicker.test.js.map
@@ -1 +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"],"sources":["TimerPicker.test.tsx"],"sourcesContent":["import 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(\n <TimerPicker hideDays hideMinutes hideSeconds />\n );\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) => (\n <FlatList {...props} testID=\"custom-flat-list\" />\n );\n const { queryAllByTestId } = render(\n <TimerPicker FlatList={CustomFlatList} />\n );\n const customFlatList = queryAllByTestId(\"custom-flat-list\");\n expect(customFlatList).toHaveLength(3);\n });\n});\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,MAAM,QAAQ,+BAA+B;AACtD,SAASC,QAAQ,QAAQ,cAAc;AAEvC,OAAOC,WAAW,MAAM,2BAA2B;AAEnDC,QAAQ,CAAC,aAAa,EAAE,MAAM;EAC1BC,EAAE,CAAC,0BAA0B,EAAE,MAAM;IACjC,MAAM;MAAEC;IAAY,CAAC,GAAGL,MAAM,cAACD,KAAA,CAAAO,aAAA,CAACJ,WAAW,MAAE,CAAC,CAAC;IAC/C,MAAMK,SAAS,GAAGF,WAAW,CAAC,cAAc,CAAC;IAC7CG,MAAM,CAACD,SAAS,CAAC,CAACE,WAAW,CAAC,CAAC;EACnC,CAAC,CAAC;EAEFL,EAAE,CAAC,sDAAsD,EAAE,MAAM;IAC7D,MAAM;MAAEC;IAAY,CAAC,GAAGL,MAAM,cAACD,KAAA,CAAAO,aAAA,CAACJ,WAAW;MAACQ,aAAa,EAAE,CAAC;IAAE,CAAE,CAAC,CAAC;IAClE,MAAMH,SAAS,GAAGF,WAAW,CAAC,cAAc,CAAC;IAC7CG,MAAM,CAACD,SAAS,CAAC,CAACE,WAAW,CAAC,CAAC;EACnC,CAAC,CAAC;EAEFL,EAAE,CAAC,yEAAyE,EAAE,MAAM;IAChF,MAAM;MAAEO;IAAc,CAAC,GAAGX,MAAM,cAC5BD,KAAA,CAAAO,aAAA,CAACJ,WAAW;MAACU,QAAQ;MAACC,WAAW;MAACC,WAAW;IAAA,CAAE,CACnD,CAAC;IACD,MAAMC,SAAS,GAAGJ,aAAa,CAAC,qBAAqB,CAAC;IACtD,MAAMK,YAAY,GAAGL,aAAa,CAAC,wBAAwB,CAAC;IAC5D,MAAMM,YAAY,GAAGN,aAAa,CAAC,wBAAwB,CAAC;IAC5DH,MAAM,CAACO,SAAS,CAAC,CAACG,QAAQ,CAAC,CAAC;IAC5BV,MAAM,CAACQ,YAAY,CAAC,CAACE,QAAQ,CAAC,CAAC;IAC/BV,MAAM,CAACS,YAAY,CAAC,CAACC,QAAQ,CAAC,CAAC;EACnC,CAAC,CAAC;EAEFd,EAAE,CAAC,kDAAkD,EAAE,MAAM;IACzD,MAAMe,cAAc,GAAIC,KAAK,iBACzBrB,KAAA,CAAAO,aAAA,CAACL,QAAQ,EAAAoB,QAAA,KAAKD,KAAK;MAAEE,MAAM,EAAC;IAAkB,EAAE,CACnD;IACD,MAAM;MAAEC;IAAiB,CAAC,GAAGvB,MAAM,cAC/BD,KAAA,CAAAO,aAAA,CAACJ,WAAW;MAACD,QAAQ,EAAEkB;IAAe,CAAE,CAC5C,CAAC;IACD,MAAMK,cAAc,GAAGD,gBAAgB,CAAC,kBAAkB,CAAC;IAC3Df,MAAM,CAACgB,cAAc,CAAC,CAACC,YAAY,CAAC,CAAC,CAAC;EAC1C,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
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","disabled","use12HourPicker","onDurationChangeMock","jest","fn","onDurationChange"],"sources":["TimerPicker.test.tsx"],"sourcesContent":["import 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(\n <TimerPicker hideDays hideMinutes hideSeconds />\n );\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) => (\n <FlatList {...props} testID=\"custom-flat-list\" />\n );\n const { queryAllByTestId } = render(\n <TimerPicker FlatList={CustomFlatList} />\n );\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\n hourLabel=\"hrs\"\n minuteLabel=\"mins\"\n secondLabel=\"secs\"\n />\n );\n expect(getByText(\"hrs\")).toBeDefined();\n expect(getByText(\"mins\")).toBeDefined();\n expect(getByText(\"secs\")).toBeDefined();\n });\n\n it(\"renders with disabled state\", () => {\n const { getByTestId } = render(<TimerPicker disabled />);\n expect(getByTestId(\"timer-picker\")).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(\n <TimerPicker hideHours hideSeconds />\n );\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(\n <TimerPicker onDurationChange={onDurationChangeMock} />\n );\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":[]}
@@ -1,10 +1,18 @@
1
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
2
  import React from "react";
3
- import { render, fireEvent } from "@testing-library/react-native";
3
+ import { render, fireEvent, cleanup } from "@testing-library/react-native";
4
4
  import TimerPickerModal from "../components/TimerPickerModal";
5
5
  describe("TimerPickerModal", () => {
6
6
  const mockOnConfirm = jest.fn();
7
7
  const mockOnCancel = jest.fn();
8
+ beforeEach(() => {
9
+ jest.useFakeTimers();
10
+ });
11
+ afterEach(() => {
12
+ jest.runOnlyPendingTimers();
13
+ jest.useRealTimers();
14
+ cleanup();
15
+ });
8
16
  const defaultProps = {
9
17
  visible: true,
10
18
  setIsVisible: jest.fn(),
@@ -66,5 +74,117 @@ describe("TimerPickerModal", () => {
66
74
  fireEvent.press(confirmButton);
67
75
  expect(mockOnConfirm).toHaveBeenCalledWith(expect.objectContaining({}));
68
76
  });
77
+ it("renders but is not visible when visible prop is false", () => {
78
+ const {
79
+ getByTestId
80
+ } = render(/*#__PURE__*/React.createElement(TimerPickerModal, _extends({}, defaultProps, {
81
+ visible: false
82
+ })));
83
+ const modal = getByTestId("timer-picker-modal");
84
+ expect(modal).toBeDefined();
85
+ // Modal component still renders but with visible={false}
86
+ expect(modal.props.visible).toBe(false);
87
+ });
88
+ it("renders with custom button labels", () => {
89
+ const {
90
+ getByText
91
+ } = render(/*#__PURE__*/React.createElement(TimerPickerModal, _extends({}, defaultProps, {
92
+ confirmButtonText: "OK",
93
+ cancelButtonText: "Dismiss"
94
+ })));
95
+ expect(getByText("OK")).toBeDefined();
96
+ expect(getByText("Dismiss")).toBeDefined();
97
+ });
98
+ it("renders with custom modal title", () => {
99
+ const {
100
+ getByText
101
+ } = render(/*#__PURE__*/React.createElement(TimerPickerModal, _extends({}, defaultProps, {
102
+ modalTitle: "Select Time"
103
+ })));
104
+ expect(getByText("Select Time")).toBeDefined();
105
+ });
106
+ it("does not close on overlay press when closeOnOverlayPress is false", () => {
107
+ const setIsVisibleMock = jest.fn();
108
+ const {
109
+ getByTestId
110
+ } = render(/*#__PURE__*/React.createElement(TimerPickerModal, _extends({}, defaultProps, {
111
+ closeOnOverlayPress: false,
112
+ setIsVisible: setIsVisibleMock
113
+ })));
114
+ const overlay = getByTestId("modal-backdrop");
115
+ fireEvent.press(overlay);
116
+ expect(setIsVisibleMock).not.toHaveBeenCalled();
117
+ });
118
+ it("hides Cancel button when hideCancelButton is true", () => {
119
+ const {
120
+ queryByText
121
+ } = render(/*#__PURE__*/React.createElement(TimerPickerModal, _extends({}, defaultProps, {
122
+ hideCancelButton: true
123
+ })));
124
+ expect(queryByText("Cancel")).toBeNull();
125
+ });
126
+ it("renders with initial value", () => {
127
+ const {
128
+ getByTestId
129
+ } = render(/*#__PURE__*/React.createElement(TimerPickerModal, _extends({}, defaultProps, {
130
+ initialValue: {
131
+ hours: 2,
132
+ minutes: 30,
133
+ seconds: 0
134
+ }
135
+ })));
136
+ expect(getByTestId("timer-picker-modal")).toBeDefined();
137
+ });
138
+ it("renders with custom intervals", () => {
139
+ const {
140
+ getByTestId
141
+ } = render(/*#__PURE__*/React.createElement(TimerPickerModal, _extends({}, defaultProps, {
142
+ hourInterval: 2,
143
+ minuteInterval: 15,
144
+ secondInterval: 5
145
+ })));
146
+ expect(getByTestId("timer-picker-modal")).toBeDefined();
147
+ });
148
+ it("calls both onCancel and setIsVisible when Cancel is pressed", () => {
149
+ const setIsVisibleMock = jest.fn();
150
+ const onCancelMock = jest.fn();
151
+ const {
152
+ getByText
153
+ } = render(/*#__PURE__*/React.createElement(TimerPickerModal, _extends({}, defaultProps, {
154
+ onCancel: onCancelMock,
155
+ setIsVisible: setIsVisibleMock
156
+ })));
157
+ const cancelButton = getByText("Cancel");
158
+ fireEvent.press(cancelButton);
159
+ expect(onCancelMock).toHaveBeenCalled();
160
+ expect(setIsVisibleMock).toHaveBeenCalledWith(false);
161
+ });
162
+ it("hides specific time units when respective hide props are provided", () => {
163
+ const {
164
+ getByTestId
165
+ } = render(/*#__PURE__*/React.createElement(TimerPickerModal, _extends({}, defaultProps, {
166
+ hideHours: true,
167
+ hideSeconds: true
168
+ })));
169
+ expect(getByTestId("timer-picker-modal")).toBeDefined();
170
+ // Note: The specific duration scroll test IDs would be in the TimerPicker component
171
+ });
172
+ it("renders without crashing with all optional props", () => {
173
+ const {
174
+ getByTestId
175
+ } = render(/*#__PURE__*/React.createElement(TimerPickerModal, _extends({}, defaultProps, {
176
+ modalTitle: "Pick Duration",
177
+ confirmButtonText: "Done",
178
+ cancelButtonText: "Close",
179
+ hourLabel: "h",
180
+ minuteLabel: "m",
181
+ secondLabel: "s",
182
+ hideHours: false,
183
+ hideMinutes: false,
184
+ hideSeconds: false,
185
+ hideDays: false
186
+ })));
187
+ expect(getByTestId("timer-picker-modal")).toBeDefined();
188
+ });
69
189
  });
70
190
  //# sourceMappingURL=TimerPickerModal.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","render","fireEvent","TimerPickerModal","describe","mockOnConfirm","jest","fn","mockOnCancel","defaultProps","visible","setIsVisible","onConfirm","onCancel","it","getByTestId","createElement","component","expect","toBeDefined","getByText","confirmButton","press","toHaveBeenCalled","cancelButton","setIsVisibleMock","_extends","toHaveBeenCalledWith","closeOnOverlayPress","overlay","objectContaining"],"sources":["TimerPickerModal.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render, fireEvent } from \"@testing-library/react-native\";\n\nimport TimerPickerModal from \"../components/TimerPickerModal\";\n\ndescribe(\"TimerPickerModal\", () => {\n const mockOnConfirm = jest.fn();\n const mockOnCancel = jest.fn();\n\n const defaultProps = {\n visible: true,\n setIsVisible: jest.fn(),\n onConfirm: mockOnConfirm,\n onCancel: mockOnCancel,\n };\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(<TimerPickerModal {...defaultProps} />);\n const component = getByTestId(\"timer-picker-modal\");\n expect(component).toBeDefined();\n });\n\n it(\"calls onConfirm when Confirm button is pressed\", () => {\n const { getByText } = render(<TimerPickerModal {...defaultProps} />);\n const confirmButton = getByText(\"Confirm\");\n fireEvent.press(confirmButton);\n expect(mockOnConfirm).toHaveBeenCalled();\n });\n\n it(\"calls onCancel when Cancel button is pressed\", () => {\n const { getByText } = render(<TimerPickerModal {...defaultProps} />);\n const cancelButton = getByText(\"Cancel\");\n fireEvent.press(cancelButton);\n expect(mockOnCancel).toHaveBeenCalled();\n });\n\n it(\"hides the modal when Cancel button is pressed\", () => {\n const setIsVisibleMock = jest.fn();\n const { getByText } = render(\n <TimerPickerModal\n {...defaultProps}\n setIsVisible={setIsVisibleMock}\n />\n );\n const cancelButton = getByText(\"Cancel\");\n fireEvent.press(cancelButton);\n expect(setIsVisibleMock).toHaveBeenCalledWith(false);\n });\n\n it(\"hides the modal when overlay is pressed\", () => {\n const setIsVisibleMock = jest.fn();\n const { getByTestId } = render(\n <TimerPickerModal\n {...defaultProps}\n closeOnOverlayPress\n setIsVisible={setIsVisibleMock}\n />\n );\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(setIsVisibleMock).toHaveBeenCalledWith(false);\n });\n\n it(\"calls onConfirm with selected duration when Confirm button is pressed\", () => {\n const { getByText } = render(<TimerPickerModal {...defaultProps} />);\n // Select duration in TimerPicker, assuming its interaction is tested separately\n const confirmButton = getByText(\"Confirm\");\n fireEvent.press(confirmButton);\n expect(mockOnConfirm).toHaveBeenCalledWith(expect.objectContaining({}));\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","render","fireEvent","cleanup","TimerPickerModal","describe","mockOnConfirm","jest","fn","mockOnCancel","beforeEach","useFakeTimers","afterEach","runOnlyPendingTimers","useRealTimers","defaultProps","visible","setIsVisible","onConfirm","onCancel","it","getByTestId","createElement","component","expect","toBeDefined","getByText","confirmButton","press","toHaveBeenCalled","cancelButton","setIsVisibleMock","_extends","toHaveBeenCalledWith","closeOnOverlayPress","overlay","objectContaining","modal","props","toBe","confirmButtonText","cancelButtonText","modalTitle","not","queryByText","hideCancelButton","toBeNull","initialValue","hours","minutes","seconds","hourInterval","minuteInterval","secondInterval","onCancelMock","hideHours","hideSeconds","hourLabel","minuteLabel","secondLabel","hideMinutes","hideDays"],"sources":["TimerPickerModal.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render, fireEvent, cleanup } from \"@testing-library/react-native\";\n\nimport TimerPickerModal from \"../components/TimerPickerModal\";\n\ndescribe(\"TimerPickerModal\", () => {\n const mockOnConfirm = jest.fn();\n const mockOnCancel = jest.fn();\n\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.runOnlyPendingTimers();\n jest.useRealTimers();\n cleanup();\n });\n\n const defaultProps = {\n visible: true,\n setIsVisible: jest.fn(),\n onConfirm: mockOnConfirm,\n onCancel: mockOnCancel,\n };\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(<TimerPickerModal {...defaultProps} />);\n const component = getByTestId(\"timer-picker-modal\");\n expect(component).toBeDefined();\n });\n\n it(\"calls onConfirm when Confirm button is pressed\", () => {\n const { getByText } = render(<TimerPickerModal {...defaultProps} />);\n const confirmButton = getByText(\"Confirm\");\n fireEvent.press(confirmButton);\n expect(mockOnConfirm).toHaveBeenCalled();\n });\n\n it(\"calls onCancel when Cancel button is pressed\", () => {\n const { getByText } = render(<TimerPickerModal {...defaultProps} />);\n const cancelButton = getByText(\"Cancel\");\n fireEvent.press(cancelButton);\n expect(mockOnCancel).toHaveBeenCalled();\n });\n\n it(\"hides the modal when Cancel button is pressed\", () => {\n const setIsVisibleMock = jest.fn();\n const { getByText } = render(\n <TimerPickerModal\n {...defaultProps}\n setIsVisible={setIsVisibleMock}\n />\n );\n const cancelButton = getByText(\"Cancel\");\n fireEvent.press(cancelButton);\n expect(setIsVisibleMock).toHaveBeenCalledWith(false);\n });\n\n it(\"hides the modal when overlay is pressed\", () => {\n const setIsVisibleMock = jest.fn();\n const { getByTestId } = render(\n <TimerPickerModal\n {...defaultProps}\n closeOnOverlayPress\n setIsVisible={setIsVisibleMock}\n />\n );\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(setIsVisibleMock).toHaveBeenCalledWith(false);\n });\n\n it(\"calls onConfirm with selected duration when Confirm button is pressed\", () => {\n const { getByText } = render(<TimerPickerModal {...defaultProps} />);\n // Select duration in TimerPicker, assuming its interaction is tested separately\n const confirmButton = getByText(\"Confirm\");\n fireEvent.press(confirmButton);\n expect(mockOnConfirm).toHaveBeenCalledWith(expect.objectContaining({}));\n });\n\n it(\"renders but is not visible when visible prop is false\", () => {\n const { getByTestId } = render(\n <TimerPickerModal {...defaultProps} visible={false} />\n );\n const modal = getByTestId(\"timer-picker-modal\");\n expect(modal).toBeDefined();\n // Modal component still renders but with visible={false}\n expect(modal.props.visible).toBe(false);\n });\n\n it(\"renders with custom button labels\", () => {\n const { getByText } = render(\n <TimerPickerModal\n {...defaultProps}\n confirmButtonText=\"OK\"\n cancelButtonText=\"Dismiss\"\n />\n );\n expect(getByText(\"OK\")).toBeDefined();\n expect(getByText(\"Dismiss\")).toBeDefined();\n });\n\n it(\"renders with custom modal title\", () => {\n const { getByText } = render(\n <TimerPickerModal {...defaultProps} modalTitle=\"Select Time\" />\n );\n expect(getByText(\"Select Time\")).toBeDefined();\n });\n\n it(\"does not close on overlay press when closeOnOverlayPress is false\", () => {\n const setIsVisibleMock = jest.fn();\n const { getByTestId } = render(\n <TimerPickerModal\n {...defaultProps}\n closeOnOverlayPress={false}\n setIsVisible={setIsVisibleMock}\n />\n );\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(setIsVisibleMock).not.toHaveBeenCalled();\n });\n\n it(\"hides Cancel button when hideCancelButton is true\", () => {\n const { queryByText } = render(\n <TimerPickerModal {...defaultProps} hideCancelButton />\n );\n expect(queryByText(\"Cancel\")).toBeNull();\n });\n\n it(\"renders with initial value\", () => {\n const { getByTestId } = render(\n <TimerPickerModal\n {...defaultProps}\n initialValue={{ hours: 2, minutes: 30, seconds: 0 }}\n />\n );\n expect(getByTestId(\"timer-picker-modal\")).toBeDefined();\n });\n\n it(\"renders with custom intervals\", () => {\n const { getByTestId } = render(\n <TimerPickerModal\n {...defaultProps}\n hourInterval={2}\n minuteInterval={15}\n secondInterval={5}\n />\n );\n expect(getByTestId(\"timer-picker-modal\")).toBeDefined();\n });\n\n it(\"calls both onCancel and setIsVisible when Cancel is pressed\", () => {\n const setIsVisibleMock = jest.fn();\n const onCancelMock = jest.fn();\n const { getByText } = render(\n <TimerPickerModal\n {...defaultProps}\n onCancel={onCancelMock}\n setIsVisible={setIsVisibleMock}\n />\n );\n const cancelButton = getByText(\"Cancel\");\n fireEvent.press(cancelButton);\n expect(onCancelMock).toHaveBeenCalled();\n expect(setIsVisibleMock).toHaveBeenCalledWith(false);\n });\n\n it(\"hides specific time units when respective hide props are provided\", () => {\n const { getByTestId } = render(\n <TimerPickerModal {...defaultProps} hideHours hideSeconds />\n );\n expect(getByTestId(\"timer-picker-modal\")).toBeDefined();\n // Note: The specific duration scroll test IDs would be in the TimerPicker component\n });\n\n it(\"renders without crashing with all optional props\", () => {\n const { getByTestId } = render(\n <TimerPickerModal\n {...defaultProps}\n modalTitle=\"Pick Duration\"\n confirmButtonText=\"Done\"\n cancelButtonText=\"Close\"\n hourLabel=\"h\"\n minuteLabel=\"m\"\n secondLabel=\"s\"\n hideHours={false}\n hideMinutes={false}\n hideSeconds={false}\n hideDays={false}\n />\n );\n expect(getByTestId(\"timer-picker-modal\")).toBeDefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}