@hedia/recommendation-screen 1.8.2 → 2.0.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 (283) hide show
  1. package/.github/workflows/ci.yml +0 -0
  2. package/.github/workflows/publish.yml +48 -0
  3. package/.github/workflows/version-check.yml +45 -0
  4. package/.linguirc +0 -0
  5. package/.npmpackagejsonlintrc.json +0 -0
  6. package/.prettierignore +0 -0
  7. package/.prettierrc +0 -0
  8. package/App.d.ts +4 -5
  9. package/App.jsx +23 -34
  10. package/App.tsx +36 -41
  11. package/Changelog.md +0 -0
  12. package/README.md +0 -0
  13. package/android/app/BUCK +0 -0
  14. package/android/app/build.gradle +0 -0
  15. package/android/app/build_defs.bzl +0 -0
  16. package/android/app/debug.keystore +0 -0
  17. package/android/app/proguard-rules.pro +0 -0
  18. package/android/app/src/debug/AndroidManifest.xml +0 -0
  19. package/android/app/src/debug/java/com/hediarecommendationscreen/ReactNativeFlipper.java +0 -0
  20. package/android/app/src/main/AndroidManifest.xml +0 -0
  21. package/android/app/src/main/assets/fonts/AntDesign.ttf +0 -0
  22. package/android/app/src/main/assets/fonts/Entypo.ttf +0 -0
  23. package/android/app/src/main/assets/fonts/EvilIcons.ttf +0 -0
  24. package/android/app/src/main/assets/fonts/Feather.ttf +0 -0
  25. package/android/app/src/main/assets/fonts/FontAwesome.ttf +0 -0
  26. package/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf +0 -0
  27. package/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf +0 -0
  28. package/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf +0 -0
  29. package/android/app/src/main/assets/fonts/Foundation.ttf +0 -0
  30. package/android/app/src/main/assets/fonts/Ionicons.ttf +0 -0
  31. package/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf +0 -0
  32. package/android/app/src/main/assets/fonts/MaterialIcons.ttf +0 -0
  33. package/android/app/src/main/assets/fonts/Octicons.ttf +0 -0
  34. package/android/app/src/main/assets/fonts/Roboto-Black.ttf +0 -0
  35. package/android/app/src/main/assets/fonts/Roboto-BlackItalic.ttf +0 -0
  36. package/android/app/src/main/assets/fonts/Roboto-Bold.ttf +0 -0
  37. package/android/app/src/main/assets/fonts/Roboto-BoldItalic.ttf +0 -0
  38. package/android/app/src/main/assets/fonts/Roboto-Italic.ttf +0 -0
  39. package/android/app/src/main/assets/fonts/Roboto-Light.ttf +0 -0
  40. package/android/app/src/main/assets/fonts/Roboto-LightItalic.ttf +0 -0
  41. package/android/app/src/main/assets/fonts/Roboto-Medium.ttf +0 -0
  42. package/android/app/src/main/assets/fonts/Roboto-MediumItalic.ttf +0 -0
  43. package/android/app/src/main/assets/fonts/Roboto-Regular.ttf +0 -0
  44. package/android/app/src/main/assets/fonts/Roboto-Thin.ttf +0 -0
  45. package/android/app/src/main/assets/fonts/Roboto-ThinItalic.ttf +0 -0
  46. package/android/app/src/main/assets/fonts/SimpleLineIcons.ttf +0 -0
  47. package/android/app/src/main/assets/fonts/Zocial.ttf +0 -0
  48. package/android/app/src/main/java/com/hediarecommendationscreen/MainActivity.java +0 -0
  49. package/android/app/src/main/java/com/hediarecommendationscreen/MainApplication.java +0 -0
  50. package/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  51. package/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  52. package/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  53. package/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  54. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  55. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  56. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  57. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  58. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  59. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  60. package/android/app/src/main/res/values/color.xml +0 -0
  61. package/android/app/src/main/res/values/strings.xml +0 -0
  62. package/android/app/src/main/res/values/styles.xml +0 -0
  63. package/android/build.gradle +0 -0
  64. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  65. package/android/gradle/wrapper/gradle-wrapper.properties +0 -0
  66. package/android/gradle.properties +0 -0
  67. package/android/gradlew.bat +0 -0
  68. package/android/settings.gradle +0 -0
  69. package/app.json +0 -0
  70. package/assets/fonts/Roboto/LICENSE.txt +0 -0
  71. package/assets/fonts/Roboto/Roboto-Black.ttf +0 -0
  72. package/assets/fonts/Roboto/Roboto-BlackItalic.ttf +0 -0
  73. package/assets/fonts/Roboto/Roboto-Bold.ttf +0 -0
  74. package/assets/fonts/Roboto/Roboto-BoldItalic.ttf +0 -0
  75. package/assets/fonts/Roboto/Roboto-Italic.ttf +0 -0
  76. package/assets/fonts/Roboto/Roboto-Light.ttf +0 -0
  77. package/assets/fonts/Roboto/Roboto-LightItalic.ttf +0 -0
  78. package/assets/fonts/Roboto/Roboto-Medium.ttf +0 -0
  79. package/assets/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
  80. package/assets/fonts/Roboto/Roboto-Regular.ttf +0 -0
  81. package/assets/fonts/Roboto/Roboto-Thin.ttf +0 -0
  82. package/assets/fonts/Roboto/Roboto-ThinItalic.ttf +0 -0
  83. package/babel.config.js +0 -0
  84. package/ignore-git.sh +1 -1
  85. package/ignore-publish.sh +2 -1
  86. package/index.d.ts +2 -2
  87. package/index.js +2 -3
  88. package/index.ts +2 -2
  89. package/ios/HediaRecommendationScreen/AppDelegate.h +0 -0
  90. package/ios/HediaRecommendationScreen/AppDelegate.m +0 -0
  91. package/ios/HediaRecommendationScreen/Base.lproj/LaunchScreen.xib +0 -0
  92. package/ios/HediaRecommendationScreen/Images.xcassets/AppIcon.appiconset/Contents.json +0 -0
  93. package/ios/HediaRecommendationScreen/Images.xcassets/Contents.json +0 -0
  94. package/ios/HediaRecommendationScreen/Info.plist +0 -0
  95. package/ios/HediaRecommendationScreen/main.m +0 -0
  96. package/ios/HediaRecommendationScreen-tvOS/Info.plist +0 -0
  97. package/ios/HediaRecommendationScreen-tvOSTests/Info.plist +0 -0
  98. package/ios/HediaRecommendationScreen.xcodeproj/project.pbxproj +0 -0
  99. package/ios/HediaRecommendationScreen.xcodeproj/xcshareddata/xcschemes/HediaRecommendationScreen-tvOS.xcscheme +0 -0
  100. package/ios/HediaRecommendationScreen.xcodeproj/xcshareddata/xcschemes/HediaRecommendationScreen.xcscheme +0 -0
  101. package/ios/HediaRecommendationScreen.xcworkspace/contents.xcworkspacedata +0 -0
  102. package/ios/HediaRecommendationScreen.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
  103. package/ios/HediaRecommendationScreenTests/HediaRecommendationScreenTests.m +0 -0
  104. package/ios/HediaRecommendationScreenTests/Info.plist +0 -0
  105. package/ios/Podfile +0 -0
  106. package/ios/Podfile.lock +0 -0
  107. package/jest.config.js +0 -0
  108. package/jest.mock.js +0 -0
  109. package/metro.config.js +0 -0
  110. package/package.json +8 -10
  111. package/react-native.config.js +0 -0
  112. package/src/RecommendationScreen.d.ts +18 -20
  113. package/src/RecommendationScreen.jsx +26 -15
  114. package/src/RecommendationScreen.tsx +60 -37
  115. package/src/__tests__/RecommendationScreen.test.d.ts +0 -0
  116. package/src/__tests__/RecommendationScreen.test.jsx +163 -138
  117. package/src/__tests__/RecommendationScreen.test.tsx +256 -159
  118. package/src/__tests__/RecommendationUtils.test.d.ts +0 -0
  119. package/src/__tests__/RecommendationUtils.test.js +30 -39
  120. package/src/__tests__/RecommendationUtils.test.ts +38 -43
  121. package/src/__tests__/Translate.test.d.ts +0 -0
  122. package/src/__tests__/Translate.test.jsx +13 -12
  123. package/src/__tests__/Translate.test.tsx +15 -14
  124. package/src/__tests__/Utils.test.d.ts +0 -0
  125. package/src/__tests__/Utils.test.js +22 -20
  126. package/src/__tests__/Utils.test.ts +32 -21
  127. package/src/__tests__/Validations.test.d.ts +0 -0
  128. package/src/__tests__/Validations.test.js +59 -33
  129. package/src/__tests__/Validations.test.ts +83 -41
  130. package/src/__tests__/components/Activity.test.d.ts +0 -0
  131. package/src/__tests__/components/Activity.test.jsx +39 -18
  132. package/src/__tests__/components/Activity.test.tsx +99 -45
  133. package/src/__tests__/components/Emotion.test.d.ts +0 -0
  134. package/src/__tests__/components/Emotion.test.jsx +34 -25
  135. package/src/__tests__/components/Emotion.test.tsx +41 -24
  136. package/src/__tests__/components/Header.test.d.ts +0 -0
  137. package/src/__tests__/components/Header.test.jsx +10 -9
  138. package/src/__tests__/components/Header.test.tsx +12 -11
  139. package/src/__tests__/components/InfoBars.test.d.ts +0 -0
  140. package/src/__tests__/components/InfoBars.test.jsx +1 -0
  141. package/src/__tests__/components/InfoBars.test.tsx +7 -6
  142. package/src/__tests__/components/InvisibleNumberInput.test.d.ts +0 -0
  143. package/src/__tests__/components/InvisibleNumberInput.test.jsx +40 -24
  144. package/src/__tests__/components/InvisibleNumberInput.test.tsx +41 -17
  145. package/src/__tests__/components/LimitationMessage.test.d.ts +0 -0
  146. package/src/__tests__/components/LimitationMessage.test.jsx +11 -30
  147. package/src/__tests__/components/LimitationMessage.test.tsx +15 -13
  148. package/src/__tests__/components/MoodIcon.test.d.ts +0 -0
  149. package/src/__tests__/components/MoodIcon.test.jsx +12 -8
  150. package/src/__tests__/components/MoodIcon.test.tsx +13 -5
  151. package/src/__tests__/components/RecommendationModal.test.d.ts +0 -0
  152. package/src/__tests__/components/RecommendationModal.test.jsx +22 -21
  153. package/src/__tests__/components/RecommendationModal.test.tsx +29 -27
  154. package/src/__tests__/components/RecommendedCarbs.test.d.ts +0 -0
  155. package/src/__tests__/components/RecommendedCarbs.test.jsx +7 -10
  156. package/src/__tests__/components/RecommendedCarbs.test.tsx +9 -10
  157. package/src/__tests__/components/RecommendedInsulin.test.d.ts +0 -0
  158. package/src/__tests__/components/RecommendedInsulin.test.jsx +57 -41
  159. package/src/__tests__/components/RecommendedInsulin.test.tsx +57 -31
  160. package/src/__tests__/components/Remeasure.test.d.ts +0 -0
  161. package/src/__tests__/components/Remeasure.test.jsx +7 -3
  162. package/src/__tests__/components/Remeasure.test.tsx +11 -3
  163. package/src/__tests__/components/TransferToLogbook.test.d.ts +0 -0
  164. package/src/__tests__/components/TransferToLogbook.test.jsx +2 -2
  165. package/src/__tests__/components/TransferToLogbook.test.tsx +2 -2
  166. package/src/__tests__/components/TwoOptionModal.test.d.ts +0 -0
  167. package/src/__tests__/components/TwoOptionModal.test.jsx +5 -4
  168. package/src/__tests__/components/TwoOptionModal.test.tsx +6 -4
  169. package/src/__tests__/utils.d.ts +7 -2
  170. package/src/__tests__/utils.jsx +59 -15
  171. package/src/__tests__/utils.tsx +63 -16
  172. package/src/assets/activity/Cyclist.png +0 -0
  173. package/src/assets/activity/Other.png +0 -0
  174. package/src/assets/activity/Runner.png +0 -0
  175. package/src/assets/activity/Swimmer.png +0 -0
  176. package/src/assets/activity/Walk.png +0 -0
  177. package/src/assets/mood/happy.png +0 -0
  178. package/src/assets/mood/happy_active.png +0 -0
  179. package/src/assets/mood/neutral.png +0 -0
  180. package/src/assets/mood/neutral_active.png +0 -0
  181. package/src/assets/mood/sad.png +0 -0
  182. package/src/assets/mood/sad_active.png +0 -0
  183. package/src/assets/mood/semi_happy.png +0 -0
  184. package/src/assets/mood/semi_happy_active.png +0 -0
  185. package/src/assets/mood/semi_sad.png +0 -0
  186. package/src/assets/mood/semi_sad_active.png +0 -0
  187. package/src/components/Header.d.ts +0 -0
  188. package/src/components/Header.jsx +2 -1
  189. package/src/components/Header.tsx +2 -1
  190. package/src/components/Icon.js +0 -0
  191. package/src/components/InfoBars.d.ts +1 -1
  192. package/src/components/InfoBars.jsx +0 -0
  193. package/src/components/InfoBars.tsx +1 -1
  194. package/src/components/InvisibleNumberInput.d.ts +2 -1
  195. package/src/components/InvisibleNumberInput.jsx +7 -2
  196. package/src/components/InvisibleNumberInput.tsx +10 -3
  197. package/src/components/LimitationMessage.d.ts +1 -1
  198. package/src/components/LimitationMessage.jsx +3 -2
  199. package/src/components/LimitationMessage.tsx +3 -1
  200. package/src/components/LineSeparator.d.ts +0 -0
  201. package/src/components/LineSeparator.jsx +0 -0
  202. package/src/components/LineSeparator.tsx +0 -0
  203. package/src/components/RecentInsulin.d.ts +0 -0
  204. package/src/components/RecentInsulin.jsx +3 -2
  205. package/src/components/RecentInsulin.tsx +3 -0
  206. package/src/components/RecommendationModal.d.ts +4 -4
  207. package/src/components/RecommendationModal.jsx +10 -9
  208. package/src/components/RecommendationModal.tsx +19 -8
  209. package/src/components/RecommendedCarbs.d.ts +4 -3
  210. package/src/components/RecommendedCarbs.jsx +12 -9
  211. package/src/components/RecommendedCarbs.tsx +31 -16
  212. package/src/components/RecommendedInsulin.d.ts +7 -7
  213. package/src/components/RecommendedInsulin.jsx +11 -7
  214. package/src/components/RecommendedInsulin.tsx +24 -12
  215. package/src/components/Remeasure.d.ts +2 -2
  216. package/src/components/Remeasure.jsx +7 -2
  217. package/src/components/Remeasure.tsx +10 -4
  218. package/src/components/TransferToLogbook.d.ts +0 -0
  219. package/src/components/TransferToLogbook.jsx +2 -1
  220. package/src/components/TransferToLogbook.tsx +2 -0
  221. package/src/components/TwoOptionModal.d.ts +5 -3
  222. package/src/components/TwoOptionModal.jsx +44 -13
  223. package/src/components/TwoOptionModal.tsx +50 -14
  224. package/src/components/activity/Activity.d.ts +2 -3
  225. package/src/components/activity/Activity.jsx +5 -2
  226. package/src/components/activity/Activity.tsx +7 -5
  227. package/src/components/activity/ActivityIcon.d.ts +1 -1
  228. package/src/components/activity/ActivityIcon.jsx +9 -8
  229. package/src/components/activity/ActivityIcon.tsx +12 -10
  230. package/src/components/activity/ActivityIntensity.d.ts +1 -1
  231. package/src/components/activity/ActivityIntensity.jsx +2 -8
  232. package/src/components/activity/ActivityIntensity.tsx +3 -12
  233. package/src/components/mood/Emotion.d.ts +5 -4
  234. package/src/components/mood/Emotion.jsx +4 -3
  235. package/src/components/mood/Emotion.tsx +9 -7
  236. package/src/components/mood/MoodIcon.d.ts +2 -2
  237. package/src/components/mood/MoodIcon.jsx +3 -2
  238. package/src/components/mood/MoodIcon.tsx +4 -2
  239. package/src/locale/CleanLanguage.ts +0 -0
  240. package/src/locale/da/messages.js +1 -1
  241. package/src/locale/da/messages.po +115 -107
  242. package/src/locale/de/messages.js +1 -1
  243. package/src/locale/de/messages.po +115 -107
  244. package/src/locale/en/messages.js +1 -1
  245. package/src/locale/en/messages.po +118 -110
  246. package/src/locale/es/messages.js +1 -1
  247. package/src/locale/es/messages.po +112 -104
  248. package/src/locale/fr/messages.js +1 -1
  249. package/src/locale/fr/messages.po +111 -103
  250. package/src/locale/i18nUtils.d.ts +3 -4
  251. package/src/locale/i18nUtils.js +13 -12
  252. package/src/locale/i18nUtils.ts +14 -14
  253. package/src/locale/it/messages.js +1 -1
  254. package/src/locale/it/messages.po +113 -105
  255. package/src/types/enum.d.ts +52 -44
  256. package/src/types/enum.js +67 -56
  257. package/src/types/enum.ts +58 -34
  258. package/src/types/types.d.ts +9 -23
  259. package/src/types/types.js +0 -0
  260. package/src/types/types.ts +9 -25
  261. package/src/utils/AttentionMessages.d.ts +1 -4
  262. package/src/utils/AttentionMessages.jsx +8 -30
  263. package/src/utils/AttentionMessages.tsx +11 -16
  264. package/src/utils/Constants.d.ts +0 -0
  265. package/src/utils/Constants.js +0 -0
  266. package/src/utils/Constants.ts +0 -0
  267. package/src/utils/RecommendationError.d.ts +2 -0
  268. package/src/utils/RecommendationError.jsx +45 -40
  269. package/src/utils/RecommendationError.tsx +17 -4
  270. package/src/utils/RecommendationUtils.d.ts +7 -8
  271. package/src/utils/RecommendationUtils.js +15 -7
  272. package/src/utils/RecommendationUtils.ts +24 -14
  273. package/src/utils/Translations.d.ts +2 -0
  274. package/src/utils/Translations.js +10 -0
  275. package/src/utils/Translations.ts +9 -0
  276. package/src/utils/Utils.d.ts +4 -5
  277. package/src/utils/Utils.js +6 -5
  278. package/src/utils/Utils.ts +10 -8
  279. package/src/utils/Validations.d.ts +10 -9
  280. package/src/utils/Validations.js +61 -65
  281. package/src/utils/Validations.ts +76 -81
  282. package/tsconfig.json +2 -2
  283. package/tslint.json +0 -0
