@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,465 +0,0 @@
1
- import { Activity, BloodGlucoseUnit, BloodKetonesUnit, BolusCalculator, Languages, Milliseconds, UserSettings, } from "@hedia/types";
2
- import { FOUR_HOURS_SECONDS } from "../utils/Constants";
3
- import * as Errors from "../utils/RecommendationError";
4
- import * as Validations from "../utils/Validations";
5
- import { generateDefaultActivitySettings, generateDefaultLogbook } from "./utils";
6
- const ActivityEnum = Activity.Enums.ActivityEnum;
7
- const ActivityIntensity = Activity.Enums.ActivityIntensity;
8
- const InjectionMethod = UserSettings.Enums.InjectionMethod;
9
- const { light, moderate, hard } = ActivityIntensity;
10
- describe(`Test validations functions for the recommendation props`, () => {
11
- test.each `
12
- validInjectionMethod
13
- ${InjectionMethod.PenHalf}
14
- ${InjectionMethod.PenWhole}
15
- ${InjectionMethod.Pump}
16
- `(`Validation checking on treatment types $validInjectionMethod `, ({ validInjectionMethod }) => {
17
- expect(() => Validations.checkInjectionMethod(validInjectionMethod)).not.toThrowError(Errors.InjectionMethodError());
18
- });
19
- test.each `
20
- invalidInjectionMethod
21
- ${`Pen`}
22
- ${`Injection`}
23
- ${`Hedia`}
24
- `(`Validation checking on treatment types $invalidInjectionMethod throws error`, (invalidInjectionMethod) => {
25
- expect(() => Validations.checkInjectionMethod(invalidInjectionMethod)).toThrowError(Errors.InjectionMethodError());
26
- });
27
- test.each `
28
- validUnit
29
- ${BloodGlucoseUnit.MG_DL}
30
- ${BloodGlucoseUnit.MMOL_L}
31
- `(`Validation checking on blood glucose unit types $validUnit`, ({ validUnit }) => {
32
- expect(() => Validations.checkBGLUnit(validUnit)).not.toThrowError(Errors.BloodGlucoseUnitError());
33
- });
34
- test.each `
35
- invalidUnit
36
- ${`Kilogram`}
37
- ${`Litre`}
38
- ${`MMOL`}
39
- `(`Validation checking on invalid blood glucose unit types $invalidUnit throws error`, ({ invalidUnit }) => {
40
- expect(() => Validations.checkBGLUnit(invalidUnit)).toThrowError(Errors.BloodGlucoseUnitError());
41
- });
42
- test.each `
43
- validKetoneProps
44
- ${{ bloodKetoneUnit: BloodKetonesUnit.MG_DL, currentBKL: 0 }}
45
- ${{ bloodKetoneUnit: BloodKetonesUnit.MMOL_L, currentBKL: null }}
46
- ${{ bloodKetoneUnit: null, currentBKL: null }}
47
- `(`Validation checking on valid blood ketones props $validKetoneProps`, ({ validKetoneProps }) => {
48
- const { bloodKetoneUnit, currentBKL } = validKetoneProps;
49
- expect(() => Validations.checkBKProps(bloodKetoneUnit, currentBKL)).not.toThrowError(Errors.BloodKetonePropsError());
50
- });
51
- test.each `
52
- invalidKetoneProps
53
- ${{ bloodKetoneUnit: null, currentBKL: 0 }}
54
- ${{ bloodKetoneUnit: null, currentBKL: 8 }}
55
- `(`Validation checking on invalid blood ketones props $invalidKetoneProps`, ({ invalidKetoneProps }) => {
56
- const { bloodKetoneUnit, currentBKL } = invalidKetoneProps;
57
- expect(() => Validations.checkBKProps(bloodKetoneUnit, currentBKL)).toThrowError(Errors.BloodKetonePropsError());
58
- });
59
- test.each `
60
- validUnit
61
- ${BloodKetonesUnit.MG_DL}
62
- ${BloodKetonesUnit.MMOL_L}
63
- ${null}
64
- `(`Validation checking on blood ketones unit types $validUnit`, ({ validUnit }) => {
65
- expect(() => Validations.checkBKLUnit(validUnit)).not.toThrowError(Errors.BloodKetoneUnitError());
66
- });
67
- test.each `
68
- invalidUnit
69
- ${`Kilogram`}
70
- ${`Litre`}
71
- ${`MMOL`}
72
- `(`Validation checking on invalid blood ketones unit types $invalidUnit throws error`, ({ invalidUnit }) => {
73
- expect(() => Validations.checkBKLUnit(invalidUnit)).toThrowError(Errors.BloodKetoneUnitError());
74
- });
75
- test.each `
76
- validLanguage
77
- ${Languages.da}
78
- ${Languages.en}
79
- ${Languages.de}
80
- ${Languages.es}
81
- ${Languages.it}
82
- ${Languages.fr}
83
- `(`Validation checking on supported languages types $validLanguage`, ({ validLanguage }) => {
84
- expect(() => Validations.checkLanguage(validLanguage)).not.toThrowError(Errors.LanguageError());
85
- });
86
- test.each `
87
- invalidLanguage
88
- ${`Polish`}
89
- ${`Danish`}
90
- ${`Dansk`}
91
- ${`Deutsch`}
92
- `(`Validation checking on supported languages types $invalidLanguage throws error`, (invalidLanguage) => {
93
- expect(() => Validations.checkLanguage(invalidLanguage)).toThrowError(Errors.LanguageError());
94
- });
95
- it.each `
96
- validLatestLogbookFrom6Hours
97
- ${generateDefaultLogbook()}
98
- ${null}
99
- ${{ ...generateDefaultLogbook(), blood_glucose_millimolar: null }}
100
- `(`Validation checking on the latest logbook from the latest 6 hours with a valid logbook`, ({ validLatestLogbookFrom6Hours }) => {
101
- expect(() => Validations.checkLatestLogbook6Hours(validLatestLogbookFrom6Hours)).not.toThrowError(Errors.LatestLogbook6HoursBGLError());
102
- });
103
- it.each `
104
- invalidLatestLogbookFrom6Hours
105
- ${undefined}
106
- ${{}}
107
- ${[]}
108
- ${{ ...generateDefaultLogbook(), blood_glucose_millimolar: 1 }}
109
- ${{ ...generateDefaultLogbook(), blood_glucose_millimolar: 33.4 }}
110
- `(`Validation checking on the latest logbook from the latest 6 hours with an invalid logbook `, ({ invalidLatestLogbookFrom6Hours }) => {
111
- expect(() => Validations.checkLatestLogbook6Hours(invalidLatestLogbookFrom6Hours)).toThrowError(Errors.LatestLogbook6HoursBGLError());
112
- });
113
- test.each `
114
- validActivityType
115
- ${ActivityEnum.Walk}
116
- ${ActivityEnum.Swim}
117
- ${ActivityEnum.Run}
118
- ${ActivityEnum.Other}
119
- ${ActivityEnum.Cycling}
120
- `(`Validation checking on activity types $validActivityType `, ({ validActivityType }) => {
121
- expect(() => Validations.checkActivityType(validActivityType)).not.toThrowError(Errors.ActivityTypeError());
122
- });
123
- test.each `
124
- invalidActivityType
125
- ${`Dance`}
126
- ${`Walking`}
127
- ${`Swimming`}
128
- ${`Running`}
129
- ${`Cycle`}
130
- `(`Validation checking on activity types $invalidActivityType throws error`, (invalidActivityType) => {
131
- expect(() => Validations.checkActivityType(invalidActivityType)).toThrowError(Errors.ActivityTypeError());
132
- });
133
- test.each `
134
- validUserReminder
135
- ${0}
136
- ${6}
137
- ${3}
138
- ${4.5}
139
- `(`Validation checking on the user reminder value $validUserReminder`, ({ validUserReminder: validUserReminder }) => {
140
- expect(() => Validations.checkUserReminder(validUserReminder)).not.toThrowError(Errors.UserReminderError());
141
- });
142
- test.each `
143
- invalidUserReminder
144
- ${-1}
145
- ${null}
146
- ${undefined}
147
- ${7}
148
- `(`Validation checking on the user reminder value $invalidUserReminder throws error`, ({ invalidUserReminder }) => {
149
- expect(() => Validations.checkUserReminder(invalidUserReminder)).toThrowError(Errors.UserReminderError());
150
- });
151
- });
152
- describe(`Test validations for the calculator parameters`, () => {
153
- test.each `
154
- validDuration
155
- ${1}
156
- ${60}
157
- ${34}
158
- ${5.555}
159
- `(`Validation checking on activity $validDuration `, ({ validDuration }) => {
160
- expect(() => Validations.checkActivityDuration(validDuration)).not.toThrowError(Errors.ActivityDurationError());
161
- });
162
- test.each `
163
- invalidDuration
164
- ${0}
165
- ${61}
166
- ${undefined}
167
- ${null}
168
- `(`Validation checking on activity $invalidDuration throws error`, (invalidDuration) => {
169
- expect(() => Validations.checkActivityDuration(invalidDuration)).toThrowError(Errors.ActivityDurationError());
170
- });
171
- test.each `
172
- validIntensity
173
- ${hard}
174
- ${light}
175
- ${moderate}
176
- `(`Validation checking on activity $validIntensity`, ({ validIntensity }) => {
177
- expect(() => Validations.checkActivityIntensity(validIntensity)).not.toThrowError(Errors.ActivityIntensityError());
178
- });
179
- /**
180
- * Gets an string and returns the string with the first letter capitalized
181
- * @param text to capitalize
182
- */
183
- const capitalizeFirstLetter = (text) => {
184
- return `${text.charAt(0).toUpperCase()}${text.slice(1)}`;
185
- };
186
- test.each `
187
- invalidIntensity
188
- ${`bingo`}
189
- ${`easy`}
190
- ${undefined}
191
- ${null}
192
- ${`Low`}
193
- ${capitalizeFirstLetter(moderate)}
194
- `(`Validation checking on activity $invalidIntensity throws error`, ({ invalidIntensity }) => {
195
- expect(() => Validations.checkActivityIntensity(invalidIntensity)).toThrowError(Errors.ActivityIntensityError());
196
- });
197
- const validActivitySettings1 = generateDefaultActivitySettings();
198
- const validActivitySettings2 = {
199
- ...validActivitySettings1,
200
- hard: { fromZero: 1, fromThirty: 0.99, fromFortysix: null },
201
- };
202
- const validActivitySettings3 = {
203
- ...validActivitySettings1,
204
- hard: { fromZero: 0, fromThirty: 0, fromFortysix: 0 },
205
- };
206
- const invalidActivitySettings1 = {
207
- ...validActivitySettings1,
208
- // @ts-ignore Purposefully invalid settings
209
- hard: { fromZero: 0, fromThirty: null, fromFortysix: null },
210
- };
211
- const invalidActivitySettings2 = {
212
- ...validActivitySettings1,
213
- // @ts-ignore Purposefully invalid settings
214
- light: { fromZero: undefined, fromThirty: 0.99, fromFortysix: 0.25 },
215
- };
216
- const invalidActivitySettings3 = {
217
- ...validActivitySettings1,
218
- hard: { fromZero: 1, fromThirty: 0.99, fromFortysix: 1.1 },
219
- };
220
- const validActivity1 = {
221
- activityDate: new Date(Date.now() - Milliseconds.Hour * 5 - Milliseconds.Minute * 9.9),
222
- activityDuration: 60,
223
- activityIntensity: moderate,
224
- activitySettings: validActivitySettings1,
225
- };
226
- const validActivity2 = {
227
- ...validActivity1,
228
- activityDate: new Date(Date.now() - Milliseconds.Hour * 4.5 - Milliseconds.Minute * 9.9),
229
- activityDuration: 30,
230
- };
231
- const invalidActivity1 = {
232
- ...validActivity1,
233
- activityDate: new Date(Date.now() - Milliseconds.Hour * 4.5 - Milliseconds.Minute * 10),
234
- activityDuration: 30,
235
- };
236
- const invalidActivity2 = {
237
- ...validActivity1,
238
- activityDate: new Date(Date.now() - Milliseconds.Hour * 4.25 - Milliseconds.Minute * 10),
239
- activityDuration: 15,
240
- };
241
- test(`Can call checkActivity with a valid activity`, () => {
242
- expect(() => Validations.checkActivity(validActivity1)).not.toThrow();
243
- });
244
- test(`Can call checkActivity with an invalid activity and throw error`, () => {
245
- expect(() => Validations.checkActivity(invalidActivity1)).toThrow();
246
- });
247
- test.each `
248
- validActivity
249
- ${validActivity1}
250
- ${validActivity2}
251
- `(`Validation checking on activity date $validActivity.activityDate`, ({ validActivity }) => {
252
- expect(() => Validations.checkActivityDate(validActivity)).not.toThrowError(Errors.ActivityDateError());
253
- });
254
- test.each `
255
- invalidActivity
256
- ${invalidActivity1}
257
- ${invalidActivity2}
258
- `(`Validation checking on invalid activity $invalidActivity.activityDate throws error`, ({ invalidActivity }) => {
259
- expect(() => Validations.checkActivityDate(invalidActivity)).toThrowError(Errors.ActivityDateError());
260
- });
261
- test.each `
262
- validActivitySettings
263
- ${validActivitySettings1}
264
- ${validActivitySettings2}
265
- ${validActivitySettings3}
266
- `(`Validation checking on validActivitySettings`, ({ validActivitySettings }) => {
267
- expect(() => Validations.checkActivitySettings(validActivitySettings)).not.toThrowError(Errors.ActivitySettingsError());
268
- });
269
- test.each `
270
- invalidActivitySettings
271
- ${invalidActivitySettings1}
272
- ${invalidActivitySettings2}
273
- ${invalidActivitySettings3}
274
- `(`Validation checking on invalidActivitySettings throws error`, ({ invalidActivitySettings }) => {
275
- expect(() => Validations.checkActivitySettings(invalidActivitySettings)).toThrowError(Errors.ActivitySettingsError());
276
- });
277
- test.each `
278
- validActivityTargetBGL
279
- ${5}
280
- ${13.9}
281
- ${8}
282
- ${10}
283
- `(`Validation checking on $validActivityTargetBGL `, ({ validActivityTargetBGL }) => {
284
- expect(() => Validations.checkActivityTargetBGL(validActivityTargetBGL)).not.toThrowError(Errors.ActivityTargetBGLError());
285
- });
286
- test.each `
287
- invalidActivityTargetBGL
288
- ${4.99}
289
- ${null}
290
- ${undefined}
291
- ${13.91}
292
- `(`Validation checking on $invalidActivityTargetBGL throws error`, ({ invalidActivityTargetBGL }) => {
293
- expect(() => Validations.checkActivityTargetBGL(invalidActivityTargetBGL)).toThrowError(Errors.ActivityTargetBGLError());
294
- });
295
- test.each `
296
- validTargetBGL
297
- ${5}
298
- ${13.9}
299
- ${8}
300
- ${10}
301
- `(`Validation checking on $validTargetBGL `, ({ validTargetBGL }) => {
302
- expect(() => Validations.checkTargetBGL(validTargetBGL)).not.toThrowError(Errors.TargetBGLError());
303
- });
304
- test.each `
305
- invalidTargetBGL
306
- ${4.99}
307
- ${null}
308
- ${undefined}
309
- ${13.91}
310
- `(`Validation checking on $invalidTargetBGL throws error `, ({ invalidTargetBGL }) => {
311
- expect(() => Validations.checkTargetBGL(invalidTargetBGL)).toThrowError(Errors.TargetBGLError());
312
- });
313
- test.each `
314
- validCarbohydrates
315
- ${0}
316
- ${100}
317
- ${300}
318
- ${10}
319
- `(`Validation checking on provided $validCarbohydrates `, ({ validCarbohydrates }) => {
320
- expect(() => Validations.checkCarbohydrates(validCarbohydrates)).not.toThrowError(Errors.CarbohydrateLimitError());
321
- });
322
- test.each `
323
- invalidCarbohydrates
324
- ${-2}
325
- ${null}
326
- ${undefined}
327
- ${301}
328
- `(`Validation checking on provided $invalidCarbohydrates throws error`, ({ invalidCarbohydrates }) => {
329
- expect(() => Validations.checkCarbohydrates(invalidCarbohydrates)).toThrowError(Errors.CarbohydrateLimitError());
330
- });
331
- test.each `
332
- validCurrentBGL
333
- ${1.1}
334
- ${33.3}
335
- ${null}
336
- ${10}
337
- `(`Validation checking on $validCurrentBGL `, ({ validCurrentBGL }) => {
338
- expect(() => Validations.checkCurrentBGL(validCurrentBGL)).not.toThrowError(Errors.CurrentBGLError());
339
- });
340
- test.each `
341
- invalidCurrentBGL
342
- ${1}
343
- ${33.31}
344
- ${undefined}
345
- ${0}
346
- `(`Validation checking on $invalidCurrentBGL throws error`, ({ invalidCurrentBGL }) => {
347
- expect(() => Validations.checkCurrentBGL(invalidCurrentBGL)).toThrowError(Errors.CurrentBGLError());
348
- });
349
- test.each `
350
- validRatio
351
- ${1}
352
- ${50}
353
- ${25}
354
- ${49.99}
355
- `(`Validation checking on IC $validRatio `, ({ validRatio }) => {
356
- expect(() => Validations.checkInsulinToCarbRatio(validRatio)).not.toThrowError(Errors.InsulinToCarbsRatioError());
357
- });
358
- test.each `
359
- invalidRatio
360
- ${0}
361
- ${null}
362
- ${undefined}
363
- ${51}
364
- `(`Validation checking on IC $invalidRatio throws error`, ({ invalidRatio }) => {
365
- expect(() => Validations.checkInsulinToCarbRatio(invalidRatio)).toThrowError(Errors.InsulinToCarbsRatioError());
366
- });
367
- test.each `
368
- validInsulinSensitivity
369
- ${0.3}
370
- ${10}
371
- ${5}
372
- ${4.44}
373
- `(`Validation checking on $validInsulinSensitivity `, ({ validInsulinSensitivity }) => {
374
- expect(() => Validations.checkInsulinSensitivity(validInsulinSensitivity)).not.toThrowError(Errors.InsulinSensitivityError());
375
- });
376
- test.each `
377
- invalidInsulinSensitivity
378
- ${0}
379
- ${null}
380
- ${undefined}
381
- ${10.01}
382
- `(`Validation checking on $invalidInsulinSensitivity throws error`, (invalidInsulinSensitivity) => {
383
- expect(() => Validations.checkInsulinSensitivity(invalidInsulinSensitivity)).toThrowError(Errors.InsulinSensitivityError());
384
- });
385
- const validBolus1 = {
386
- insulinDose: 0,
387
- secondsPassed: 1,
388
- };
389
- const validBolus2 = {
390
- insulinDose: 50,
391
- secondsPassed: FOUR_HOURS_SECONDS,
392
- };
393
- const invalidBolus1 = {
394
- // @ts-ignore Forcefully incorrect.
395
- insulinDose: null,
396
- // @ts-ignore Forcefully incorrect.
397
- secondsPassed: null,
398
- };
399
- const invalidBolus2 = {
400
- // @ts-ignore Forcefully incorrect.
401
- insulinDose: undefined,
402
- secondsPassed: FOUR_HOURS_SECONDS + 1,
403
- };
404
- const invalidBolus3 = {
405
- insulinDose: BolusCalculator.Constants.SAFETY_INSULIN_LIMIT + 1,
406
- secondsPassed: -1,
407
- };
408
- test.each `
409
- validRecentBoluses
410
- ${[validBolus1, validBolus2]}
411
- ${[validBolus2]}
412
- ${[]}
413
- `(`Validation checking on Recent Boluses - insulin dose`, ({ validRecentBoluses }) => {
414
- expect(() => Validations.checkRecentBolusesInsulinDose(validRecentBoluses)).not.toThrow();
415
- });
416
- test.each `
417
- invalidRecentBoluses
418
- ${[validBolus1, invalidBolus1]}
419
- ${[invalidBolus2]}
420
- ${[validBolus2, invalidBolus3]}
421
- `(`Validation checking on Recent Boluses insulin - dose throws error`, ({ invalidRecentBoluses }) => {
422
- expect(() => Validations.checkRecentBolusesInsulinDose(invalidRecentBoluses)).toThrowError(Errors.BolusInsulinDoseError());
423
- });
424
- test.each `
425
- validRecentBoluses
426
- ${[validBolus1, validBolus2]}
427
- ${[validBolus2]}
428
- ${[]}
429
- `(`Validation checking on Recent Boluses seconds passed`, ({ validRecentBoluses }) => {
430
- expect(() => Validations.checkRecentBolusesSecondsPassed(validRecentBoluses)).not.toThrowError(Errors.BolusInsulinSecondsPassedError());
431
- });
432
- test.each `
433
- invalidRecentBoluses
434
- ${[validBolus1, invalidBolus1]}
435
- ${[validBolus2, invalidBolus2]}
436
- ${[validBolus2, invalidBolus3]}
437
- `(`Validation checking on Recent Boluses seconds passed throws error`, ({ invalidRecentBoluses }) => {
438
- expect(() => Validations.checkRecentBolusesSecondsPassed(invalidRecentBoluses)).toThrowError(Errors.BolusInsulinSecondsPassedError());
439
- });
440
- test.each `
441
- invalidRecentBoluses
442
- ${null}
443
- ${undefined}
444
- `(`Validation checking on Recent Boluses: null and undefined throws error`, ({ invalidRecentBoluses }) => {
445
- expect(() => Validations.checkRecentBolus(invalidRecentBoluses)).toThrowError(Errors.RecentBolusError());
446
- });
447
- test.each `
448
- validCurrentBKL
449
- ${0}
450
- ${8}
451
- ${null}
452
- ${5}
453
- `(`Validation checking on $validCurrentBKL `, ({ validCurrentBKL }) => {
454
- expect(() => Validations.checkBloodKetoneLevel(validCurrentBKL)).not.toThrowError(Errors.CurrentBKLError());
455
- });
456
- test.each `
457
- invalidCurrentBKL
458
- ${-0.1}
459
- ${8.01}
460
- ${undefined}
461
- ${NaN}
462
- `(`Validation checking on $invalidCurrentBKL throws error`, ({ invalidCurrentBKL }) => {
463
- expect(() => Validations.checkBloodKetoneLevel(invalidCurrentBKL)).toThrowError(Errors.CurrentBKLError());
464
- });
465
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,86 +0,0 @@
1
- import { Activity, Languages } from "@hedia/types";
2
- import { I18nProvider } from "@lingui/react";
3
- import React from "react";
4
- import { cleanup, render } from "react-native-testing-library";
5
- import { default as ActivityComponent } from "../../components/activity/Activity";
6
- import { i18n } from "../../locale/i18nUtils";
7
- import { Testing } from "../../types/enum";
8
- import { ActivityIntensityTranslations } from "../../utils/Translations";
9
- import { expectTextExists, generateActivityProps, getRecommendationProps, i18nProvided, queryTextFromComponent, } from "../utils";
10
- const ActivityIntensity = Activity.Enums.ActivityIntensity;
11
- const { light, moderate, hard } = ActivityIntensity;
12
- describe(`Activity - Component`, () => {
13
- afterEach(cleanup);
14
- beforeEach(() => {
15
- i18n.activate(Languages.en);
16
- });
17
- test.each `
18
- activityIntensity
19
- ${light}
20
- ${moderate}
21
- ${hard}
22
- `(`Renders $activityIntensity`, ({ activityIntensity }) => {
23
- const { activityDisplayProps } = getRecommendationProps();
24
- const activity = generateActivityProps();
25
- const wrapper = render(i18nProvided(<ActivityComponent activity={{ ...activity, activityIntensity }} activityType={activityDisplayProps?.activityType ?? null} activityTitle={activityDisplayProps?.activityTitle ?? null} activityReduction={0}/>));
26
- expectTextExists(wrapper, `Activity`);
27
- expectTextExists(wrapper, `30`);
28
- expectTextExists(wrapper, `min`);
29
- expectTextExists(wrapper, `Based on the selected activity your insulin recommendation is reduced by:`);
30
- expectTextExists(wrapper, ActivityIntensityTranslations[activityIntensity]());
31
- });
32
- test.each `
33
- reduction
34
- ${0}
35
- ${0.25}
36
- ${0.33}
37
- ${0.5}
38
- ${0.8}
39
- `(`Renders activity reduction from decimal: $reduction to percentage`, ({ reduction }) => {
40
- const { activityDisplayProps } = getRecommendationProps();
41
- const activity = generateActivityProps();
42
- const wrapper = render(i18nProvided(<ActivityComponent activity={activity} activityType={activityDisplayProps?.activityType ?? null} activityReduction={reduction} activityTitle={activityDisplayProps?.activityTitle ?? null}/>));
43
- expectTextExists(wrapper, `${reduction * 100}%`);
44
- });
45
- test(`Renders activity reduction as 0 when null is passed`, () => {
46
- const { activityDisplayProps } = getRecommendationProps();
47
- const activity = generateActivityProps();
48
- const reduction = null;
49
- const wrapper = render(i18nProvided(<ActivityComponent activity={activity} activityType={activityDisplayProps?.activityType ?? null} activityReduction={reduction} activityTitle={activityDisplayProps?.activityTitle ?? null}/>));
50
- const text = queryTextFromComponent(wrapper, Testing.Id.ActivityTestIds.ActivityReduction);
51
- expect(text).toBe(`0%`);
52
- });
53
- test(`Can render activity title`, () => {
54
- const { activityDisplayProps } = getRecommendationProps();
55
- const activity = generateActivityProps();
56
- const wrapper = render(i18nProvided(<ActivityComponent activity={{ ...activity }} activityType={activityDisplayProps?.activityType ?? null} activityTitle={activityDisplayProps?.activityTitle ?? null} activityReduction={0}/>));
57
- expectTextExists(wrapper, activityDisplayProps?.activityTitle);
58
- });
59
- test.each `
60
- language | locale | message
61
- ${`English`} | ${Languages.en} | ${`Activity`}
62
- ${`Danish`} | ${Languages.da} | ${`Aktivitet`}
63
- ${`German`} | ${Languages.de} | ${`Aktivität`}
64
- ${`Spanish`} | ${Languages.es} | ${`Actividad`}
65
- ${`Italian`} | ${Languages.it} | ${`Attività fisica`}
66
- ${`French`} | ${Languages.fr} | ${`Activité`}
67
- `(`Can render in $language`, ({ message, locale }) => {
68
- const { activityDisplayProps } = getRecommendationProps();
69
- const activity = generateActivityProps();
70
- i18n.activate(locale);
71
- const wrapper = render(<I18nProvider language={locale} i18n={i18n}>
72
- <ActivityComponent activity={activity} activityType={activityDisplayProps?.activityType ?? null} activityTitle={activityDisplayProps?.activityTitle ?? null} activityReduction={0}/>
73
- </I18nProvider>);
74
- expectTextExists(wrapper, message);
75
- });
76
- test(`ActivityIcon defaults to other if activityType is null`, () => {
77
- const { activityDisplayProps } = getRecommendationProps();
78
- const activity = generateActivityProps();
79
- const wrapper = render(i18nProvided(<ActivityComponent activity={{ ...activity }} activityType={null} activityTitle={activityDisplayProps?.activityTitle ?? null} activityReduction={0}/>));
80
- expectTextExists(wrapper, activityDisplayProps?.activityTitle);
81
- const existingLabel = `${Activity.Enums.ActivityEnum[Activity.Enums.ActivityEnum.Other]}_activity`;
82
- const nonExistingLabel = `${Activity.Enums.ActivityEnum[Activity.Enums.ActivityEnum.Run]}_activity`;
83
- expect(wrapper.queryByA11yLabel(existingLabel)).not.toBeNull();
84
- expect(wrapper.queryByA11yLabel(nonExistingLabel)).toBeNull();
85
- });
86
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,70 +0,0 @@
1
- import { Languages, Logbook } from "@hedia/types";
2
- import React from "react";
3
- import { cleanup, fireEvent, render } from "react-native-testing-library";
4
- import Emotion from "../../components/mood/Emotion";
5
- import { i18n } from "../../locale/i18nUtils";
6
- import { expectTextExists, getIcon, i18nProvided } from "../utils";
7
- const MoodEnum = Logbook.Enums.MoodEnum;
8
- describe(`Emotion - Component`, () => {
9
- afterEach(cleanup);
10
- beforeEach(() => {
11
- i18n.activate(Languages.en);
12
- });
13
- test(`Can mount component in `, () => {
14
- const mockSelected = jest.fn();
15
- const wrapper = render(i18nProvided(<Emotion moodSelected={mockSelected} currentMood={null}/>));
16
- expectTextExists(wrapper, `How are you feeling?`);
17
- });
18
- test.each `
19
- mood | moodName | preselected | preselectedName
20
- ${MoodEnum.Happy} | ${MoodEnum[MoodEnum.Happy]} | ${MoodEnum.Sad} | ${MoodEnum[MoodEnum.Sad]}
21
- ${MoodEnum.SemiHappy} | ${MoodEnum[MoodEnum.SemiHappy]} | ${MoodEnum.Happy} | ${MoodEnum[MoodEnum.Happy]}
22
- ${MoodEnum.Neutral} | ${MoodEnum[MoodEnum.Neutral]} | ${MoodEnum.SemiHappy} | ${MoodEnum[MoodEnum.SemiHappy]}
23
- ${MoodEnum.SemiSad} | ${MoodEnum[MoodEnum.SemiSad]} | ${MoodEnum.Neutral} | ${MoodEnum[MoodEnum.Neutral]}
24
- ${MoodEnum.Sad} | ${MoodEnum[MoodEnum.Sad]} | ${MoodEnum.SemiSad} | ${MoodEnum[MoodEnum.SemiSad]}
25
- `(`Pressing on $moodName icon deselects others`, ({ mood, moodName, preselected, preselectedName, }) => {
26
- let mockedStateMood = preselected;
27
- const mockSelected = jest.fn((selectedMood) => (mockedStateMood = selectedMood));
28
- const wrapper = render(<Emotion moodSelected={mockSelected} currentMood={mockedStateMood}/>);
29
- const preIcon = getIcon(wrapper, preselectedName, true);
30
- if (preIcon === null) {
31
- return fail(`No icon found for queryByA11yLabel: ${preselectedName}_${true}`);
32
- }
33
- const newIcon = getIcon(wrapper, moodName, false);
34
- if (newIcon === null) {
35
- return fail(`No icon found for queryByA11yLabel: ${moodName}_${false}`);
36
- }
37
- // Select a different mood
38
- fireEvent(newIcon, `onPress`);
39
- expect(mockedStateMood).toBe(mood);
40
- wrapper.update(<Emotion moodSelected={mockSelected} currentMood={mockedStateMood}/>);
41
- const moodValues = Object.values(MoodEnum).filter((value) => typeof value === `string`);
42
- moodValues.forEach((value) => {
43
- if (moodName === value) {
44
- expect(getIcon(wrapper, value, true)).not.toBeNull();
45
- expect(getIcon(wrapper, value, false)).toBeNull();
46
- }
47
- else {
48
- expect(getIcon(wrapper, value, false)).not.toBeNull();
49
- expect(getIcon(wrapper, value, true)).toBeNull();
50
- }
51
- });
52
- });
53
- test(`Deselecting selected icon by pressing it again`, () => {
54
- let mockedStateMood = MoodEnum.Happy;
55
- const mockSelected = jest.fn((newMood) => (mockedStateMood = newMood));
56
- const mood = MoodEnum[mockedStateMood];
57
- const wrapper = render(<Emotion moodSelected={mockSelected} currentMood={mockedStateMood}/>);
58
- // current mood has already been selected: Happy
59
- expect(getIcon(wrapper, mood, true)).not.toBeNull();
60
- expect(getIcon(wrapper, mood, false)).toBeNull();
61
- const icon = getIcon(wrapper, mood, true);
62
- if (icon === null) {
63
- return fail(`No icon found for queryByA11yLabel: ${mood}_${true}`);
64
- }
65
- fireEvent(icon, `onPress`);
66
- wrapper.update(<Emotion moodSelected={mockSelected} currentMood={mockedStateMood}/>);
67
- expect(getIcon(wrapper, mood, true)).toBeNull();
68
- expect(getIcon(wrapper, mood, false)).not.toBeNull();
69
- });
70
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,36 +0,0 @@
1
- import React from "react";
2
- import { cleanup, fireEvent, render } from "react-native-testing-library";
3
- import { expectTextExists, getRecommendationProps } from "../utils";
4
- import { I18nProvider } from "@lingui/react";
5
- import Header from "../../components/Header";
6
- import { Languages } from "@hedia/types";
7
- import { i18n } from "../../locale/i18nUtils";
8
- import { Testing } from "../../types/enum";
9
- describe(`Header Component`, () => {
10
- afterEach(cleanup);
11
- test(`Exit button calls exitCallback`, () => {
12
- const props = getRecommendationProps();
13
- const { getByTestId } = render(<Header exitCallback={props.exitCallback}/>);
14
- expect(props.exitCallback).not.toBeCalled();
15
- fireEvent.press(getByTestId(Testing.Id.HeaderTestIds.ExitCalculation));
16
- expect(props.exitCallback).toBeCalled();
17
- });
18
- test.each `
19
- language | locale | header
20
- ${`English`} | ${Languages.en} | ${`INSULIN\nRECOMMENDATION`}
21
- ${`Danish`} | ${Languages.da} | ${`INSULIN\nANBEFALING`}
22
- ${`German`} | ${Languages.de} | ${`INSULIN\nEMPFEHLUNG`}
23
- ${`Spanish`} | ${Languages.es} | ${`RECOMENDACIÓN\nDE INSULINA`}
24
- ${`Italian`} | ${Languages.it} | ${`PRESCRIZIONE DI\nINSULINA`}
25
- ${`French`} | ${Languages.fr} | ${`RECOMMANDATION\nD’INSULINE`}
26
- `(`Header is translated to $language`, ({ header, locale }) => {
27
- const props = getRecommendationProps({
28
- language: locale,
29
- });
30
- i18n.activate(locale);
31
- const wrapper = render(<I18nProvider language={locale} i18n={i18n}>
32
- <Header exitCallback={props.exitCallback}/>
33
- </I18nProvider>);
34
- expectTextExists(wrapper, header);
35
- });
36
- });
@@ -1 +0,0 @@
1
- export {};