@hedia/recommendation-screen 2.1.34-alpha.9 → 2.1.34

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 (234) hide show
  1. package/{src → dist/src}/RecommendationScreen.d.ts +3 -3
  2. package/{src → dist/src}/RecommendationScreen.js +6 -6
  3. package/{src → dist/src}/locale/da/messages.po +92 -92
  4. package/{src → dist/src}/locale/de/messages.po +92 -92
  5. package/{src → dist/src}/locale/en/messages.po +92 -92
  6. package/{src → dist/src}/locale/es/messages.js +1 -1
  7. package/{src → dist/src}/locale/es/messages.po +92 -92
  8. package/{src → dist/src}/locale/fr/messages.po +92 -92
  9. package/{src → dist/src}/locale/it/messages.po +92 -92
  10. package/package.json +22 -21
  11. package/.flowconfig +0 -65
  12. package/.github/pull_request_template.md +0 -6
  13. package/.github/workflows/ci.yaml +0 -17
  14. package/.github/workflows/publish-release-package.yaml +0 -17
  15. package/.github/workflows/validate-pr-title.yaml +0 -20
  16. package/.linguirc +0 -6
  17. package/.npmpackagejsonlintrc.json +0 -12
  18. package/.prettierignore +0 -2
  19. package/.prettierrc +0 -25
  20. package/Changelog.md +0 -9
  21. package/android/app/BUCK +0 -55
  22. package/android/app/build.gradle +0 -228
  23. package/android/app/build_defs.bzl +0 -19
  24. package/android/app/debug.keystore +0 -0
  25. package/android/app/proguard-rules.pro +0 -10
  26. package/android/app/src/debug/AndroidManifest.xml +0 -13
  27. package/android/app/src/debug/java/com/hediarecommendationscreen/ReactNativeFlipper.java +0 -72
  28. package/android/app/src/main/AndroidManifest.xml +0 -25
  29. package/android/app/src/main/assets/fonts/AntDesign.ttf +0 -0
  30. package/android/app/src/main/assets/fonts/Entypo.ttf +0 -0
  31. package/android/app/src/main/assets/fonts/EvilIcons.ttf +0 -0
  32. package/android/app/src/main/assets/fonts/Feather.ttf +0 -0
  33. package/android/app/src/main/assets/fonts/FontAwesome.ttf +0 -0
  34. package/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf +0 -0
  35. package/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf +0 -0
  36. package/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf +0 -0
  37. package/android/app/src/main/assets/fonts/Fontisto.ttf +0 -0
  38. package/android/app/src/main/assets/fonts/Foundation.ttf +0 -0
  39. package/android/app/src/main/assets/fonts/Ionicons.ttf +0 -0
  40. package/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf +0 -0
  41. package/android/app/src/main/assets/fonts/MaterialIcons.ttf +0 -0
  42. package/android/app/src/main/assets/fonts/Octicons.ttf +0 -0
  43. package/android/app/src/main/assets/fonts/Roboto-Black.ttf +0 -0
  44. package/android/app/src/main/assets/fonts/Roboto-BlackItalic.ttf +0 -0
  45. package/android/app/src/main/assets/fonts/Roboto-Bold.ttf +0 -0
  46. package/android/app/src/main/assets/fonts/Roboto-BoldItalic.ttf +0 -0
  47. package/android/app/src/main/assets/fonts/Roboto-Italic.ttf +0 -0
  48. package/android/app/src/main/assets/fonts/Roboto-Light.ttf +0 -0
  49. package/android/app/src/main/assets/fonts/Roboto-LightItalic.ttf +0 -0
  50. package/android/app/src/main/assets/fonts/Roboto-Medium.ttf +0 -0
  51. package/android/app/src/main/assets/fonts/Roboto-MediumItalic.ttf +0 -0
  52. package/android/app/src/main/assets/fonts/Roboto-Regular.ttf +0 -0
  53. package/android/app/src/main/assets/fonts/Roboto-Thin.ttf +0 -0
  54. package/android/app/src/main/assets/fonts/Roboto-ThinItalic.ttf +0 -0
  55. package/android/app/src/main/assets/fonts/SimpleLineIcons.ttf +0 -0
  56. package/android/app/src/main/assets/fonts/Zocial.ttf +0 -0
  57. package/android/app/src/main/java/com/hediarecommendationscreen/MainActivity.java +0 -15
  58. package/android/app/src/main/java/com/hediarecommendationscreen/MainApplication.java +0 -80
  59. package/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  60. package/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  61. package/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  62. package/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  63. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  64. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  65. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  66. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  67. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  68. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  69. package/android/app/src/main/res/values/color.xml +0 -3
  70. package/android/app/src/main/res/values/strings.xml +0 -3
  71. package/android/app/src/main/res/values/styles.xml +0 -11
  72. package/android/build.gradle +0 -38
  73. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  74. package/android/gradle/wrapper/gradle-wrapper.properties +0 -5
  75. package/android/gradle.properties +0 -28
  76. package/android/gradlew +0 -185
  77. package/android/gradlew.bat +0 -89
  78. package/android/settings.gradle +0 -3
  79. package/assets/fonts/Roboto/LICENSE.txt +0 -202
  80. package/assets/fonts/Roboto/Roboto-Black.ttf +0 -0
  81. package/assets/fonts/Roboto/Roboto-BlackItalic.ttf +0 -0
  82. package/assets/fonts/Roboto/Roboto-Bold.ttf +0 -0
  83. package/assets/fonts/Roboto/Roboto-BoldItalic.ttf +0 -0
  84. package/assets/fonts/Roboto/Roboto-Italic.ttf +0 -0
  85. package/assets/fonts/Roboto/Roboto-Light.ttf +0 -0
  86. package/assets/fonts/Roboto/Roboto-LightItalic.ttf +0 -0
  87. package/assets/fonts/Roboto/Roboto-Medium.ttf +0 -0
  88. package/assets/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
  89. package/assets/fonts/Roboto/Roboto-Regular.ttf +0 -0
  90. package/assets/fonts/Roboto/Roboto-Thin.ttf +0 -0
  91. package/assets/fonts/Roboto/Roboto-ThinItalic.ttf +0 -0
  92. package/babel.config.js +0 -18
  93. package/ignore-git.sh +0 -46
  94. package/ignore-publish.sh +0 -33
  95. package/index-git.sh +0 -5
  96. package/ios/HediaRecommendationScreen/AppDelegate.h +0 -8
  97. package/ios/HediaRecommendationScreen/AppDelegate.m +0 -61
  98. package/ios/HediaRecommendationScreen/Images.xcassets/AppIcon.appiconset/Contents.json +0 -38
  99. package/ios/HediaRecommendationScreen/Images.xcassets/Contents.json +0 -6
  100. package/ios/HediaRecommendationScreen/Info.plist +0 -90
  101. package/ios/HediaRecommendationScreen/LaunchScreen.storyboard +0 -47
  102. package/ios/HediaRecommendationScreen/main.m +0 -9
  103. package/ios/HediaRecommendationScreen.xcodeproj/project.pbxproj +0 -778
  104. package/ios/HediaRecommendationScreen.xcodeproj/xcshareddata/xcschemes/HediaRecommendationScreen-tvOS.xcscheme +0 -88
  105. package/ios/HediaRecommendationScreen.xcodeproj/xcshareddata/xcschemes/HediaRecommendationScreen.xcscheme +0 -88
  106. package/ios/HediaRecommendationScreen.xcworkspace/contents.xcworkspacedata +0 -10
  107. package/ios/HediaRecommendationScreen.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  108. package/ios/HediaRecommendationScreenTests/HediaRecommendationScreenTests.m +0 -65
  109. package/ios/HediaRecommendationScreenTests/Info.plist +0 -24
  110. package/ios/Podfile +0 -32
  111. package/ios/Podfile.lock +0 -544
  112. package/jest.config.js +0 -197
  113. package/jest.mock.js +0 -1
  114. package/metro.config.js +0 -17
  115. package/react-native.config.js +0 -7
  116. package/src/__tests__/RecommendationScreen.test.d.ts +0 -1
  117. package/src/__tests__/RecommendationScreen.test.js +0 -965
  118. package/src/__tests__/RecommendationUtils.test.d.ts +0 -1
  119. package/src/__tests__/RecommendationUtils.test.js +0 -216
  120. package/src/__tests__/Translate.test.d.ts +0 -1
  121. package/src/__tests__/Translate.test.js +0 -27
  122. package/src/__tests__/Utils.test.d.ts +0 -1
  123. package/src/__tests__/Utils.test.js +0 -66
  124. package/src/__tests__/Validations.test.d.ts +0 -1
  125. package/src/__tests__/Validations.test.js +0 -465
  126. package/src/__tests__/components/Activity.test.d.ts +0 -1
  127. package/src/__tests__/components/Activity.test.js +0 -86
  128. package/src/__tests__/components/Emotion.test.d.ts +0 -1
  129. package/src/__tests__/components/Emotion.test.js +0 -70
  130. package/src/__tests__/components/Header.test.d.ts +0 -1
  131. package/src/__tests__/components/Header.test.js +0 -36
  132. package/src/__tests__/components/InfoBars.test.d.ts +0 -1
  133. package/src/__tests__/components/InfoBars.test.js +0 -130
  134. package/src/__tests__/components/InvisibleNumberInput.test.d.ts +0 -1
  135. package/src/__tests__/components/InvisibleNumberInput.test.js +0 -160
  136. package/src/__tests__/components/LimitationMessage.test.d.ts +0 -1
  137. package/src/__tests__/components/LimitationMessage.test.js +0 -47
  138. package/src/__tests__/components/MoodIcon.test.d.ts +0 -1
  139. package/src/__tests__/components/MoodIcon.test.js +0 -30
  140. package/src/__tests__/components/RecommendationModal.test.d.ts +0 -1
  141. package/src/__tests__/components/RecommendationModal.test.js +0 -98
  142. package/src/__tests__/components/RecommendedCarbs.test.d.ts +0 -1
  143. package/src/__tests__/components/RecommendedCarbs.test.js +0 -120
  144. package/src/__tests__/components/RecommendedInsulin.test.d.ts +0 -1
  145. package/src/__tests__/components/RecommendedInsulin.test.js +0 -154
  146. package/src/__tests__/components/Remeasure.test.d.ts +0 -1
  147. package/src/__tests__/components/Remeasure.test.js +0 -78
  148. package/src/__tests__/components/TransferToLogbook.test.d.ts +0 -1
  149. package/src/__tests__/components/TransferToLogbook.test.js +0 -30
  150. package/src/__tests__/components/TwoOptionModal.test.d.ts +0 -1
  151. package/src/__tests__/components/TwoOptionModal.test.js +0 -65
  152. package/src/__tests__/utils.d.ts +0 -16
  153. package/src/__tests__/utils.js +0 -126
  154. package/tsconfig.json +0 -72
  155. package/tslint.json +0 -193
  156. package/typedoc.json +0 -13
  157. /package/{index.d.ts → dist/index.d.ts} +0 -0
  158. /package/{index.js → dist/index.js} +0 -0
  159. /package/{src → dist/src}/assets/activity/Cyclist.png +0 -0
  160. /package/{src → dist/src}/assets/activity/Other.png +0 -0
  161. /package/{src → dist/src}/assets/activity/Runner.png +0 -0
  162. /package/{src → dist/src}/assets/activity/Swimmer.png +0 -0
  163. /package/{src → dist/src}/assets/activity/Walk.png +0 -0
  164. /package/{src → dist/src}/assets/mood/happy.png +0 -0
  165. /package/{src → dist/src}/assets/mood/happy_active.png +0 -0
  166. /package/{src → dist/src}/assets/mood/neutral.png +0 -0
  167. /package/{src → dist/src}/assets/mood/neutral_active.png +0 -0
  168. /package/{src → dist/src}/assets/mood/sad.png +0 -0
  169. /package/{src → dist/src}/assets/mood/sad_active.png +0 -0
  170. /package/{src → dist/src}/assets/mood/semi_happy.png +0 -0
  171. /package/{src → dist/src}/assets/mood/semi_happy_active.png +0 -0
  172. /package/{src → dist/src}/assets/mood/semi_sad.png +0 -0
  173. /package/{src → dist/src}/assets/mood/semi_sad_active.png +0 -0
  174. /package/{src → dist/src}/components/Header.d.ts +0 -0
  175. /package/{src → dist/src}/components/Header.js +0 -0
  176. /package/{src → dist/src}/components/Icon.d.ts +0 -0
  177. /package/{src → dist/src}/components/Icon.js +0 -0
  178. /package/{src → dist/src}/components/InfoBars.d.ts +0 -0
  179. /package/{src → dist/src}/components/InfoBars.js +0 -0
  180. /package/{src → dist/src}/components/InvisibleNumberInput.d.ts +0 -0
  181. /package/{src → dist/src}/components/InvisibleNumberInput.js +0 -0
  182. /package/{src → dist/src}/components/LimitationMessage.d.ts +0 -0
  183. /package/{src → dist/src}/components/LimitationMessage.js +0 -0
  184. /package/{src → dist/src}/components/LineSeparator.d.ts +0 -0
  185. /package/{src → dist/src}/components/LineSeparator.js +0 -0
  186. /package/{src → dist/src}/components/RecentInsulin.d.ts +0 -0
  187. /package/{src → dist/src}/components/RecentInsulin.js +0 -0
  188. /package/{src → dist/src}/components/RecommendationModal.d.ts +0 -0
  189. /package/{src → dist/src}/components/RecommendationModal.js +0 -0
  190. /package/{src → dist/src}/components/RecommendedCarbs.d.ts +0 -0
  191. /package/{src → dist/src}/components/RecommendedCarbs.js +0 -0
  192. /package/{src → dist/src}/components/RecommendedInsulin.d.ts +0 -0
  193. /package/{src → dist/src}/components/RecommendedInsulin.js +0 -0
  194. /package/{src → dist/src}/components/Remeasure.d.ts +0 -0
  195. /package/{src → dist/src}/components/Remeasure.js +0 -0
  196. /package/{src → dist/src}/components/TransferToLogbook.d.ts +0 -0
  197. /package/{src → dist/src}/components/TransferToLogbook.js +0 -0
  198. /package/{src → dist/src}/components/TwoOptionModal.d.ts +0 -0
  199. /package/{src → dist/src}/components/TwoOptionModal.js +0 -0
  200. /package/{src → dist/src}/components/activity/Activity.d.ts +0 -0
  201. /package/{src → dist/src}/components/activity/Activity.js +0 -0
  202. /package/{src → dist/src}/components/activity/ActivityIcon.d.ts +0 -0
  203. /package/{src → dist/src}/components/activity/ActivityIcon.js +0 -0
  204. /package/{src → dist/src}/components/activity/ActivityIntensity.d.ts +0 -0
  205. /package/{src → dist/src}/components/activity/ActivityIntensity.js +0 -0
  206. /package/{src → dist/src}/components/mood/Emotion.d.ts +0 -0
  207. /package/{src → dist/src}/components/mood/Emotion.js +0 -0
  208. /package/{src → dist/src}/components/mood/MoodIcon.d.ts +0 -0
  209. /package/{src → dist/src}/components/mood/MoodIcon.js +0 -0
  210. /package/{src → dist/src}/locale/da/messages.js +0 -0
  211. /package/{src → dist/src}/locale/de/messages.js +0 -0
  212. /package/{src → dist/src}/locale/en/messages.js +0 -0
  213. /package/{src → dist/src}/locale/fr/messages.js +0 -0
  214. /package/{src → dist/src}/locale/i18nUtils.d.ts +0 -0
  215. /package/{src → dist/src}/locale/i18nUtils.js +0 -0
  216. /package/{src → dist/src}/locale/it/messages.js +0 -0
  217. /package/{src → dist/src}/types/enum.d.ts +0 -0
  218. /package/{src → dist/src}/types/enum.js +0 -0
  219. /package/{src → dist/src}/types/types.d.ts +0 -0
  220. /package/{src → dist/src}/types/types.js +0 -0
  221. /package/{src → dist/src}/utils/AttentionMessages.d.ts +0 -0
  222. /package/{src → dist/src}/utils/AttentionMessages.js +0 -0
  223. /package/{src → dist/src}/utils/Constants.d.ts +0 -0
  224. /package/{src → dist/src}/utils/Constants.js +0 -0
  225. /package/{src → dist/src}/utils/RecommendationError.d.ts +0 -0
  226. /package/{src → dist/src}/utils/RecommendationError.js +0 -0
  227. /package/{src → dist/src}/utils/RecommendationUtils.d.ts +0 -0
  228. /package/{src → dist/src}/utils/RecommendationUtils.js +0 -0
  229. /package/{src → dist/src}/utils/Translations.d.ts +0 -0
  230. /package/{src → dist/src}/utils/Translations.js +0 -0
  231. /package/{src → dist/src}/utils/Utils.d.ts +0 -0
  232. /package/{src → dist/src}/utils/Utils.js +0 -0
  233. /package/{src → dist/src}/utils/Validations.d.ts +0 -0
  234. /package/{src → dist/src}/utils/Validations.js +0 -0