@@ -3,22 +3,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const RecommendationCalculator_1 = require("@hedia/recommendation-calculator/src/RecommendationCalculator");
7
6
  const types_1 = require("@hedia/types");
8
7
  const react_1 = __importDefault(require("react"));
9
8
  const react_native_testing_library_1 = require("react-native-testing-library");
10
- const InvisibleNumberInput_1 = __importDefault(require("../components/InvisibleNumberInput"));
11
9
  const i18nUtils_1 = require("../locale/i18nUtils");
12
10
  const RecommendationScreen_1 = __importDefault(require("../RecommendationScreen"));
13
11
  const enum_1 = require("../types/enum");
14
12
  const AttentionMessages_1 = require("../utils/AttentionMessages");
15
13
  const RecommendationError_1 = require("../utils/RecommendationError");
14
+ const Translations_1 = require("../utils/Translations");
16
15
  const Utils_1 = require("../utils/Utils");
17
16
  const utils_1 = require("./utils");
17
+ const ActivityIntensity = types_1.Activity.Enums.ActivityIntensity;
18
+ const ActivityEnum = types_1.Activity.Enums.ActivityEnum;
19
+ const InjectionMethod = types_1.UserSettings.Enums.InjectionMethod;
20
+ const MoodEnum = types_1.Logbook.Enums.MoodEnum;
21
+ const { light, moderate, hard } = ActivityIntensity;
18
22
  describe(`RecommendationScreen`, () => {
19
23
  jest.useFakeTimers();
20
24
  beforeEach(() => {
21
- i18nUtils_1.i18n.activate(enum_1.Language.en);
25
+ i18nUtils_1.i18n.activate(types_1.Languages.en);
22
26
  global.Date.now = () => 1;
23
27
  });
24
28
  afterEach(() => {
@@ -34,11 +38,12 @@ describe(`RecommendationScreen`, () => {
34
38
  insulinSensitivity: 5,
35
39
  targetBGL: 7,
36
40
  recentBoluses: [],
41
+ activity: null,
37
42
  },
38
43
  userReminder: 5,
39
44
  });
40
45
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
41
- const okButton = wrapper.queryByA11yLabel(`yesButtonModal`);
46
+ const okButton = wrapper.getByTestId(enum_1.RecommendationModalTestIds.AcceptCarbs);
42
47
  react_native_testing_library_1.fireEvent(okButton, `onPress`);
43
48
  utils_1.expectTextExists(wrapper, `Food`);
44
49
  utils_1.expectTextExists(wrapper, `Additional`);
@@ -55,14 +60,14 @@ describe(`RecommendationScreen`, () => {
55
60
  },
56
61
  });
57
62
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
58
- const okButton = wrapper.queryByA11yLabel(`yesButtonModal`);
63
+ const okButton = wrapper.getByTestId(enum_1.RecommendationModalTestIds.AcceptCarbs);
59
64
  react_native_testing_library_1.fireEvent(okButton, `onPress`);
60
65
  utils_1.expectTextExists(wrapper, `Food`);
61
66
  utils_1.expectTextExists(wrapper, `Additional`);
62
67
  utils_1.expectTextExists(wrapper, `5`);
63
68
  utils_1.expectTextExists(wrapper, `Remind me to remeasure in`);
64
69
  utils_1.expectTextExists(wrapper, `0.25`);
65
- const textInput = wrapper.queryByA11yLabel(`InvisibleNumberInput`);
70
+ const textInput = wrapper.getByTestId(enum_1.RecommendedCarbsTestIds.InvisibleCarbInput);
66
71
  react_native_testing_library_1.fireEvent(textInput, `onChangeText`, `85`);
67
72
  utils_1.expectTextNotExists(wrapper, `6`);
68
73
  utils_1.expectTextExists(wrapper, `85`);
@@ -76,11 +81,12 @@ describe(`RecommendationScreen`, () => {
76
81
  insulinSensitivity: 5,
77
82
  targetBGL: 7,
78
83
  recentBoluses: [],
84
+ activity: null,
79
85
  },
80
86
  userReminder: 6,
81
87
  });
82
88
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
83
- const okayButton = wrapper.queryByA11yLabel(`okayButtonModal`);
89
+ const okayButton = wrapper.getByTestId(enum_1.RecommendationModalTestIds.OkButton);
84
90
  react_native_testing_library_1.fireEvent(okayButton, `onPress`);
85
91
  utils_1.expectTextExists(wrapper, `Food`);
86
92
  utils_1.expectTextNotExists(wrapper, `Additional`);
@@ -96,6 +102,7 @@ describe(`RecommendationScreen`, () => {
96
102
  insulinSensitivity: 5,
97
103
  targetBGL: 7,
98
104
  recentBoluses: [],
105
+ activity: null,
99
106
  },
100
107
  });