@@ -1,130 +0,0 @@
1
- import { BloodGlucoseUnit, BloodKetonesUnit } from "@hedia/types";
2
- import React from "react";
3
- import { cleanup, render } from "react-native-testing-library";
4
- import InfoBars from "../../components/InfoBars";
5
- import { expectTextExists, expectTextNotExists } from "../utils";
6
- var DisplayedUnit;
7
- (function (DisplayedUnit) {
8
- DisplayedUnit["MG_DL"] = "mg/dL";
9
- DisplayedUnit["MMOL_L"] = "mmol/L";
10
- })(DisplayedUnit || (DisplayedUnit = {}));
11
- describe(`Info Bars Component`, () => {
12
- afterEach(cleanup);
13
- test(`Active Insulin info bar shows value`, () => {
14
- const props = {
15
- label: `Active Insulin`,
16
- unit: `units`,
17
- value: `4.5`,
18
- showNullAsDash: true,
19
- };
20
- const InfoBarsComponent = render(<InfoBars {...props}/>);
21
- expectTextNotExists(InfoBarsComponent, `${BloodGlucoseUnit.MMOL_L}`);
22
- expectTextExists(InfoBarsComponent, props.label);
23
- expectTextExists(InfoBarsComponent, `${props.unit}`);
24
- expectTextExists(InfoBarsComponent, props.value);
25
- });
26
- test(`Active Insulin info bar - showNullAsDash`, () => {
27
- const props = {
28
- label: `Active Insulin`,
29
- unit: `units`,
30
- showNullAsDash: true,
31
- value: null,
32
- };
33
- const InfoBarsComponent = render(<InfoBars {...props}/>);
34
- expectTextNotExists(InfoBarsComponent, `${BloodGlucoseUnit.MG_DL}`);
35
- expectTextExists(InfoBarsComponent, props.label);
36
- expectTextExists(InfoBarsComponent, `${props.unit}`);
37
- expectTextExists(InfoBarsComponent, `-.-`);
38
- });
39
- test(`Active Insulin info bar - don't showNullAsDash`, () => {
40
- const props = {
41
- label: `Active Insulin`,
42
- unit: `units`,
43
- value: `3.5`,
44
- showNullAsDash: false,
45
- };
46
- const InfoBarsComponent = render(<InfoBars {...props}/>);
47
- expectTextNotExists(InfoBarsComponent, `${BloodGlucoseUnit.MG_DL}`);
48
- expectTextExists(InfoBarsComponent, props.label);
49
- expectTextExists(InfoBarsComponent, `${props.unit}`);
50
- expectTextExists(InfoBarsComponent, props.value);
51
- });
52
- test(`Blood Glucose mmol/l can be displayed`, () => {
53
- const props = {
54
- label: `Blood Glucose Levels`,
55
- unit: BloodGlucoseUnit.MMOL_L,
56
- value: `4.5`,
57
- showNullAsDash: true,
58
- };
59
- const InfoBarsComponent = render(<InfoBars {...props}/>);
60
- expectTextNotExists(InfoBarsComponent, `${BloodGlucoseUnit.MG_DL}`);
61
- expectTextNotExists(InfoBarsComponent, `${BloodGlucoseUnit.MMOL_L}`);
62
- expectTextExists(InfoBarsComponent, props.label);
63
- expectTextExists(InfoBarsComponent, DisplayedUnit.MMOL_L);
64
- expectTextExists(InfoBarsComponent, props.value);
65
- });
66
- test(`Blood Glucose mg/dl can be displayed`, () => {
67
- const props = {
68
- label: `Blood Glucose Levels`,
69
- unit: BloodGlucoseUnit.MG_DL,
70
- value: `135`,
71
- showNullAsDash: true,
72
- };
73
- const InfoBarsComponent = render(<InfoBars {...props}/>);
74
- expectTextNotExists(InfoBarsComponent, `${BloodGlucoseUnit.MMOL_L}`);
75
- expectTextNotExists(InfoBarsComponent, `${BloodGlucoseUnit.MG_DL}`);
76
- expectTextExists(InfoBarsComponent, props.label);
77
- expectTextExists(InfoBarsComponent, DisplayedUnit.MG_DL);
78
- expectTextExists(InfoBarsComponent, props.value);
79
- });
80
- test(`Blood Ketones mmol/l can be displayed`, () => {
81
- const props = {
82
- label: `Blood Ketone Level`,
83
- unit: BloodKetonesUnit.MMOL_L,
84
- value: `2.2`,
85
- showNullAsDash: true,
86
- };
87
- const InfoBarsComponent = render(<InfoBars {...props}/>);
88
- expectTextNotExists(InfoBarsComponent, `${BloodKetonesUnit.MG_DL}`);
89
- expectTextNotExists(InfoBarsComponent, `${BloodKetonesUnit.MMOL_L}`);
90
- expectTextExists(InfoBarsComponent, props.label);
91
- expectTextExists(InfoBarsComponent, DisplayedUnit.MMOL_L);
92
- expectTextExists(InfoBarsComponent, props.value);
93
- });
94
- test(`Blood Ketones mg/dl can be displayed`, () => {
95
- const props = {
96
- label: `Blood Ketone Level`,
97
- unit: BloodKetonesUnit.MG_DL,
98
- value: `10`,
99
- showNullAsDash: true,
100
- };
101
- const InfoBarsComponent = render(<InfoBars {...props}/>);
102
- expectTextNotExists(InfoBarsComponent, `${BloodKetonesUnit.MMOL_L}`);
103
- expectTextNotExists(InfoBarsComponent, `${BloodKetonesUnit.MG_DL}`);
104
- expectTextExists(InfoBarsComponent, props.label);
105
- expectTextExists(InfoBarsComponent, DisplayedUnit.MG_DL);
106
- expectTextExists(InfoBarsComponent, props.value);
107
- });
108
- test.each `
109
- value | showNullAsDash | unit | expected
110
- ${null} | ${false} | ${`units`} | ${`0`}
111
- ${null} | ${false} | ${BloodGlucoseUnit.MG_DL} | ${`0`}
112
- ${null} | ${false} | ${BloodGlucoseUnit.MG_DL} | ${`0`}
113
- ${null} | ${false} | ${BloodKetonesUnit.MG_DL} | ${`0`}
114
- ${null} | ${false} | ${BloodKetonesUnit.MMOL_L} | ${`0`}
115
- ${null} | ${true} | ${`units`} | ${`-.-`}
116
- ${null} | ${true} | ${BloodGlucoseUnit.MG_DL} | ${`-`}
117
- ${null} | ${true} | ${BloodGlucoseUnit.MMOL_L} | ${`-.-`}
118
- ${null} | ${true} | ${BloodKetonesUnit.MG_DL} | ${`-`}
119
- ${null} | ${true} | ${BloodKetonesUnit.MMOL_L} | ${`-.-`}
120
- `(`$value will be displayed as $expected when showNullAsDash === $showNullAsDash`, ({ expected, showNullAsDash, unit, value }) => {
121
- const props = {
122
- label: `Blood Glucose Levels`,
123
- unit,
124
- value,
125
- showNullAsDash,
126
- };
127
- const InfoBarsComponent = render(<InfoBars {...props}/>);
128
- expectTextExists(InfoBarsComponent, expected);
129
- });
130
- });
@@ -1,160 +0,0 @@
1
- import React from "react";
2
- import { cleanup, fireEvent, render } from "react-native-testing-library";
3
- import InvisibleNumberInput from "../../components/InvisibleNumberInput";
4
- describe(`InvisibleNumberInput Component`, () => {
5
- afterEach(cleanup);
6
- test(`Can take value from props`, () => {
7
- const onEndMock = jest.fn();
8
- const partialInputMock = jest.fn();
9
- let callbackInput;
10
- const TEST_ID = `invisible-number-input-test-id`;
11
- const startValue = `24`;
12
- const NumberInput = render(<InvisibleNumberInput negativeAllowed={false} cleanPartialInput={true} decimalPlaces={0} onEnd={onEndMock} partialInput={partialInputMock} visible={(e) => (callbackInput = e)} startValue={startValue} testID={TEST_ID}/>);
13
- // @ts-ignore
14
- callbackInput?.();
15
- const textInput = NumberInput.getByTestId(TEST_ID);
16
- fireEvent(textInput, `onEndEditing`);
17
- expect(partialInputMock).not.toBeCalled();
18
- expect(onEndMock).toBeCalledWith(Number(startValue));
19
- });
20
- test(`Default startValue is 0`, () => {
21
- const onEndMock = jest.fn();
22
- const partialInputMock = jest.fn();
23
- let callbackInput;
24
- const TEST_ID = `invisible-number-input-test-id`;
25
- const NumberInput = render(<InvisibleNumberInput negativeAllowed={false} cleanPartialInput={true} decimalPlaces={0} onEnd={onEndMock} partialInput={partialInputMock} visible={(e) => (callbackInput = e)} testID={TEST_ID}/>);
26
- // @ts-ignore
27
- callbackInput?.();
28
- const textInput = NumberInput.getByTestId(TEST_ID);
29
- fireEvent(textInput, `onEndEditing`);
30
- expect(partialInputMock).not.toBeCalled();
31
- expect(onEndMock).toBeCalledWith(0);
32
- });
33
- test.each `
34
- input | result
35
- ${``} | ${0}
36
- ${`A`} | ${0}
37
- ${`Z`} | ${0}
38
- ${`Ø`} | ${0}
39
- ${`INVALID`} | ${0}
40
- ${`123A`} | ${0}
41
- `(`Invalid number: $input returns $result`, ({ input, result }) => {
42
- const onEndMock = jest.fn();
43
- const partialInputMock = jest.fn();
44
- let callbackInput;
45
- const TEST_ID = `invisible-number-input-test-id`;
46
- const NumberInput = render(<InvisibleNumberInput negativeAllowed={false} cleanPartialInput={true} decimalPlaces={0} onEnd={onEndMock} partialInput={partialInputMock} visible={(e) => (callbackInput = e)} testID={TEST_ID}/>);
47
- // @ts-ignore
48
- callbackInput?.();
49
- const textInput = NumberInput.getByTestId(TEST_ID);
50
- fireEvent(textInput, `onChangeText`, input);
51
- expect(partialInputMock).toBeCalledWith(`${result}`);
52
- expect(onEndMock).not.toBeCalled();
53
- fireEvent(textInput, `onEndEditing`);
54
- expect(onEndMock).toBeCalledWith(result);
55
- });
56
- test(`Will send events when typing`, () => {
57
- const onEndMock = jest.fn();
58
- const partialInputMock = jest.fn();
59
- let callbackInput;
60
- const TEST_ID = `invisible-number-input-test-id`;
61
- const NumberInput = render(<InvisibleNumberInput negativeAllowed={false} cleanPartialInput={true} decimalPlaces={0} onEnd={onEndMock} partialInput={partialInputMock} visible={(e) => (callbackInput = e)} testID={TEST_ID}/>);
62
- // @ts-ignore
63
- callbackInput?.();
64
- const textInput = NumberInput.getByTestId(TEST_ID);
65
- fireEvent.changeText(textInput, `22`);
66
- expect(partialInputMock).toBeCalledWith(`22`);
67
- expect(onEndMock).not.toBeCalled();
68
- });
69
- test.each `
70
- startValue | decimals | expected
71
- ${`1.2`} | ${0} | ${`1`}
72
- ${`1.9`} | ${0} | ${`2`}
73
- ${`1.24`} | ${1} | ${`1.2`}
74
- ${`1.25`} | ${1} | ${`1.3`}
75
- ${`1.26`} | ${1} | ${`1.3`}
76
- ${`24.55`} | ${2} | ${`24.55`}
77
- ${`24.55`} | ${1} | ${`24.6`}
78
- ${`24.5555`} | ${3} | ${`24.556`}
79
- ${`1.`} | ${1} | ${`1.0`}
80
- ${`2.`} | ${2} | ${`2.00`}
81
- `(`Will round $startValue to $decimals decimal places; === $expected`, ({ startValue, decimals, expected }) => {
82
- const onEndMock = jest.fn();
83
- const partialInputMock = jest.fn();
84
- let callbackInput;
85
- const TEST_ID = `invisible-number-input-test-id`;
86
- const NumberInput = render(<InvisibleNumberInput negativeAllowed={false} cleanPartialInput={true} decimalPlaces={decimals} onEnd={onEndMock} partialInput={partialInputMock} visible={(e) => (callbackInput = e)} startValue={startValue} testID={TEST_ID}/>);
87
- // @ts-ignore
88
- callbackInput?.();
89
- const textInput = NumberInput.getByTestId(TEST_ID);
90
- fireEvent(textInput, `onChangeText`, startValue);
91
- expect(partialInputMock).toBeCalledWith(`${expected}`);
92
- });
93
- test.each `
94
- startValue | decimals | expected
95
- ${`1..2`} | ${0} | ${`1`}
96
- ${`1..9`} | ${0} | ${`1`}
97
- ${`7..24`} | ${1} | ${`7.0`}
98
- ${`1...25`} | ${1} | ${`1.0`}
99
- ${`5,.26`} | ${1} | ${`5.0`}
100
- ${`1.2.3`} | ${1} | ${`1.2`}
101
- ${`2,3,4`} | ${1} | ${`2.3`}
102
- ${`3.4,5`} | ${1} | ${`3.4`}
103
- ${`4,5.6`} | ${1} | ${`4.5`}
104
- ${`1.2.3`} | ${0} | ${`1`}
105
- ${`2,3,4`} | ${0} | ${`2`}
106
- ${`3.4,5`} | ${0} | ${`3`}
107
- ${`4,5.6`} | ${0} | ${`5`}
108
- `(`Will remove all non-digits of $startValue, format it to $decimals decimals; === $expected`, ({ startValue, decimals, expected }) => {
109
- const onEndMock = jest.fn();
110
- const partialInputMock = jest.fn();
111
- let callbackInput;
112
- const TEST_ID = `invisible-number-input-test-id`;
113
- const NumberInput = render(<InvisibleNumberInput negativeAllowed={false} cleanPartialInput={true} decimalPlaces={decimals} onEnd={onEndMock} partialInput={partialInputMock} visible={(e) => (callbackInput = e)} startValue={startValue} testID={TEST_ID}/>);
114
- // @ts-ignore
115
- callbackInput?.();
116
- const textInput = NumberInput.getByTestId(TEST_ID);
117
- fireEvent(textInput, `onChangeText`, startValue);
118
- expect(partialInputMock).toBeCalledWith(`${expected}`);
119
- });
120
- test.each `
121
- startValue | decimals | expected
122
- ${`1..2`} | ${0} | ${`1.2`}
123
- ${`1..9`} | ${0} | ${`1.9`}
124
- ${`1..24`} | ${1} | ${`1.24`}
125
- ${`1...25`} | ${1} | ${`1.25`}
126
- ${`1,.26`} | ${1} | ${`1.26`}
127
- `(`Not cleaning partialInput on $startValue`, ({ startValue, decimals, expected }) => {
128
- const onEndMock = jest.fn();
129
- const partialInputMock = jest.fn();
130
- let callbackInput;
131
- const TEST_ID = `invisible-number-input-test-id`;
132
- const NumberInput = render(<InvisibleNumberInput negativeAllowed={false} cleanPartialInput={false} decimalPlaces={decimals} onEnd={onEndMock} partialInput={partialInputMock} visible={(e) => (callbackInput = e)} startValue={startValue} testID={TEST_ID}/>);
133
- // @ts-ignore
134
- callbackInput?.();
135
- const textInput = NumberInput.getByTestId(TEST_ID);
136
- fireEvent(textInput, `onChangeText`, startValue);
137
- expect(partialInputMock).toBeCalledWith(expected);
138
- });
139
- test.each `
140
- startValue | decimals | expected
141
- ${`-2`} | ${0} | ${-2}
142
- ${`-0.001`} | ${3} | ${-0.001}
143
- ${`-0.001`} | ${2} | ${0}
144
- ${`-10000`} | ${0} | ${-10000}
145
- ${`-0`} | ${0} | ${0}
146
- `(`Negative values allowed; $startValue with $decimals decimals should clean to: $expected`, ({ startValue, decimals, expected }) => {
147
- const onEndMock = jest.fn();
148
- const partialInputMock = jest.fn();
149
- let callbackInput;
150
- const TEST_ID = `invisible-number-input-test-id`;
151
- const NumberInput = render(<InvisibleNumberInput negativeAllowed={true} cleanPartialInput={false} decimalPlaces={decimals} onEnd={onEndMock} partialInput={partialInputMock} visible={(e) => (callbackInput = e)} startValue={startValue} testID={TEST_ID}/>);
152
- // @ts-ignore
153
- callbackInput?.();
154
- const textInput = NumberInput.getByTestId(TEST_ID);
155
- fireEvent(textInput, `onChangeText`, startValue);
156
- expect(partialInputMock).toBeCalledWith(startValue);
157
- fireEvent(textInput, `onEndEditing`, startValue);
158
- expect(onEndMock).toBeCalledWith(expected);
159
- });
160
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,47 +0,0 @@
1
- import { BolusCalculator, Languages } from "@hedia/types";
2
- import { I18nProvider } from "@lingui/react";
3
- import React from "react";
4
- import { cleanup, fireEvent, render } from "react-native-testing-library";
5
- import LimitationMessage from "../../components/LimitationMessage";
6
- import { i18n } from "../../locale/i18nUtils";
7
- import { Testing } from "../../types/enum";
8
- import { Messages } from "../../utils/AttentionMessages";
9
- import { expectTextExists } from "../utils";
10
- const SAFETY_INSULIN_LIMIT = BolusCalculator.Constants.SAFETY_INSULIN_LIMIT;
11
- describe(`Info Bars Component`, () => {
12
- afterEach(cleanup);
13
- beforeEach(() => {
14
- i18n.activate(Languages.en);
15
- });
16
- test(`Can call the callback`, () => {
17
- const onPressNextButton = jest.fn();
18
- const props = {
19
- limitationMessage: Messages.RecommendationWasLimited(),
20
- onPressNextButton,
21
- };
22
- const limitationMessage = render(<LimitationMessage {...props}/>);
23
- const nextButton = limitationMessage.getByTestId(Testing.Id.LimitationMessageTestIds.OkButton);
24
- fireEvent(nextButton, `onPress`);
25
- expect(onPressNextButton).toBeCalled();
26
- });
27
- test.each `
28
- language | locale | message
29
- ${`English`} | ${Languages.en} | ${`Your recommendation would have been higher than ${SAFETY_INSULIN_LIMIT} units of insulin, but it has been limited for safety reasons. Hedia never recommends more than ${SAFETY_INSULIN_LIMIT} units of insulin per calculation.`}
30
- ${`Danish`} | ${Languages.da} | ${`Din anbefaling ville have været højere end ${SAFETY_INSULIN_LIMIT} units af insulin, men den er blevet begrænset af sikkerhedshensyn. Hedia anbefaler aldrig mere end ${SAFETY_INSULIN_LIMIT} units af insulin per beregning.`}
31
- ${`German`} | ${Languages.de} | ${`Ihre Empfehlung wäre höher als ${SAFETY_INSULIN_LIMIT} Einheiten Insulin gewesen, aber sie wurde aus Sicherheitsgründen begrenzt. Hedia empfiehlt nie mehr als ${SAFETY_INSULIN_LIMIT} Einheiten Insulin pro Berechnung.`}
32
- ${`Spanish`} | ${Languages.es} | ${`Su recomendación habría sido superior a ${SAFETY_INSULIN_LIMIT} unidades de insulina, pero se ha limitado por razones de seguridad. Hedia nunca recomienda más de ${SAFETY_INSULIN_LIMIT} unidades de insulina por calculación.`}
33
- ${`Italian`} | ${Languages.it} | ${`La tua prescrizione sarebbe stata superiore a ${SAFETY_INSULIN_LIMIT} unità di insulina, ma è stata limitata per motivi di sicurezza. Hedia non prescrive mai più di ${SAFETY_INSULIN_LIMIT} unità di insulina per calcolo.`}
34
- ${`French`} | ${Languages.fr} | ${`Votre recommandation aurait été supérieure à ${SAFETY_INSULIN_LIMIT} unités d’insuline, mais elle a été limitée pour des raisons de sécurité. Hedia ne recommande jamais plus de ${SAFETY_INSULIN_LIMIT} unités d’insuline par calcul.`}
35
- `(`Can display limitation message in $language`, ({ message, locale }) => {
36
- i18n.activate(locale);
37
- const onPressNextButton = jest.fn();
38
- const props = {
39
- limitationMessage: Messages.RecommendationWasLimited(),
40
- onPressNextButton,
41
- };
42
- const limitationMessage = render(<I18nProvider language={locale} i18n={i18n}>
43
- <LimitationMessage {...props}/>,
44
- </I18nProvider>);
45
- expectTextExists(limitationMessage, message);
46
- });
47
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,30 +0,0 @@
1
- import { Logbook } from "@hedia/types";
2
- import React from "react";
3
- import { cleanup, fireEvent, render } from "react-native-testing-library";
4
- import MoodIcon from "../../components/mood/MoodIcon";
5
- const MoodEnum = Logbook.Enums.MoodEnum;
6
- describe(`MoodIcon - Component`, () => {
7
- afterEach(cleanup);
8
- test.each `
9
- mood | moodName
10
- ${MoodEnum.Happy} | ${MoodEnum[MoodEnum.Happy]}
11
- ${MoodEnum.SemiHappy} | ${MoodEnum[MoodEnum.SemiHappy]}
12
- ${MoodEnum.Neutral} | ${MoodEnum[MoodEnum.Neutral]}
13
- ${MoodEnum.SemiSad} | ${MoodEnum[MoodEnum.SemiSad]}
14
- ${MoodEnum.Sad} | ${MoodEnum[MoodEnum.Sad]}
15
- `(`Mounting $moodName smiley is mounted inactive and can be toggled on`, ({ mood, moodName }) => {
16
- let active = false;
17
- const onPressMock = jest.fn((toggle) => (active = toggle));
18
- const wrapper = render(<MoodIcon active={active} mood={mood} onPress={onPressMock}/>);
19
- const getButton = (isActive) => wrapper.getByA11yLabel(`${moodName}_${isActive}`);
20
- const button = getButton(false);
21
- if (button === null) {
22
- return fail(`No button found for getByA11yLabel: ${moodName}_${false}`);
23
- }
24
- fireEvent(button, `onPress`);
25
- expect(onPressMock).toBeCalledWith(true);
26
- expect(active).toBe(true);
27
- wrapper.rerender(<MoodIcon active={active} mood={mood} onPress={onPressMock}/>);
28
- expect(getButton(true)).not.toBeNull();
29
- });
30
- });
@@ -1,98 +0,0 @@
1
- import { Languages } from "@hedia/types";
2
- import { I18nProvider } from "@lingui/react";
3
- import React from "react";
4
- import { cleanup, fireEvent, render } from "react-native-testing-library";
5
- import RecommendationModal from "../../components/RecommendationModal";
6
- import { i18n } from "../../locale/i18nUtils";
7
- import { Testing } from "../../types/enum";
8
- import { Messages } from "../../utils/AttentionMessages";
9
- import { expectTextExists, expectTextNotExists } from "../utils";
10
- const { LimitationMessageTestIds, RecommendationModalTestIds } = Testing.Id;
11
- describe(`RecommendationModal Component`, () => {
12
- afterEach(cleanup);
13
- beforeEach(() => {
14
- i18n.activate(Languages.en);
15
- });
16
- test(`start display with the second page`, () => {
17
- const acceptMock = jest.fn();
18
- const declineMock = jest.fn();
19
- const onClickOkMock = jest.fn();
20
- const wrapper = render(<RecommendationModal isVisible={true} attentionMessage={null} limitationMessage={null} suggestedCarbohydrates={2} onClickOkButton={onClickOkMock} onAcceptCarbohydrates={acceptMock} onDeclineCarbohydrates={declineMock}/>);
21
- expectTextExists(wrapper, `We recommend eating an additional:`);
22
- expectTextExists(wrapper, `2 `);
23
- expectTextExists(wrapper, `grams of carbohydrates`);
24
- expectTextExists(wrapper, `Instead of taking insulin`);
25
- });
26
- test(`accept carbs from second page`, () => {
27
- const acceptMock = jest.fn();
28
- const declineMock = jest.fn();
29
- const onClickOkMock = jest.fn();
30
- const wrapper = render(<RecommendationModal isVisible={true} attentionMessage={null} limitationMessage={null} suggestedCarbohydrates={5} onClickOkButton={onClickOkMock} onAcceptCarbohydrates={acceptMock} onDeclineCarbohydrates={declineMock}/>);
31
- expectTextExists(wrapper, `We recommend eating an additional:`);
32
- expectTextExists(wrapper, `5 `);
33
- expectTextExists(wrapper, `grams of carbohydrates`);
34
- const yesButtonModal = wrapper.getByTestId(RecommendationModalTestIds.AcceptCarbs);
35
- fireEvent(yesButtonModal, `onPress`);
36
- expect(acceptMock).toBeCalled();
37
- });
38
- test(`decline carbs from second page`, () => {
39
- const acceptMock = jest.fn();
40
- const declineMock = jest.fn();
41
- const onClickOkMock = jest.fn();
42
- const wrapper = render(<RecommendationModal isVisible={true} attentionMessage={null} limitationMessage={null} suggestedCarbohydrates={5} onClickOkButton={onClickOkMock} onAcceptCarbohydrates={acceptMock} onDeclineCarbohydrates={declineMock}/>);
43
- expectTextExists(wrapper, `We recommend eating an additional:`);
44
- expectTextExists(wrapper, `grams of carbohydrates`);
45
- const noButtonModal = wrapper.getByTestId(RecommendationModalTestIds.DeclineCarbs);
46
- fireEvent(noButtonModal, `onPress`);
47
- expect(declineMock).toBeCalled();
48
- });
49
- test(`test opens with first page and navigate to second`, () => {
50
- const acceptMock = jest.fn();
51
- const declineMock = jest.fn();
52
- const onClickOkMock = jest.fn();
53
- const limitation = Messages.RecommendationWasLimited();
54
- const attention = Messages.VeryLowBGL();
55
- const wrapper = render(<RecommendationModal isVisible={true} attentionMessage={attention} limitationMessage={limitation} suggestedCarbohydrates={0} onClickOkButton={onClickOkMock} onAcceptCarbohydrates={acceptMock} onDeclineCarbohydrates={declineMock}/>);
56
- expectTextExists(wrapper, limitation);
57
- expectTextExists(wrapper, `OK`);
58
- const nextButton = wrapper.getByTestId(LimitationMessageTestIds.OkButton);
59
- fireEvent(nextButton, `onPress`);
60
- expectTextExists(wrapper, attention);
61
- expectTextExists(wrapper, `OK`);
62
- expectTextNotExists(wrapper, `We recommend eating an additional:`);
63
- const okayButton = wrapper.getByTestId(RecommendationModalTestIds.OkButton);
64
- fireEvent(okayButton, `onPress`);
65
- expect(onClickOkMock).toBeCalled();
66
- });
67
- test(`close modal from first page if ther are no carbs or attention messages on second page`, () => {
68
- const acceptMock = jest.fn();
69
- const declineMock = jest.fn();
70
- const onClickOkMock = jest.fn();
71
- const limitation = Messages.RecommendationWasLimited();
72
- const wrapper = render(<RecommendationModal isVisible={true} attentionMessage={null} limitationMessage={limitation} suggestedCarbohydrates={0} onClickOkButton={onClickOkMock} onAcceptCarbohydrates={acceptMock} onDeclineCarbohydrates={declineMock}/>);
73
- expectTextExists(wrapper, limitation);
74
- expectTextExists(wrapper, `OK`);
75
- const nextButton = wrapper.getByTestId(LimitationMessageTestIds.OkButton);
76
- fireEvent(nextButton, `onPress`);
77
- expect(onClickOkMock).toBeCalled();
78
- });
79
- test.each `
80
- language | locale | message
81
- ${`English`} | ${Languages.en} | ${`We recommend eating an additional:`}
82
- ${`Danish`} | ${Languages.da} | ${`Vi anbefaler at spise yderligere:`}
83
- ${`German`} | ${Languages.de} | ${`Wir empfehlen Ihnen, zusätzlich Folgendes zu essen:`}
84
- ${`Spanish`} | ${Languages.es} | ${`Recomendamos comer adicionalmente:`}
85
- ${`Italian`} | ${Languages.it} | ${`Consigliamo di ingerire una quantità supplementare:`}
86
- ${`French`} | ${Languages.fr} | ${`Nous vous recommandons de manger en plus :`}
87
- `(`Modal renders attention messages in $language`, ({ message, locale }) => {
88
- i18n.activate(locale);
89
- const acceptMock = jest.fn();
90
- const declineMock = jest.fn();
91
- const onClickOkMock = jest.fn();
92
- const wrapper = render(<I18nProvider language={locale} i18n={i18n}>
93
- <RecommendationModal isVisible={true} attentionMessage={null} limitationMessage={null} suggestedCarbohydrates={2} onClickOkButton={onClickOkMock} onAcceptCarbohydrates={acceptMock} onDeclineCarbohydrates={declineMock}/>
94
- ,
95
- </I18nProvider>);
96
- expectTextExists(wrapper, message);
97
- });
98
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,120 +0,0 @@
1
- import React from "react";
2
- import { cleanup, fireEvent, render } from "react-native-testing-library";
3
- import InvisibleNumberInput from "../../components/InvisibleNumberInput";
4
- import RecommendedCarbs from "../../components/RecommendedCarbs";
5
- import { Testing } from "../../types/enum";
6
- import { expectTextExists, expectTextNotExists } from "../utils";
7
- const { RecommendedCarbsTestIds } = Testing.Id;
8
- describe(`Calculation Component`, () => {
9
- afterEach(cleanup);
10
- test(`calculate total carbs`, () => {
11
- const removeMock = jest.fn();
12
- const changeMock = jest.fn();
13
- const newValue = 40;
14
- const wrapper = render(<RecommendedCarbs enteredCarbs={`10`} recommendedCarbs={`25`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock}/>);
15
- expectTextExists(wrapper, `Food`);
16
- expectTextExists(wrapper, `Additional`);
17
- expectTextExists(wrapper, `10`);
18
- expectTextExists(wrapper, `25`);
19
- expectTextExists(wrapper, `35`);
20
- const invisInput = wrapper.getByTestId(RecommendedCarbsTestIds.InvisibleCarbInput);
21
- fireEvent(invisInput, `onEnd`, newValue);
22
- expect(changeMock).toBeCalledWith(newValue);
23
- wrapper.rerender(<RecommendedCarbs enteredCarbs={`10`} recommendedCarbs={`${newValue}`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock}/>);
24
- expectTextExists(wrapper, `10`);
25
- expectTextExists(wrapper, `${newValue}`);
26
- expectTextExists(wrapper, `50`);
27
- expectTextNotExists(wrapper, `35`);
28
- });
29
- test(`25 recommended carbs`, () => {
30
- const removeMock = jest.fn();
31
- const changeMock = jest.fn();
32
- const wrapper = render(<RecommendedCarbs enteredCarbs={`0`} recommendedCarbs={`25`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock}/>);
33
- expectTextExists(wrapper, `Food`);
34
- expectTextExists(wrapper, `Additional`);
35
- expect(wrapper.getAllByText(`25`).length).toBe(2);
36
- });
37
- test(`25.5 recommended carbs get rounded to 26`, () => {
38
- const removeMock = jest.fn();
39
- const changeMock = jest.fn();
40
- const wrapper = render(<RecommendedCarbs enteredCarbs={`0`} recommendedCarbs={`25.5`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock}/>);
41
- expectTextExists(wrapper, `Food`);
42
- expectTextExists(wrapper, `Additional`);
43
- expect(wrapper.getAllByText(`26`).length).toBe(2);
44
- });
45
- test(`Negative recommended carbs does not render 'recommended additional g carbs'`, () => {
46
- const removeMock = jest.fn();
47
- const changeMock = jest.fn();
48
- const wrapper = render(<RecommendedCarbs enteredCarbs={`0`} recommendedCarbs={`-25`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock}/>);
49
- expectTextExists(wrapper, `Food`);
50
- expectTextNotExists(wrapper, `Additional`);
51
- expectTextNotExists(wrapper, `-25`);
52
- });
53
- test(`No recommended carbs does not render 'recommended additional g carbs'`, () => {
54
- const removeMock = jest.fn();
55
- const changeMock = jest.fn();
56
- const wrapper = render(<RecommendedCarbs enteredCarbs={`0`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock}/>);
57
- expectTextExists(wrapper, `Food`);
58
- expectTextNotExists(wrapper, `Additional`);
59
- });
60
- test(`Editing recommended carbs`, () => {
61
- const removeMock = jest.fn();
62
- const changeMock = jest.fn();
63
- const wrapper = render(<RecommendedCarbs enteredCarbs={`0`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock} recommendedCarbs={`12`}/>);
64
- expectTextExists(wrapper, `Food`);
65
- expectTextExists(wrapper, `Additional`);
66
- expect(wrapper.getAllByText(`12`).length).toBe(2);
67
- const carbButton = wrapper.getByTestId(RecommendedCarbsTestIds.EditRecommendedCarbs);
68
- fireEvent(carbButton, `onPress`);
69
- expect(wrapper.getAllByText(`12`).length).toBe(2);
70
- });
71
- test(`Finished editing recommended carbs with carbs >= 0`, () => {
72
- const removeMock = jest.fn();
73
- const changeMock = jest.fn();
74
- const wrapper = render(<RecommendedCarbs enteredCarbs={`0`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock} recommendedCarbs={`12`}/>);
75
- expectTextExists(wrapper, `Food`);
76
- expectTextExists(wrapper, `Additional`);
77
- const carbButton = wrapper.getByTestId(RecommendedCarbsTestIds.EditRecommendedCarbs);
78
- fireEvent(carbButton, `onPress`);
79
- const invisInput = wrapper.getByTestId(RecommendedCarbsTestIds.InvisibleCarbInput);
80
- fireEvent(invisInput, `onEndEditing`);
81
- expect(changeMock).toBeCalledWith(Number(`12`));
82
- });
83
- test(`Negative recommendedCarbs removes recommendedCarbs render`, () => {
84
- const removeMock = jest.fn();
85
- const changeMock = jest.fn();
86
- const wrapper = render(<RecommendedCarbs enteredCarbs={`0`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock} recommendedCarbs={`-12`}/>);
87
- expectTextExists(wrapper, `Food`);
88
- expectTextNotExists(wrapper, `Additional`);
89
- const carbButton = wrapper.queryByTestId(RecommendedCarbsTestIds.EditRecommendedCarbs);
90
- expect(carbButton).toBeNull();
91
- });
92
- test(`Negative carbs doesn't invoke changedRecommendedCarbs callback`, () => {
93
- const removeMock = jest.fn();
94
- const changeMock = jest.fn();
95
- const wrapper = render(<RecommendedCarbs enteredCarbs={`0`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock} recommendedCarbs={`1`}/>);
96
- const numberInput = wrapper.UNSAFE_getByType(InvisibleNumberInput);
97
- fireEvent(numberInput, `onEnd`, -12);
98
- expect(removeMock).not.toBeCalled();
99
- expect(changeMock).not.toBeCalled();
100
- });
101
- test(`Carb error limit is > 300`, () => {
102
- const removeMock = jest.fn();
103
- const changeMock = jest.fn();
104
- const wrapper = render(<RecommendedCarbs enteredCarbs={`0`} recommendedCarbs={`25`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock}/>);
105
- expect(wrapper.getAllByText(`25`).length).toBe(2);
106
- const invisInput = wrapper.getByTestId(RecommendedCarbsTestIds.InvisibleCarbInput);
107
- fireEvent(invisInput, `onEnd`, 302);
108
- expect(wrapper.getAllByText(`25`).length).toBe(2);
109
- expectTextNotExists(wrapper, `302`);
110
- });
111
- test(`Pressing on the remove button invokes the removeRecommendedCarbs callback`, () => {
112
- const removeMock = jest.fn();
113
- const changeMock = jest.fn();
114
- const wrapper = render(<RecommendedCarbs enteredCarbs={`0`} changedRecommendedCarbs={changeMock} removeRecommendedCarbs={removeMock} recommendedCarbs={`1`}/>);
115
- expect(removeMock).not.toBeCalled();
116
- const removeButton = wrapper.getByA11yLabel(`removeRecommendedCarbs`);
117
- fireEvent(removeButton, `onPress`);
118
- expect(removeMock).toBeCalled();
119
- });
120
- });
@@ -1 +0,0 @@
1
- export {};