101
108
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
@@ -112,15 +119,16 @@ describe(`RecommendationScreen`, () => {
112
119
  insulinSensitivity: 5,
113
120
  targetBGL: 7,
114
121
  recentBoluses: [],
122
+ activity: null,
115
123
  },
116
124
  });
117
125
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
118
- const okButton = wrapper.queryByA11yLabel(`yesButtonModal`);
126
+ const okButton = wrapper.getByTestId(enum_1.RecommendationModalTestIds.AcceptCarbs);
119
127
  react_native_testing_library_1.fireEvent(okButton, `onPress`);
120
128
  utils_1.expectTextExists(wrapper, `Food`);
121
129
  utils_1.expectTextExists(wrapper, `Additional`);
122
130
  utils_1.expectTextExists(wrapper, `1`);
123
- const removeButton = wrapper.queryByA11yLabel(`removeRecommendedCarbs`);
131
+ const removeButton = wrapper.getByTestId(enum_1.RecommendedCarbsTestIds.RemoveRecommendation);
124
132
  react_native_testing_library_1.fireEvent(removeButton, `onPress`);
125
133
  utils_1.expectTextNotExists(wrapper, `Additional`);
126
134
  utils_1.expectTextNotExists(wrapper, `1`);
@@ -129,7 +137,7 @@ describe(`RecommendationScreen`, () => {
129
137
  const props = utils_1.getRecommendationProps();
130
138
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
131
139
  utils_1.expectTextExists(wrapper, `hours`);
132
- const slider = wrapper.queryByA11yLabel(`remeasureSlider`);
140
+ const slider = wrapper.getByTestId(enum_1.RemeasureTestIds.RemeasureSlider);
133
141
  react_native_testing_library_1.fireEvent(slider, `onValueChange`, 3.2);
134
142
  utils_1.expectTextExists(wrapper, `3.2`);
135
143
  utils_1.expectTextExists(wrapper, `hours`);
@@ -138,7 +146,7 @@ describe(`RecommendationScreen`, () => {
138
146
  const props = utils_1.getRecommendationProps();
139
147
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
140
148
  utils_1.expectTextExists(wrapper, `hours`);
141
- const slider = wrapper.queryByA11yLabel(`remeasureSlider`);
149
+ const slider = wrapper.getByTestId(enum_1.RemeasureTestIds.RemeasureSlider);
142
150
  react_native_testing_library_1.fireEvent(slider, `onValueChange`, 0);
143
151
  utils_1.expectTextExists(wrapper, `OFF`);
144
152
  utils_1.expectTextNotExists(wrapper, `hours`);
@@ -153,7 +161,7 @@ describe(`RecommendationScreen`, () => {
153
161
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
154
162
  expect(props.onRecentInsulinYes).not.toBeCalled();
155
163
  utils_1.expectTextExists(wrapper, `Recommended amount of insulin`);
156
- const button = wrapper.queryByText(`Yes`);
164
+ const button = wrapper.getByTestId(enum_1.RecentInsulinTestIds.Yes);
157
165
  react_native_testing_library_1.fireEvent(button, `onPress`);
158
166
  utils_1.expectTextExists(wrapper, `Recommended amount of insulin`);
159
167
  expect(props.onRecentInsulinYes).toBeCalled();
@@ -167,7 +175,7 @@ describe(`RecommendationScreen`, () => {
167
175
  });
168
176
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
169
177
  utils_1.expectTextExists(wrapper, `Have you taken insulin within the last 4 hours?`);
170
- const button = wrapper.queryByText(`No`);
178
+ const button = wrapper.getByTestId(enum_1.RecentInsulinTestIds.No);
171
179
  react_native_testing_library_1.fireEvent(button, `onPress`);
172
180
  utils_1.expectTextNotExists(wrapper, `Have you taken insulin within the last 4 hours?`);
173
181
  utils_1.expectTextExists(wrapper, `Recommended amount of insulin`);
@@ -176,19 +184,17 @@ describe(`RecommendationScreen`, () => {
176
184
  test(`Selecting neutral will set neutral to active`, () => {
177
185
  const props = utils_1.getRecommendationProps();
178
186
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
179
- const getIcon = (name, active) => wrapper.queryByA11yLabel(`${name}_${active}`);
180
- const neutral = enum_1.MoodEnum[enum_1.MoodEnum.Neutral];
181
- expect(getIcon(neutral, false)).not.toBeNull();
182
- react_native_testing_library_1.fireEvent(getIcon(neutral, false), `onPress`);
183
- expect(getIcon(neutral, false)).toBeNull();
184
- expect(getIcon(neutral, true)).not.toBeNull();
187
+ const neutral = MoodEnum[MoodEnum.Neutral];
188
+ const icon = utils_1.getIcon(wrapper, neutral, false);
189
+ if (icon === null) {
190
+ return fail(`No icon found for queryByA11yLabel: ${neutral}_${false}`);
191
+ }
192
+ react_native_testing_library_1.fireEvent(icon, `onPress`);
193
+ expect(utils_1.getIcon(wrapper, neutral, false)).toBeNull();
194
+ expect(utils_1.getIcon(wrapper, neutral, true)).not.toBeNull();
185
195
  });
186
196
  test(`Updating carb recommendation & transfer`, () => {
187
- const result = {
188
- carbs: null,
189
- insulin: null,
190
- reminder: null,
191
- };
197
+ const result = {};
192
198
  const props = utils_1.getRecommendationProps({
193
199
  calculatorParams: {
194
200
  currentBGL: 1.1,
@@ -197,6 +203,7 @@ describe(`RecommendationScreen`, () => {
197
203
  insulinSensitivity: 5,
198
204
  targetBGL: 7,
199
205
  recentBoluses: [],
206
+ activity: null,
200
207
  },
201
208
  transferToLogbook: jest.fn((carbs, insulin, reminder) => {
202
209
  result.carbs = carbs;
@@ -209,42 +216,37 @@ describe(`RecommendationScreen`, () => {
209
216
  suggested: 1,
210
217
  };
211
218
  const insulinExpected = {
212
- entered: undefined,
219
+ entered: null,
213
220
  suggested: 0,
214
221
  };
215
222
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
223
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.EnteredCarbs)).toBe(`25`);
224
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.RecommendedCarbs)).toBe(`1`);
225
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.TotalCarbs)).toBe(`26`);
216
226
  // Expect text from carbs -> change -> Expect text updated -> Transfer -> Expect callback
217
- utils_1.expectTextExists(wrapper, `1`);
218
- const carbInput = wrapper.UNSAFE_queryByType(InvisibleNumberInput_1.default);
219
- expect(carbInput).not.toBeNull();
227
+ const carbInput = wrapper.getByTestId(enum_1.RecommendedCarbsTestIds.InvisibleCarbInput);
220
228
  // Input 3 into the carbs field
221
229
  react_native_testing_library_1.fireEvent(carbInput, `onEnd`, carbsExpected.entered);
222
- // Expect text updated
223
- utils_1.expectTextNotExists(wrapper, `1`);
224
- utils_1.expectTextExists(wrapper, `3`);
230
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.EnteredCarbs)).toBe(`25`);
231
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.RecommendedCarbs)).toBe(`3`);
232
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.TotalCarbs)).toBe(`28`);
225
233
  // To make the transfer button visible we need to press the "no" option
226
234
  utils_1.expectTextNotExists(wrapper, `Transfer to logbook`);
227
- const noButton = wrapper.queryByText(`No`);
228
- expect(noButton).not.toBeNull();
235
+ const noButton = wrapper.getByTestId(enum_1.RecentInsulinTestIds.No);
229
236
  react_native_testing_library_1.fireEvent(noButton, `onPress`);
230
237
  utils_1.expectTextExists(wrapper, `Transfer to logbook`);
231
- const transfer = wrapper.queryByA11yLabel(`transferToLogbook`);
232
- expect(transfer).not.toBeNull();
238
+ const transfer = wrapper.getByTestId(enum_1.TransferToLogbookTestIds.TransferButton);
233
239
  // Press transfer
234
240
  react_native_testing_library_1.fireEvent(transfer, `onPress`);
235
241
  expect(props.transferToLogbook).toBeCalled();
236
- expect(result.carbs.entered).toBeCloseTo(carbsExpected.entered, 1);
237
- expect(result.carbs.suggested).toBeCloseTo(carbsExpected.suggested, 1);
238
- expect(result.insulin.entered).toBe(insulinExpected.entered);
239
- expect(result.insulin.suggested).toBeCloseTo(insulinExpected.suggested, 1);
242
+ expect(result.carbs?.entered).toBeCloseTo(carbsExpected.entered, 1);
243
+ expect(result.carbs?.suggested).toBeCloseTo(carbsExpected.suggested, 1);
244
+ expect(result.insulin?.entered).toBe(insulinExpected.entered);
245
+ expect(result.insulin?.suggested).toBeCloseTo(insulinExpected.suggested, 1);
240
246
  expect(result.reminder).toBe(enum_1.RecommendationReminders.Reminder15Minutes);
241
247
  });
242
248
  test(`Removing carb recommendation still returns suggested in transfer`, () => {
243
- const result = {
244
- carbs: null,
245
- insulin: null,
246
- reminder: null,
247
- };
249
+ const result = {};
248
250
  const props = utils_1.getRecommendationProps({
249
251
  calculatorParams: {
250
252
  currentBGL: 1.1,
@@ -253,6 +255,7 @@ describe(`RecommendationScreen`, () => {
253
255
  insulinSensitivity: 5,
254
256
  targetBGL: 7,
255
257
  recentBoluses: [],
258
+ activity: null,
256
259
  },
257
260
  transferToLogbook: jest.fn((carbs, insulin, reminder) => {
258
261
  result.carbs = carbs;
@@ -265,26 +268,23 @@ describe(`RecommendationScreen`, () => {
265
268
  suggested: 1,
266
269
  };
267
270
  const insulinExpected = {
268
- entered: undefined,
271
+ entered: null,
269
272
  suggested: 0,
270
273
  };
271
274
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
272
275
  // Expect text from carbs -> change -> Expect text updated -> Transfer -> Expect callback
273
276
  utils_1.expectTextExists(wrapper, `1`);
274
- const removeButton = wrapper.getByA11yLabel(`removeRecommendedCarbs`);
275
- expect(removeButton).not.toBeNull();
277
+ const removeButton = wrapper.getByTestId(enum_1.RecommendedCarbsTestIds.RemoveRecommendation);
276
278
  // Input 3 into the carbs field
277
279
  react_native_testing_library_1.fireEvent(removeButton, `onPress`);
278
280
  // Expect text updated
279
281
  utils_1.expectTextNotExists(wrapper, `1`);
280
282
  // To make the transfer button visible we need to press the "no" option
281
283
  utils_1.expectTextNotExists(wrapper, `Transfer to logbook`);
282
- const noButton = wrapper.queryByText(`No`);
283
- expect(noButton).not.toBeNull();
284
+ const noButton = wrapper.getByTestId(enum_1.RecentInsulinTestIds.No);
284
285
  react_native_testing_library_1.fireEvent(noButton, `onPress`);
285
286
  utils_1.expectTextExists(wrapper, `Transfer to logbook`);
286
- const transfer = wrapper.queryByA11yLabel(`transferToLogbook`);
287
- expect(transfer).not.toBeNull();
287
+ const transfer = wrapper.getByTestId(enum_1.TransferToLogbookTestIds.TransferButton);
288
288
  // Press transfer
289
289
  react_native_testing_library_1.fireEvent(transfer, `onPress`);
290
290
  expect(props.transferToLogbook).toBeCalled();
@@ -320,12 +320,13 @@ describe(`RecommendationScreen`, () => {
320
320
  insulinSensitivity: 5,
321
321
  targetBGL: 7,
322
322
  recentBoluses: [],
323
+ activity: null,
323
324
  },
324
325
  userReminder: 3,
325
- injectionMethod: enum_1.InjectionMethod.Pump,
326
+ injectionMethod: InjectionMethod.Pump,
326
327
  });
327
328
  const carbsExpected = {
328
- entered: undefined,
329
+ entered: null,
329
330
  suggested: 0,
330
331
  };
331
332
  const insulinExpected = {
@@ -336,18 +337,16 @@ describe(`RecommendationScreen`, () => {
336
337
  // Expect text from insulin -> change -> Expect text updated -> Transfer -> Expect callback
337
338
  utils_1.expectTextNotExists(wrapper, `Additional`);
338
339
  utils_1.expectTextNotExists(wrapper, `Transfer to logbook`);
339
- const noButton = wrapper.queryByText(`No`);
340
- expect(noButton).not.toBeNull();
340
+ const noButton = wrapper.getByTestId(enum_1.RecentInsulinTestIds.No);
341
341
  react_native_testing_library_1.fireEvent(noButton, `onPress`);
342
342
  utils_1.expectTextExists(wrapper, `Transfer to logbook`);
343
- const insulinInput = wrapper.UNSAFE_queryByType(InvisibleNumberInput_1.default);
343
+ const insulinInput = wrapper.getByTestId(enum_1.RecommendedInsulinTestIds.InvisibleInsulinInput);
344
344
  // Input 7 into the insulin field
345
345
  react_native_testing_library_1.fireEvent(insulinInput, `onEnd`, insulinExpected.entered);
346
346
  // Expect text updated
347
347
  utils_1.expectTextNotExists(wrapper, `${insulinExpected.suggested}`);
348
348
  utils_1.expectTextExists(wrapper, `${insulinExpected.entered}`);
349
- const transfer = wrapper.queryByA11yLabel(`transferToLogbook`);
350
- expect(transfer).not.toBeNull();
349
+ const transfer = wrapper.getByTestId(enum_1.TransferToLogbookTestIds.TransferButton);
351
350
  // Press transfer
352
351
  react_native_testing_library_1.fireEvent(transfer, `onPress`);
353
352
  expect(props.transferToLogbook).toBeCalledWith(carbsExpected, insulinExpected, 3, new Date(global.Date.now()), null);
@@ -361,12 +360,13 @@ describe(`RecommendationScreen`, () => {
361
360
  insulinSensitivity: 5,
362
361
  targetBGL: 7,
363
362
  recentBoluses: [],
363
+ activity: null,
364
364
  },
365
365
  userReminder: 3,
366
- injectionMethod: enum_1.InjectionMethod.Pump,
366
+ injectionMethod: InjectionMethod.Pump,
367
367
  });
368
368
  const carbsExpected = {
369
- entered: undefined,
369
+ entered: null,
370
370
  suggested: 0,
371
371
  };
372
372
  const insulinExpected = {
@@ -376,21 +376,19 @@ describe(`RecommendationScreen`, () => {
376
376
  const invalidInsulin = 300;
377
377
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
378
378
  // Answer "No" to recent insulin
379
- const noButton = wrapper.queryByText(`No`);
380
- expect(noButton).not.toBeNull();
379
+ const noButton = wrapper.getByTestId(enum_1.RecentInsulinTestIds.No);
381
380
  react_native_testing_library_1.fireEvent(noButton, `onPress`);
382
381
  // Verify initial insulin suggestion matches expected
383
382
  utils_1.expectTextExists(wrapper, `${insulinExpected.suggested}`);
384
383
  // Type invalid value - 300 - on insulinInput
385
- const insulinInput = wrapper.UNSAFE_queryByType(InvisibleNumberInput_1.default);
384
+ const insulinInput = wrapper.getByTestId(enum_1.RecommendedInsulinTestIds.InvisibleInsulinInput);
386
385
  react_native_testing_library_1.fireEvent(insulinInput, `onEnd`, invalidInsulin);
387
386
  // After onEnd event, verify the invalid entered value doesn't exist.
388
387
  utils_1.expectTextNotExists(wrapper, `${invalidInsulin}`);
389
388
  // Value has been reset to initial suggestion
390
389
  utils_1.expectTextExists(wrapper, `${insulinExpected.suggested}`);
391
390
  // Press transfer to logbook button
392
- const transfer = wrapper.queryByA11yLabel(`transferToLogbook`);
393
- expect(transfer).not.toBeNull();
391
+ const transfer = wrapper.getByTestId(enum_1.TransferToLogbookTestIds.TransferButton);
394
392
  react_native_testing_library_1.fireEvent(transfer, `onPress`);
395
393
  // Verify the transferred data
396
394
  expect(props.transferToLogbook).toBeCalledWith(carbsExpected, insulinExpected, 3, new Date(global.Date.now()), null);
@@ -404,47 +402,47 @@ describe(`RecommendationScreen`, () => {
404
402
  insulinSensitivity: 5,
405
403
  targetBGL: 7,
406
404
  recentBoluses: [],
405
+ activity: null,
407
406
  },
408
407
  });
409
408
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
410
409
  // Expect text from insulin -> change -> Expect text updated -> Transfer -> Expect callback
411
- const noButton = wrapper.queryByText(`No`);
412
- expect(noButton).not.toBeNull();
410
+ const noButton = wrapper.getByTestId(enum_1.RecentInsulinTestIds.No);
413
411
  react_native_testing_library_1.fireEvent(noButton, `onPress`);
414
412
  utils_1.expectTextExists(wrapper, `Transfer to logbook`);
415
- const slider = wrapper.queryByA11yLabel(`remeasureSlider`);
416
- expect(slider).not.toBeNull();
413
+ const slider = wrapper.getByTestId(enum_1.RemeasureTestIds.RemeasureSlider);
417
414
  // Input 2.5 in remeasure slider
418
415
  react_native_testing_library_1.fireEvent(slider, `onValueChange`, 2.5);
419
416
  // Expect text updated
420
417
  utils_1.expectTextNotExists(wrapper, `1.5`);
421
418
  utils_1.expectTextExists(wrapper, `2.5`);
422
- const getIcon = (name, active) => wrapper.queryByA11yLabel(`${name}_${active}`);
423
- const sad = enum_1.MoodEnum[enum_1.MoodEnum.Sad];
424
- expect(getIcon(sad, false)).not.toBeNull();
425
- react_native_testing_library_1.fireEvent(getIcon(sad, false), `onPress`);
426
- const transfer = wrapper.queryByA11yLabel(`transferToLogbook`);
427
- expect(transfer).not.toBeNull();
419
+ const sad = MoodEnum[MoodEnum.Sad];
420
+ const icon = utils_1.getIcon(wrapper, sad, false);
421
+ if (icon === null) {
422
+ return fail(`Could not find icon from queryByA11yLabel: ${sad}_${false}`);
423
+ }
424
+ react_native_testing_library_1.fireEvent(icon, `onPress`);
425
+ const transfer = wrapper.getByTestId(enum_1.TransferToLogbookTestIds.TransferButton);
428
426
  // Press transfer
429
427
  react_native_testing_library_1.fireEvent(transfer, `onPress`);
430
428
  const carbsExpected = {
431
- entered: undefined,
429
+ entered: null,
432
430
  suggested: 0,
433
431
  };
434
432
  const insulinExpected = {
435
- entered: undefined,
433
+ entered: null,
436
434
  suggested: 2,
437
435
  };
438
- expect(props.transferToLogbook).toBeCalledWith(carbsExpected, insulinExpected, 2.5, new Date(global.Date.now()), enum_1.MoodEnum.Sad);
436
+ expect(props.transferToLogbook).toBeCalledWith(carbsExpected, insulinExpected, 2.5, new Date(global.Date.now()), MoodEnum.Sad);
439
437
  });
440
438
  test.each `
441
- locale | text
442
- ${enum_1.Language.da} | ${`INSULIN\nANBEFALING`}
443
- ${enum_1.Language.en} | ${`INSULIN\nRECOMMENDATION`}
444
- ${enum_1.Language.de} | ${`INSULIN\nEMPFEHLUNG`}
445
- ${enum_1.Language.es} | ${`RECOMENDACIÓN\nDE INSULINA`}
446
- ${enum_1.Language.it} | ${`PRESCRIZIONE DI\nINSULINA`}
447
- ${enum_1.Language.fr} | ${`RECOMMANDATION\nD’INSULINE`}
439
+ locale | text
440
+ ${types_1.Languages.da} | ${`INSULIN\nANBEFALING`}
441
+ ${types_1.Languages.en} | ${`INSULIN\nRECOMMENDATION`}
442
+ ${types_1.Languages.de} | ${`INSULIN\nEMPFEHLUNG`}
443
+ ${types_1.Languages.es} | ${`RECOMENDACIÓN\nDE INSULINA`}
444
+ ${types_1.Languages.it} | ${`PRESCRIZIONE DI\nINSULINA`}
445
+ ${types_1.Languages.fr} | ${`RECOMMANDATION\nD’INSULINE`}
448
446
  `(`Language props determine language shown; $locale`, ({ locale, text }) => {
449
447
  const props = utils_1.getRecommendationProps({
450
448
  language: locale,
@@ -458,14 +456,24 @@ describe(`RecommendationScreen`, () => {
458
456
  utils_1.expectTextNotExists(wrapper, `INSULIN\nRECOMMENDATION`);
459
457
  expect(props.onError).toBeCalledWith(RecommendationError_1.LanguageError());
460
458
  });
459
+ test(`Error is thrown when passing an unsupported activity settings`, () => {
460
+ const props = utils_1.getRecommendationProps({
461
+ calculatorParams: {
462
+ ...utils_1.generateDefaultCalculatorParams(),
463
+ activity: { ...utils_1.generateActivityProps(), activityIntensity: hard, activityDuration: 46 },
464
+ },
465
+ });
466
+ react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
467
+ expect(props.onError).toBeCalledWith(new Error(types_1.BolusCalculator.Enums.ActivityErrors.InvalidInterval));
468
+ });
461
469
  test.each `
462
- initialLocale | locale | initialText | text
463
- ${enum_1.Language.en} | ${enum_1.Language.da} | ${`INSULIN\nRECOMMENDATION`} | ${`INSULIN\nANBEFALING`}
464
- ${enum_1.Language.da} | ${enum_1.Language.de} | ${`INSULIN\nANBEFALING`} | ${`INSULIN\nEMPFEHLUNG`}
465
- ${enum_1.Language.de} | ${enum_1.Language.es} | ${`INSULIN\nEMPFEHLUNG`} | ${`RECOMENDACIÓN\nDE INSULINA`}
466
- ${enum_1.Language.es} | ${enum_1.Language.it} | ${`RECOMENDACIÓN\nDE INSULINA`} | ${`PRESCRIZIONE DI\nINSULINA`}
467
- ${enum_1.Language.it} | ${enum_1.Language.fr} | ${`PRESCRIZIONE DI\nINSULINA`} | ${`RECOMMANDATION\nD’INSULINE`}
468
- ${enum_1.Language.fr} | ${enum_1.Language.en} | ${`RECOMMANDATION\nD’INSULINE`} | ${`INSULIN\nRECOMMENDATION`}
470
+ initialLocale | locale | initialText | text
471
+ ${types_1.Languages.en} | ${types_1.Languages.da} | ${`INSULIN\nRECOMMENDATION`} | ${`INSULIN\nANBEFALING`}
472
+ ${types_1.Languages.da} | ${types_1.Languages.de} | ${`INSULIN\nANBEFALING`} | ${`INSULIN\nEMPFEHLUNG`}
473
+ ${types_1.Languages.de} | ${types_1.Languages.es} | ${`INSULIN\nEMPFEHLUNG`} | ${`RECOMENDACIÓN\nDE INSULINA`}
474
+ ${types_1.Languages.es} | ${types_1.Languages.it} | ${`RECOMENDACIÓN\nDE INSULINA`} | ${`PRESCRIZIONE DI\nINSULINA`}
475
+ ${types_1.Languages.it} | ${types_1.Languages.fr} | ${`PRESCRIZIONE DI\nINSULINA`} | ${`RECOMMANDATION\nD’INSULINE`}
476
+ ${types_1.Languages.fr} | ${types_1.Languages.en} | ${`RECOMMANDATION\nD’INSULINE`} | ${`INSULIN\nRECOMMENDATION`}
469
477
  `(`Changing language changes header text; initial-language:$initialLocale to changed-language:$locale`, ({ initialLocale, locale, initialText, text }) => {
470
478
  const props = utils_1.getRecommendationProps({ language: initialLocale });
471
479
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
@@ -489,7 +497,8 @@ describe(`RecommendationScreen`, () => {
489
497
  calculatorParams: {
490
498
  ...utils_1.getRecommendationProps().calculatorParams,
491
499
  currentBGL: 8,
492
- recentBoluses: null,
500
+ targetBGL: 8,
501
+ recentBoluses: [],
493
502
  },
494
503
  });
495
504
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
@@ -501,11 +510,13 @@ describe(`RecommendationScreen`, () => {
501
510
  ...utils_1.getRecommendationProps({
502
511
  calculatorParams: {
503
512
  ...utils_1.getRecommendationProps().calculatorParams,
513
+ // @ts-ignore
504
514
  currentBGL: null,
505
515
  },
506
516
  }),
507
517
  currentBKL: null,
508
518
  };
519
+ // @ts-ignore
509
520
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
510
521
  utils_1.expectTextExists(wrapper, /2\./);
511
522
  expect(wrapper.queryAllByText(`-.-`)).toHaveLength(2);
@@ -547,16 +558,17 @@ describe(`RecommendationScreen`, () => {
547
558
  });
548
559
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
549
560
  utils_1.expectTextExists(wrapper, `INSULIN\nRECOMMENDATION`);
550
- utils_1.expectTextExists(wrapper, `0`);
561
+ const shownInsulin = utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedInsulinTestIds.ShownInsulinText);
562
+ expect(shownInsulin).toBe(`0`);
551
563
  });
552
564
  test.each `
553
- intensity | translation
554
- ${RecommendationCalculator_1.ActivityIntensity.Light} | ${`Let`}
555
- ${RecommendationCalculator_1.ActivityIntensity.Moderate} | ${`Moderat`}
556
- ${RecommendationCalculator_1.ActivityIntensity.Hard} | ${`Hård`}
565
+ intensity | translation
566
+ ${light} | ${`Let`}
567
+ ${moderate} | ${`Moderat`}
568
+ ${hard} | ${`Hård`}
557
569
  `(`Activity screen is displayed and intensity: $intensity can be translated`, ({ intensity, translation }) => {
558
570
  const props = utils_1.getRecommendationProps({
559
- activityDisplayProps: { activityType: enum_1.ActivityEnum.Run },
571
+ activityDisplayProps: { activityType: ActivityEnum.Run, activityTitle: null },
560
572
  calculatorParams: {
561
573
  ...utils_1.getRecommendationProps().calculatorParams,
562
574
  activity: {
@@ -566,12 +578,13 @@ describe(`RecommendationScreen`, () => {
566
578
  },
567
579
  });
568
580
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
569
- utils_1.expectTextExists(wrapper, intensity);
581
+ const englishText = Translations_1.ActivityIntensityTranslations[intensity]();
582
+ utils_1.expectTextExists(wrapper, englishText);
570
583
  utils_1.expectTextNotExists(wrapper, translation);
571
- i18nUtils_1.i18n.activate(enum_1.Language.da);
584
+ i18nUtils_1.i18n.activate(types_1.Languages.da);
572
585
  wrapper.rerender(<RecommendationScreen_1.default {...props}/>);
573
586
  utils_1.expectTextExists(wrapper, translation);
574
- utils_1.expectTextNotExists(wrapper, intensity);
587
+ utils_1.expectTextNotExists(wrapper, englishText);
575
588
  });
576
589
  test(`Show limitation page at recalculation`, () => {
577
590
  const carbRecommendationAnswer = jest.fn();
@@ -583,26 +596,32 @@ describe(`RecommendationScreen`, () => {
583
596
  insulinSensitivity: 0.3,
584
597
  targetBGL: 8.3,
585
598
  recentBoluses: [],
599
+ activity: null,
586
600
  },
587
601
  userReminder: 5,
588
602
  carbRecommendationAnswer,
589
603
  });
604
+ // Render the screen, expecting a carb recommendation modal.
590
605
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
591
606
  utils_1.expectTextExists(wrapper, `We recommend eating an additional:`);
592
- const yesButton = wrapper.queryByA11yLabel(`yesButtonModal`);
607
+ // Get the yes button from the modal
608
+ const yesButton = wrapper.getByTestId(enum_1.RecommendationModalTestIds.AcceptCarbs);
593
609
  react_native_testing_library_1.fireEvent(yesButton, `onPress`);
594
610
  expect(carbRecommendationAnswer).toBeCalledWith(true);
595
611
  utils_1.expectTextExists(wrapper, `Additional`);
596
- utils_1.expectTextExists(wrapper, `1`);
597
- const carbInput = wrapper.UNSAFE_queryByType(InvisibleNumberInput_1.default);
598
- expect(carbInput).not.toBeNull();
612
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.EnteredCarbs)).toBe(`1`);
613
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.RecommendedCarbs)).toBe(`3`);
614
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.TotalCarbs)).toBe(`4`);
615
+ const carbInput = wrapper.getByTestId(enum_1.RecommendedCarbsTestIds.InvisibleCarbInput);
616
+ const manualCarbInput = 299;
599
617
  // Input 299 into the carbs field
600
- react_native_testing_library_1.fireEvent(carbInput, `onEnd`, 299);
601
- utils_1.expectTextExists(wrapper, `299`);
618
+ react_native_testing_library_1.fireEvent(carbInput, `onEnd`, manualCarbInput);
619
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.EnteredCarbs)).toBe(`1`);
620
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.RecommendedCarbs)).toBe(`299`);
621
+ expect(utils_1.queryTextFromComponent(wrapper, enum_1.RecommendedCarbsTestIds.TotalCarbs)).toBe(`300`);
602
622
  // Expect text from limitation message after recalculation
603
623
  utils_1.expectTextExists(wrapper, `${AttentionMessages_1.Messages.RecommendationWasLimited()}`);
604
- const nextButton = wrapper.queryByA11yLabel(`nextButtonModal`);
605
- expect(nextButton).not.toBeNull();
624
+ const nextButton = wrapper.getByTestId(enum_1.LimitationMessageTestIds.OkButton);
606
625
  react_native_testing_library_1.fireEvent(nextButton, `onPress`);
607
626
  utils_1.expectTextNotExists(wrapper, `${AttentionMessages_1.Messages.RecommendationWasLimited()}`);
608
627
  });
@@ -618,12 +637,13 @@ describe(`Recommendation Screen - RecommendationModal related tests`, () => {
618
637
  insulinSensitivity: 5,
619
638
  targetBGL: 7,
620
639
  recentBoluses: [],
640
+ activity: null,
621
641
  },
622
642
  userReminder: 5,
623
643
  carbRecommendationAnswer,
624
644
  });
625
645
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
626
- const noButton = wrapper.queryByA11yLabel(`noButtonModal`);
646
+ const noButton = wrapper.getByTestId(enum_1.RecommendationModalTestIds.DeclineCarbs);
627
647
  react_native_testing_library_1.fireEvent(noButton, `onPress`);
628
648
  expect(carbRecommendationAnswer).toBeCalledWith(false);
629
649
  utils_1.expectTextExists(wrapper, `Food`);
@@ -639,13 +659,14 @@ describe(`Recommendation Screen - RecommendationModal related tests`, () => {
639
659
  insulinSensitivity: 5,
640
660
  targetBGL: 7,
641
661
  recentBoluses: [],
662
+ activity: null,
642
663
  },
643
664
  userReminder: 5,
644
665
  carbRecommendationAnswer,
645
666
  });
646
667
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
647
668
  utils_1.expectTextExists(wrapper, `We recommend eating an additional:`);
648
- const yesButton = wrapper.queryByA11yLabel(`yesButtonModal`);
669
+ const yesButton = wrapper.getByTestId(enum_1.RecommendationModalTestIds.AcceptCarbs);
649
670
  react_native_testing_library_1.fireEvent(yesButton, `onPress`);
650
671
  expect(carbRecommendationAnswer).toBeCalledWith(true);
651
672
  utils_1.expectTextExists(wrapper, `Food`);
@@ -666,9 +687,9 @@ describe(`Recommendation Screen - RecommendationModal related tests`, () => {
666
687
  userReminder: 5,
667
688
  });
668
689
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
669
- const nextButton = wrapper.queryByA11yLabel(`nextButtonModal`);
690
+ const nextButton = wrapper.getByTestId(enum_1.LimitationMessageTestIds.OkButton);
670
691
  react_native_testing_library_1.fireEvent(nextButton, `onPress`);
671
- const yesButton = wrapper.queryByA11yLabel(`okayButtonModal`);
692
+ const yesButton = wrapper.getByTestId(enum_1.RecommendationModalTestIds.OkButton);
672
693
  react_native_testing_library_1.fireEvent(yesButton, `onPress`);
673
694
  utils_1.expectTextExists(wrapper, `Food`);
674
695
  utils_1.expectTextNotExists(wrapper, `Additional`);
@@ -681,10 +702,10 @@ describe(`Recommendation Screen - TwoOptionModal related tests`, () => {
681
702
  const props = utils_1.getRecommendationProps();
682
703
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
683
704
  //press exit button
684
- const exitButton = wrapper.queryByA11yLabel(`exitButton`);
705
+ const exitButton = wrapper.getByTestId(enum_1.HeaderTestIds.ExitCalculation);
685
706
  react_native_testing_library_1.fireEvent(exitButton, `onPress`);
686
707
  expect(props.showBolusBar).toBeCalledWith(false);
687
- const saveToLogbookModalButton = wrapper.queryByA11yLabel(`firstOptionButton`);
708
+ const saveToLogbookModalButton = wrapper.getByTestId(enum_1.TwoOptionModalTestIds.FirstOption);
688
709
  react_native_testing_library_1.fireEvent(saveToLogbookModalButton, `onPress`);
689
710
  expect(props.transferToLogbook).toBeCalled();
690
711
  utils_1.expectTextNotExists(wrapper, `Save to logbook`);
@@ -694,10 +715,10 @@ describe(`Recommendation Screen - TwoOptionModal related tests`, () => {
694
715
  const props = utils_1.getRecommendationProps();
695
716
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
696
717
  //press exit button
697
- const exitButton = wrapper.queryByA11yLabel(`exitButton`);
718
+ const exitButton = wrapper.getByTestId(enum_1.HeaderTestIds.ExitCalculation);
698
719
  react_native_testing_library_1.fireEvent(exitButton, `onPress`);
699
720
  expect(props.showBolusBar).toBeCalledWith(false);
700
- const closeCalculation = wrapper.queryByA11yLabel(`secondOptionButton`);
721
+ const closeCalculation = wrapper.getByTestId(enum_1.TwoOptionModalTestIds.SecondOption);
701
722
  react_native_testing_library_1.fireEvent(closeCalculation, `onPress`);
702
723
  expect(props.closeCalculationCallback).toBeCalled();
703
724
  utils_1.expectTextNotExists(wrapper, `Save to logbook`);
@@ -708,7 +729,7 @@ describe(`Recommendation Screen - TwoOptionModal related tests`, () => {
708
729
  calculatorParams: { ...utils_1.generateDefaultCalculatorParams(), recentBoluses: [] },
709
730
  });
710
731
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
711
- const exitButton = wrapper.queryByA11yLabel(`exitButton`);
732
+ const exitButton = wrapper.getByTestId(enum_1.HeaderTestIds.ExitCalculation);
712
733
  react_native_testing_library_1.fireEvent(exitButton, `onPress`);
713
734
  utils_1.expectTextExists(wrapper, `Have you taken insulin within the last 4 hours?`);
714
735
  expect(props.showBolusBar).not.toBeCalled();
@@ -717,22 +738,22 @@ describe(`Recommendation Screen - TwoOptionModal related tests`, () => {
717
738
  test(`Test triggering on/off the ExitModal`, async () => {
718
739
  const props = utils_1.getRecommendationProps();
719
740
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
720
- const exitButton = wrapper.queryByA11yLabel(`exitButton`);
741
+ const exitButton = wrapper.getByTestId(enum_1.HeaderTestIds.ExitCalculation);
721
742
  react_native_testing_library_1.fireEvent(exitButton, `onPress`);
722
743
  expect(props.showBolusBar).toBeCalledWith(false);
723
744
  utils_1.expectTextExists(wrapper, `Save to logbook`);
724
745
  utils_1.expectTextExists(wrapper, `Close calculation`);
725
- const modalExitIcon = wrapper.queryByA11yLabel(`ModalExitIcon`);
746
+ const modalExitIcon = wrapper.getByTestId(enum_1.TwoOptionModalTestIds.ExitButton);
726
747
  react_native_testing_library_1.fireEvent(modalExitIcon, `onPress`);
727
748
  expect(props.showBolusBar).toBeCalledWith(true);
728
749
  utils_1.expectTextNotExists(wrapper, `Save to logbook`);
729
750
  utils_1.expectTextNotExists(wrapper, `Close calculation`);
730
751
  });
731
752
  test(`Can translate ExitModal option`, () => {
732
- const props = utils_1.getRecommendationProps({ language: enum_1.Language.da });
753
+ const props = utils_1.getRecommendationProps({ language: types_1.Languages.da });
733
754
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
734
755
  //press exit button
735
- const exitButton = wrapper.queryByA11yLabel(`exitButton`);
756
+ const exitButton = wrapper.getByTestId(enum_1.HeaderTestIds.ExitCalculation);
736
757
  react_native_testing_library_1.fireEvent(exitButton, `onPress`);
737
758
  expect(props.showBolusBar).toBeCalledWith(false);
738
759
  utils_1.expectTextExists(wrapper, `Luk beregning`);
@@ -746,17 +767,17 @@ describe(`Recommendation Screen - TwoOptionModal related tests`, () => {
746
767
  expect(props.onError).not.toBeCalled();
747
768
  jest.runAllTimers();
748
769
  expect(props.onError).not.toBeCalled();
749
- const modalExitIcon = wrapper.queryByA11yLabel(`ModalExitIcon`);
770
+ const modalExitIcon = wrapper.queryByTestId(enum_1.TwoOptionModalTestIds.ExitButton);
750
771
  expect(modalExitIcon).toBeNull();
751
772
  expect(props.showBolusBar).toBeCalledWith(false);
752
773
  utils_1.expectTextExists(wrapper, `More than 15 minutes has passed since this calculation was started.`);
753
774
  utils_1.expectTextExists(wrapper, `Yes, save to logbook`);
754
775
  utils_1.expectTextExists(wrapper, `No, return to dashboard`);
755
- i18nUtils_1.i18n.activate(enum_1.Language.da);
776
+ i18nUtils_1.i18n.activate(types_1.Languages.da);
756
777
  wrapper.rerender(<RecommendationScreen_1.default {...props}/>);
757
778
  jest.runAllTimers();
758
779
  utils_1.expectTextExists(wrapper, `Der er gået mere end 15 minutter siden udregningen blev startet.`);
759
- const saveToLogbook = wrapper.queryByA11yLabel(`firstOptionButton`);
780
+ const saveToLogbook = wrapper.getByTestId(enum_1.TwoOptionModalTestIds.FirstOption);
760
781
  react_native_testing_library_1.fireEvent(saveToLogbook, `onPress`);
761
782
  expect(props.transferToLogbook).toBeCalled();
762
783
  });
@@ -766,13 +787,13 @@ describe(`Recommendation Screen - TwoOptionModal related tests`, () => {
766
787
  expect(props.onError).not.toBeCalled();
767
788
  jest.runAllTimers();
768
789
  expect(props.onError).not.toBeCalled();
769
- const modalExitIcon = wrapper.queryByA11yLabel(`ModalExitIcon`);
790
+ const modalExitIcon = wrapper.queryByTestId(enum_1.TwoOptionModalTestIds.ExitButton);
770
791
  expect(modalExitIcon).toBeNull();
771
792
  expect(props.showBolusBar).toBeCalledWith(false);
772
793
  utils_1.expectTextExists(wrapper, `More than 15 minutes has passed since this calculation was started.`);
773
794
  utils_1.expectTextExists(wrapper, `Yes, save to logbook`);
774
795
  utils_1.expectTextExists(wrapper, `No, return to dashboard`);
775
- const returnToDashboard = wrapper.queryByA11yLabel(`secondOptionButton`);
796
+ const returnToDashboard = wrapper.getByTestId(enum_1.TwoOptionModalTestIds.SecondOption);
776
797
  react_native_testing_library_1.fireEvent(returnToDashboard, `onPress`);
777
798
  expect(props.closeCalculationCallback).toBeCalled();
778
799
  });
@@ -784,13 +805,13 @@ describe(`Recommendation Screen - TwoOptionModal related tests`, () => {
784
805
  expect(props.onError).not.toBeCalled();
785
806
  jest.runAllTimers();
786
807
  expect(props.onError).not.toBeCalled();
787
- const modalExitIcon = wrapper.queryByA11yLabel(`ModalExitIcon`);
808
+ const modalExitIcon = wrapper.queryByTestId(enum_1.TwoOptionModalTestIds.ExitButton);
788
809
  expect(modalExitIcon).toBeNull();
789
810
  expect(props.showBolusBar).toBeCalledWith(false);
790
811
  utils_1.expectTextExists(wrapper, `More than 15 minutes has passed since this calculation was started.`);
791
812
  utils_1.expectTextExists(wrapper, `Start new calculation`);
792
813
  utils_1.expectTextExists(wrapper, `Return to dashboard`);
793
- const returnToDashboard = wrapper.queryByA11yLabel(`secondOptionButton`);
814
+ const returnToDashboard = wrapper.getByTestId(enum_1.TwoOptionModalTestIds.SecondOption);
794
815
  react_native_testing_library_1.fireEvent(returnToDashboard, `onPress`);
795
816
  expect(props.closeCalculationCallback).toBeCalled();
796
817
  utils_1.expectTextNotExists(wrapper, `Start new calculation`);
@@ -804,17 +825,17 @@ describe(`Recommendation Screen - TwoOptionModal related tests`, () => {
804
825
  expect(props.onError).not.toBeCalled();
805
826
  jest.runAllTimers();
806
827
  expect(props.onError).not.toBeCalled();
807
- const modalExitIcon = wrapper.queryByA11yLabel(`ModalExitIcon`);
828
+ const modalExitIcon = wrapper.queryByTestId(enum_1.TwoOptionModalTestIds.ExitButton);
808
829
  expect(modalExitIcon).toBeNull();
809
830
  expect(props.showBolusBar).toBeCalledWith(false);
810
831
  utils_1.expectTextExists(wrapper, `More than 15 minutes has passed since this calculation was started.`);
811
832
  utils_1.expectTextExists(wrapper, `Start new calculation`);
812
833
  utils_1.expectTextExists(wrapper, `Return to dashboard`);
813
- i18nUtils_1.i18n.activate(enum_1.Language.da);
834
+ i18nUtils_1.i18n.activate(types_1.Languages.da);
814
835
  wrapper.rerender(<RecommendationScreen_1.default {...props}/>);
815
836
  jest.runAllTimers();
816
837
  utils_1.expectTextExists(wrapper, `Der er gået mere end 15 minutter siden udregningen blev startet.`);
817
- const returnToDashboard = wrapper.queryByA11yLabel(`firstOptionButton`);
838
+ const returnToDashboard = wrapper.getByTestId(enum_1.TwoOptionModalTestIds.FirstOption);
818
839
  react_native_testing_library_1.fireEvent(returnToDashboard, `onPress`);
819
840
  expect(props.restartCalculation).toBeCalled();
820
841
  utils_1.expectTextNotExists(wrapper, `Der er gået mere end 15 minutter siden udregningen blev startet.`);
@@ -833,19 +854,22 @@ describe(`Recommendation Screen - TwoOptionModal related tests`, () => {
833
854
  removeEventListener: jest.fn(),
834
855
  }));
835
856
  const wrapper = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
836
- appStateListener(`active`);
857
+ // @ts-ignore
858
+ appStateListener?.(`active`);
837
859
  // Run twice to test else path
838
- global.Date.now = () => new Date().getTime() + enum_1.Milliseconds.Minute * 14;
839
- appStateListener(`active`);
860
+ global.Date.now = () => new Date().getTime() + types_1.Milliseconds.Minute * 14;
861
+ // @ts-ignore
862
+ appStateListener?.(`active`);
840
863
  wrapper.rerender(<RecommendationScreen_1.default {...props}/>);
841
864
  expect(props.showBolusBar).not.toBeCalledWith(false);
842
865
  utils_1.expectTextNotExists(wrapper, `No, return to dashboard`);
843
- global.Date.now = () => new Date().getTime() + enum_1.Milliseconds.Minute * 15;
866
+ global.Date.now = () => new Date().getTime() + types_1.Milliseconds.Minute * 15;
867
+ // @ts-ignore
844
868
  appStateListener(`active`);
845
869
  wrapper.rerender(<RecommendationScreen_1.default {...props}/>);
846
870
  expect(props.showBolusBar).toBeCalledWith(false);
847
871
  utils_1.expectTextExists(wrapper, `No, return to dashboard`);
848
- const closeModalButton = wrapper.queryByText(`No, return to dashboard`);
872
+ const closeModalButton = wrapper.getByTestId(enum_1.TwoOptionModalTestIds.SecondOption);
849
873
  react_native_testing_library_1.fireEvent(closeModalButton, `secondOption`);
850
874
  wrapper.rerender(<RecommendationScreen_1.default {...props}/>);
851
875
  utils_1.expectTextNotExists(wrapper, `No, return to dashboard`);
@@ -865,6 +889,7 @@ describe(`Recommendation Screen - TwoOptionModal related tests`, () => {
865
889
  removeEventListener: jest.fn(),
866
890
  }));
867
891
  const rendered = react_native_testing_library_1.render(<RecommendationScreen_1.default {...props}/>);
892
+ // @ts-ignore
868
893
  appStateListener(`NotAnAppStateStatus`);
869
894
  rendered.rerender(<RecommendationScreen_1.default {...props}/>);
870
895
  expect(props.showBolusBar).not.toBeCalled();