@eohjsc/react-native-smart-city 0.2.20 → 0.2.26

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 (340) hide show
  1. package/README.md +1 -1
  2. package/assets/images/Add.svg +5 -0
  3. package/assets/images/AddLocationMaps/Point.svg +3 -0
  4. package/assets/images/CheckCircle.svg +4 -0
  5. package/assets/images/Close.svg +3 -0
  6. package/assets/images/HowToStart.svg +14 -0
  7. package/assets/images/OneTap.svg +14 -0
  8. package/assets/images/OneTap@1x.svg +14 -0
  9. package/assets/images/Rearrange.svg +3 -0
  10. package/assets/images/Schedule.svg +39 -0
  11. package/assets/images/WeatherChange.svg +49 -0
  12. package/package.json +12 -2
  13. package/src/Images/Common/ActiveButton.png +0 -0
  14. package/src/Images/Common/ActiveButton@2x.png +0 -0
  15. package/src/Images/Common/ActiveButton@3x.png +0 -0
  16. package/src/Images/Common/arrow-back.png +0 -0
  17. package/src/Images/Common/checked@2x.png +0 -0
  18. package/src/Images/Common/checked@3x.png +0 -0
  19. package/src/Images/Common/file.png +0 -0
  20. package/src/Images/Common/fullscreen.png +0 -0
  21. package/src/Images/Common/refresh.png +0 -0
  22. package/src/commons/ActionGroup/NumberUpDownActionTemplate.js +1 -1
  23. package/src/commons/ActionGroup/OnOffTemplate/index.js +4 -4
  24. package/src/commons/ActionGroup/OptionsDropdownActionTemplate.js +7 -4
  25. package/src/commons/ActionGroup/StatesGridActionTemplate.js +12 -3
  26. package/src/commons/ActionGroup/ThreeButtonTemplate.js +13 -6
  27. package/src/commons/ActionGroup/ThreeButtonTemplateStyle.js +1 -1
  28. package/src/commons/ActionGroup/TimerActionTemplate.js +158 -33
  29. package/src/commons/ActionGroup/__test__/OnOffButtonTemplate.test.js +8 -13
  30. package/src/commons/ActionGroup/__test__/OnOffTemplate.test.js +3 -3
  31. package/src/commons/ActionGroup/__test__/OptionsDropdownTemplate.test.js +26 -45
  32. package/src/commons/ActionGroup/__test__/ThreeButtonTemplate.test.js +11 -5
  33. package/src/commons/ActionGroup/__test__/TimerActionTemplate.test.js +14 -8
  34. package/src/commons/ActionGroup/__test__/TimerActionTemplateWithutConfigValue.test.js +17 -23
  35. package/src/commons/ActionGroup/__test__/__snapshots__/ThreeButtonTemplate.test.js.snap +241 -223
  36. package/src/commons/ActionGroup/__test__/index.test.js +39 -107
  37. package/src/commons/ActionGroup/hooks/useDropdownAction.js +2 -1
  38. package/src/commons/ActionTemplate/ActionTemplateStyles.js +14 -0
  39. package/src/commons/ActionTemplate/OnOffButtonAction.js +40 -0
  40. package/src/commons/ActionTemplate/OnOffButtonActionStyles.js +11 -0
  41. package/src/commons/ActionTemplate/OneButtonAction.js +26 -0
  42. package/src/commons/ActionTemplate/OneButtonActionStyles.js +11 -0
  43. package/src/commons/ActionTemplate/ThreeButtonAction.js +55 -0
  44. package/src/commons/ActionTemplate/ThreeButtonActionStyles.js +11 -0
  45. package/src/commons/ActionTemplate/__test__/OnOffButtonAction.test.js +34 -0
  46. package/src/commons/ActionTemplate/__test__/OneButtonAction.test.js +33 -0
  47. package/src/commons/ActionTemplate/__test__/ThreeButtonAction.test.js +35 -0
  48. package/src/commons/ActionTemplate/__test__/index.test.js +71 -0
  49. package/src/commons/ActionTemplate/index.js +69 -0
  50. package/src/commons/Automate/ItemAddNewScriptAction.js +30 -0
  51. package/src/commons/Automate/ItemAddNewScriptActionStyles.js +38 -0
  52. package/src/commons/Automate/ItemAutomate.js +33 -0
  53. package/src/commons/Automate/ItemAutomateStyles.js +33 -0
  54. package/src/commons/Automate/ItemScriptAction.js +45 -0
  55. package/src/commons/Automate/ItemScriptActionStyles.js +42 -0
  56. package/src/commons/BottomScrollPicker/index.js +58 -0
  57. package/src/commons/BottomScrollPicker/styles.js +13 -0
  58. package/src/commons/BottomSheet/index.js +36 -0
  59. package/src/commons/BottomSheet/styles.js +37 -0
  60. package/src/commons/Button/index.js +6 -1
  61. package/src/commons/CameraDevice/index.js +2 -1
  62. package/src/commons/ChartLoading/__test__/ChartLoading.test.js +9 -7
  63. package/src/commons/ChartLoading/index.js +2 -1
  64. package/src/commons/DateTimeRangeChange/index.js +2 -1
  65. package/src/commons/Device/ConnectedViewHeader.js +3 -1
  66. package/src/commons/Device/DeviceAlertStatus.js +5 -2
  67. package/src/commons/Device/DisconnectedView.js +34 -26
  68. package/src/commons/Device/Emergency/EmergencyButton.js +2 -1
  69. package/src/commons/Device/Emergency/EmergencyDetail.js +2 -1
  70. package/src/commons/Device/Emergency/__test__/EmergencyButton.test.js +14 -6
  71. package/src/commons/Device/Emergency/__test__/EmergencyDetail.test.js +10 -2
  72. package/src/commons/Device/FlatListItems.js +3 -2
  73. package/src/commons/Device/FooterInfo.js +2 -1
  74. package/src/commons/Device/HistoryChart.js +2 -1
  75. package/src/commons/Device/ItemAddNew/index.js +6 -1
  76. package/src/commons/Device/SensorConnectedStatus.js +2 -1
  77. package/src/commons/Device/WindDirection/Compass/Compass.test.js +19 -11
  78. package/src/commons/Device/WindDirection/Compass/index.js +1 -1
  79. package/src/commons/Device/WindSpeed/LinearChart/__test__/LinearChart.test.js +9 -3
  80. package/src/commons/Device/WindSpeed/LinearChart/__test__/__snapshots__/LinearChart.test.js.snap +0 -81
  81. package/src/commons/Device/WindSpeed/LinearChart/index.js +2 -1
  82. package/src/commons/Device/__test__/ConnectedViewHeader.test.js +16 -8
  83. package/src/commons/Device/__test__/DeviceAlertStatus.test.js +13 -5
  84. package/src/commons/Device/__test__/DisconnectedView.test.js +13 -5
  85. package/src/commons/Device/__test__/FlatListItems.test.js +9 -1
  86. package/src/commons/Device/__test__/FooterInfo.test.js +13 -4
  87. package/src/commons/Device/__test__/SensorConnectedStatus.test.js +9 -1
  88. package/src/commons/Device/__test__/__snapshots__/DisconnectedView.test.js.snap +20 -20
  89. package/src/commons/DisplayChecking/__test__/DisplayChecking.test.js +28 -0
  90. package/src/commons/EmergencyButton/AlertSendConfirm.js +2 -1
  91. package/src/commons/EmergencyButton/AlertSent.js +3 -2
  92. package/src/commons/Explore/CityItem/index.js +2 -1
  93. package/src/commons/Explore/HeaderExplore/index.js +2 -1
  94. package/src/commons/Explore/HeaderLabel/index.js +2 -1
  95. package/src/commons/Explore/SearchBox/__test__/SearchBox.test.js +9 -2
  96. package/src/commons/Explore/SearchBox/index.js +2 -1
  97. package/src/commons/Explore/__test__/CityItem.test.js +13 -15
  98. package/src/commons/Explore/__test__/HeaderLabel.test.js +15 -9
  99. package/src/commons/Header/HeaderCustom.js +17 -1
  100. package/src/commons/Header/Styles/HeaderCustomStyles.js +2 -2
  101. package/src/commons/Header/__test__/HeaderCT.test.js +12 -4
  102. package/src/commons/HeaderAni/index.js +6 -3
  103. package/src/commons/IconComponent/index.js +18 -3
  104. package/src/commons/ImagePicker/__test__/ImagePicker.test.js +19 -13
  105. package/src/commons/ImagePicker/index.js +3 -1
  106. package/src/commons/MediaPlayer/index.js +2 -1
  107. package/src/commons/MediaPlayerDetail/__test__/MediaPlayerDetail.test.js +14 -8
  108. package/src/commons/MediaPlayerDetail/index.js +4 -1
  109. package/src/commons/MenuActionAddnew/__test__/MenuActionAddNew.test.js +11 -20
  110. package/src/commons/MenuActionAddnew/index.js +2 -1
  111. package/src/commons/Modal/ModalBottom.js +51 -0
  112. package/src/commons/Modal/ModalFullVideo.js +2 -1
  113. package/src/commons/Modal/Styles/ModalBottomStyles.js +35 -0
  114. package/src/commons/Modal/index.js +2 -1
  115. package/src/commons/NavBar/index.js +2 -2
  116. package/src/commons/SelectActionCard/SelectActionStyles.js +16 -0
  117. package/src/commons/SelectActionCard/index.js +30 -0
  118. package/src/commons/Sharing/DevicePermissionsCheckbox.js +2 -1
  119. package/src/commons/Sharing/MemberList.js +3 -1
  120. package/src/commons/Sharing/RowMember.js +3 -2
  121. package/src/commons/Sharing/StationDevicePermissions.js +2 -1
  122. package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +15 -9
  123. package/src/commons/Sharing/__test__/MemberList.test.js +17 -25
  124. package/src/commons/Sharing/__test__/StationDevicePermission.test.js +17 -12
  125. package/src/commons/Sharing/__test__/WrapHeaderScrollable.test.js +0 -9
  126. package/src/commons/SubUnit/OneTap/ItemOneTap.js +97 -0
  127. package/src/commons/SubUnit/OneTap/ItemOneTapStyles.js +41 -0
  128. package/src/commons/SubUnit/OneTap/OneTapStyles.js +36 -0
  129. package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +149 -0
  130. package/src/commons/SubUnit/OneTap/index.js +39 -0
  131. package/src/commons/SubUnit/ShortDetail.js +11 -6
  132. package/src/commons/SubUnit/__test__/ShortDetail.test.js +14 -6
  133. package/src/commons/Today/__test__/Today.test.js +9 -1
  134. package/src/commons/Today/__test__/__snapshots__/Today.test.js.snap +1 -1
  135. package/src/commons/Today/index.js +2 -1
  136. package/src/commons/Unit/SharedUnit.js +2 -1
  137. package/src/commons/UnitSummary/AirQuality/SegmentedRoundDisplay/index.js +1 -2
  138. package/src/commons/UnitSummary/AirQuality/__test__/index.test.js +16 -17
  139. package/src/commons/UnitSummary/AirQuality/index.js +5 -120
  140. package/src/commons/UnitSummary/AirQuality/styles.js +112 -0
  141. package/src/commons/UnitSummary/TotalPowerConsumption/index.js +2 -1
  142. package/src/commons/UnitSummary/__test__/TotalPowerConsumption.test.js +15 -9
  143. package/src/commons/WheelDateTimePicker/Picker.js +57 -0
  144. package/src/commons/WheelDateTimePicker/index.js +160 -0
  145. package/src/commons/WheelDateTimePicker/styles.js +21 -0
  146. package/src/configs/API.js +25 -0
  147. package/src/configs/Colors.js +1 -0
  148. package/src/configs/Constants.js +46 -0
  149. package/src/configs/Images.js +1 -0
  150. package/src/configs/SCConfig.js +7 -0
  151. package/src/context/SCContext.tsx +7 -37
  152. package/src/context/actionType.ts +11 -0
  153. package/src/context/mockStore.ts +49 -0
  154. package/src/context/reducer.ts +23 -0
  155. package/src/hooks/Common/__test__/useTranslations.test.js +23 -0
  156. package/src/hooks/Common/index.js +2 -0
  157. package/src/hooks/Common/useGetIdUser.js +9 -0
  158. package/src/hooks/Common/useTranslations.ts +34 -0
  159. package/src/iot/Monitor.js +2 -1
  160. package/src/iot/RemoteControl/Bluetooth.js +2 -6
  161. package/src/iot/RemoteControl/GoogleHome.js +1 -1
  162. package/src/iot/RemoteControl/Internet.js +1 -1
  163. package/src/iot/RemoteControl/LG.js +57 -15
  164. package/src/iot/RemoteControl/__test__/Bluetooth.test.js +3 -5
  165. package/src/iot/RemoteControl/__test__/GoogleHome.test.js +3 -3
  166. package/src/iot/RemoteControl/__test__/Internet.test.js +1 -8
  167. package/src/iot/RemoteControl/__test__/LgThinq.test.js +7 -10
  168. package/src/iot/RemoteControl/index.js +1 -1
  169. package/src/iot/states.js +1 -0
  170. package/src/navigations/SharedStack.js +2 -1
  171. package/src/navigations/UnitStack.js +62 -1
  172. package/src/screens/AQIGuide/__test__/AQIGuide.test.js +9 -1
  173. package/src/screens/AQIGuide/index.js +2 -2
  174. package/src/screens/ActivityLog/__test__/index.test.js +14 -39
  175. package/src/screens/ActivityLog/index.js +2 -1
  176. package/src/screens/AddCommon/SelectSubUnit.js +5 -4
  177. package/src/screens/AddCommon/SelectUnit.js +3 -2
  178. package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +61 -0
  179. package/src/screens/AddCommon/__test__/SelectUnit.test.js +18 -10
  180. package/src/screens/AddLocationMaps/index.js +2 -1
  181. package/src/screens/AddNewAction/Device/DeviceStyles.js +43 -0
  182. package/src/screens/AddNewAction/Device/__test__/index.test.js +42 -0
  183. package/src/screens/AddNewAction/Device/index.js +33 -0
  184. package/src/screens/AddNewAction/SelectAction.js +152 -0
  185. package/src/screens/AddNewAction/SelectDevice.js +120 -0
  186. package/src/screens/AddNewAction/Styles/SelectActionStyles.js +24 -0
  187. package/src/screens/AddNewAction/Styles/SelectDeviceStyles.js +36 -0
  188. package/src/screens/AddNewAction/__test__/SelectAction.test.js +172 -0
  189. package/src/screens/AddNewAction/__test__/SelectDevice.test.js +191 -0
  190. package/src/screens/AddNewAutoSmart/__test__/AddNewAutoSmart.test.js +55 -0
  191. package/src/screens/AddNewAutoSmart/index.js +85 -0
  192. package/src/screens/AddNewAutoSmart/styles/AddNewAutoSmartStyles.js +36 -0
  193. package/src/screens/AddNewDevice/ConnectDevices.js +2 -1
  194. package/src/screens/AddNewDevice/ConnectingDevices.js +2 -1
  195. package/src/screens/AddNewDevice/__test__/AddNewDevice.test.js +29 -13
  196. package/src/screens/AddNewDevice/__test__/ConnectDevices.test.js +19 -7
  197. package/src/screens/AddNewDevice/__test__/ConnectingDevices.test.js +16 -6
  198. package/src/screens/AddNewDevice/hooks/useStateAlertRename.js +2 -1
  199. package/src/screens/AddNewDevice/index.js +2 -1
  200. package/src/screens/AddNewGateway/ConnectedGateway.js +2 -1
  201. package/src/screens/AddNewGateway/ConnectingGateway.js +99 -24
  202. package/src/screens/AddNewGateway/ConnectingGatewayStyles.js +92 -0
  203. package/src/screens/AddNewGateway/SetupGatewayWifi.js +3 -2
  204. package/src/screens/AddNewGateway/__test__/AddNewGateway.test.js +35 -72
  205. package/src/screens/AddNewGateway/__test__/ConnectedGateway.test.js +14 -4
  206. package/src/screens/AddNewGateway/__test__/ConnectingGateway.test.js +20 -10
  207. package/src/screens/AddNewGateway/hooks/useStateAlertRename.js +2 -1
  208. package/src/screens/AddNewGateway/index.js +2 -1
  209. package/src/screens/AddNewOneTap/AddNewOneTapStyles.js +43 -0
  210. package/src/screens/AddNewOneTap/__test__/AddNewOneTap.test.js +129 -0
  211. package/src/screens/AddNewOneTap/index.js +80 -0
  212. package/src/screens/AddNewScriptAction/AddNewScriptActionStyles.js +28 -0
  213. package/src/screens/AddNewScriptAction/index.js +100 -0
  214. package/src/screens/AllCamera/index.js +2 -1
  215. package/src/screens/Device/HeaderDevice/styles.js +2 -2
  216. package/src/screens/Device/__test__/detail.test.js +26 -18
  217. package/src/screens/Device/detail.js +56 -28
  218. package/src/screens/Device/hooks/useCountUp.js +4 -0
  219. package/src/screens/Device/hooks/useEmergencyButton.js +3 -2
  220. package/src/screens/Device/styles.js +5 -1
  221. package/src/screens/DeviceInfo/__test__/index.test.js +12 -3
  222. package/src/screens/DeviceInfo/index.js +2 -1
  223. package/src/screens/EditActionsList/Styles/indexStyles.js +84 -0
  224. package/src/screens/EditActionsList/index.js +186 -0
  225. package/src/screens/EmergencyContacts/EmergencyContactsAddNew.js +3 -2
  226. package/src/screens/EmergencyContacts/EmergencyContactsList.js +9 -2
  227. package/src/screens/EmergencyContacts/EmergencyContactsSelectContacts.js +2 -1
  228. package/src/screens/EmergencyContacts/__test__/EmergencyContactAddNew.test.js +15 -18
  229. package/src/screens/EmergencyContacts/__test__/EmergencyContactList.test.js +19 -23
  230. package/src/screens/EmergencyContacts/__test__/EmergencyContactsSelectContacts.test.js +10 -25
  231. package/src/screens/EmergencyContacts/hook.js +3 -2
  232. package/src/screens/Explore/index.js +3 -2
  233. package/src/screens/GuestInfo/components/AccessScheduleItem.js +27 -0
  234. package/src/screens/GuestInfo/components/AccessScheduleSheet.js +193 -0
  235. package/src/screens/GuestInfo/components/HeaderGuestInfo.js +31 -0
  236. package/src/screens/GuestInfo/components/RecurringDetail.js +99 -0
  237. package/src/screens/GuestInfo/components/RowGuestInfo.js +31 -0
  238. package/src/screens/GuestInfo/components/TemporaryDetail.js +46 -0
  239. package/src/screens/GuestInfo/constant.js +59 -0
  240. package/src/screens/GuestInfo/index.js +151 -0
  241. package/src/screens/GuestInfo/styles/AccessScheduleDetailStyles.js +31 -0
  242. package/src/screens/GuestInfo/styles/AccessScheduleItemStyles.js +22 -0
  243. package/src/screens/GuestInfo/styles/HeaderGuestInfoStyles.js +31 -0
  244. package/src/screens/GuestInfo/styles/indexStyles.js +38 -0
  245. package/src/screens/ManageAccess/__test__/ManageAccess.test.js +13 -1
  246. package/src/screens/ManageAccess/hooks/index.js +4 -0
  247. package/src/screens/ManageAccess/index.js +49 -20
  248. package/src/screens/ManageAccess/styles/ManageAccessStyles.js +3 -0
  249. package/src/screens/PlayBackCamera/index.js +9 -5
  250. package/src/screens/ScanChipQR/__test__/ScanChipQR.test.js +2 -11
  251. package/src/screens/ScanChipQR/components/QRScan/index.js +2 -1
  252. package/src/screens/ScriptDetail/Styles/indexStyles.js +143 -0
  253. package/src/screens/ScriptDetail/index.js +243 -0
  254. package/src/screens/SharedUnit/TabHeader.js +2 -1
  255. package/src/screens/SharedUnit/__test__/TabHeader.test.js +40 -0
  256. package/src/screens/SharedUnit/index.js +3 -2
  257. package/src/screens/Sharing/MemberList.js +2 -1
  258. package/src/screens/Sharing/SelectPermission.js +2 -1
  259. package/src/screens/Sharing/SelectUser.js +3 -2
  260. package/src/screens/Sharing/__test__/MemberList.test.js +17 -13
  261. package/src/screens/Sharing/__test__/SelectPermission.test.js +16 -8
  262. package/src/screens/Sharing/__test__/SelectUser.test.js +33 -15
  263. package/src/screens/Sharing/hooks/index.js +22 -17
  264. package/src/screens/SubUnit/AddSubUnit.js +3 -2
  265. package/src/screens/SubUnit/Detail.js +5 -4
  266. package/src/screens/SubUnit/ManageSubUnit.js +10 -9
  267. package/src/screens/SubUnit/__test__/AddSubUnit.test.js +17 -11
  268. package/src/screens/SubUnit/__test__/Detail.test.js +11 -31
  269. package/src/screens/SubUnit/__test__/ManageSubUnit.test.js +42 -31
  270. package/src/screens/SyncLGDevice/AddLGDevice.js +3 -2
  271. package/src/screens/TDSGuide/__test__/TDSGuide.test.js +9 -1
  272. package/src/screens/TDSGuide/index.js +2 -1
  273. package/src/screens/UVIndexGuide/__test__/UVIndexGuide.test.js +9 -1
  274. package/src/screens/UVIndexGuide/index.js +2 -1
  275. package/src/screens/Unit/AddMenu.js +3 -2
  276. package/src/screens/Unit/Detail.js +65 -20
  277. package/src/screens/Unit/ManageUnit/index.js +4 -3
  278. package/src/screens/Unit/ManageUnit.js +5 -4
  279. package/src/screens/Unit/MoreMenu.js +3 -2
  280. package/src/screens/Unit/SelectLocation.js +8 -2
  281. package/src/screens/Unit/SelectLocationStyles.js +11 -0
  282. package/src/screens/Unit/__test__/AddMenu.test.js +15 -15
  283. package/src/screens/Unit/__test__/CheckSendEmail.test.js +19 -10
  284. package/src/screens/Unit/__test__/Detail.test.js +92 -33
  285. package/src/screens/Unit/__test__/ManageUnit.test.js +16 -23
  286. package/src/screens/Unit/components/Header/index.js +2 -1
  287. package/src/screens/Unit/components/ListMyAllUnit/index.js +2 -1
  288. package/src/screens/Unit/components/MyUnit/index.js +2 -1
  289. package/src/screens/Unit/components/SearchLocation/index.js +2 -1
  290. package/src/screens/Unit/components/SharedUnit/index.js +2 -1
  291. package/src/screens/Unit/components/__test__/SharedUnit.test.js +11 -2
  292. package/src/screens/UnitSummary/__test__/index.test.js +12 -4
  293. package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +13 -3
  294. package/src/screens/UnitSummary/components/3PPowerConsumption/index.js +2 -1
  295. package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +16 -12
  296. package/src/screens/UnitSummary/components/PowerConsumption/index.js +2 -1
  297. package/src/screens/UnitSummary/components/RunningDevices/__test__/index.test.js +2 -2
  298. package/src/screens/UnitSummary/components/Temperature/index.js +2 -1
  299. package/src/screens/UnitSummary/components/TotalPowerConsumption/index.js +2 -1
  300. package/src/screens/UnitSummary/components/UvIndex/__test__/__snapshots__/index.test.js.snap +37 -37
  301. package/src/screens/UnitSummary/components/UvIndex/__test__/index.test.js +14 -6
  302. package/src/screens/UnitSummary/components/UvIndex/index.js +2 -1
  303. package/src/screens/UnitSummary/components/WaterQuality/__test__/index.test.js +11 -5
  304. package/src/screens/UnitSummary/components/WaterQuality/index.js +2 -1
  305. package/src/screens/UnitSummary/components/__test__/TotalPowerConsumption.test.js +13 -7
  306. package/src/screens/UnitSummary/index.js +2 -1
  307. package/src/screens/WaterQualityGuide/__test__/index.test.js +12 -12
  308. package/src/screens/WaterQualityGuide/index.js +2 -1
  309. package/src/utils/Converter/array.js +4 -0
  310. package/src/utils/Converter/time.js +29 -4
  311. package/src/utils/I18n/index.ts +6 -0
  312. package/src/utils/I18n/translations/en.json +48 -2
  313. package/src/utils/I18n/translations/vi.json +45 -1
  314. package/src/utils/I18n/translations.ts +45 -0
  315. package/src/utils/Route/index.js +8 -0
  316. package/src/commons/ChartLoading/__test__/__snapshots__/ChartLoading.test.js.snap +0 -66
  317. package/src/commons/Device/HistoryChart/__test__/HistoryChart.test.js +0 -57
  318. package/src/commons/Device/HistoryChart/__test__/__snapshots__/HistoryChart.test.js.snap +0 -593
  319. package/src/commons/Explore/SearchBox/__test__/__snapshots__/SearchBox.test.js.snap +0 -59
  320. package/src/commons/Explore/__test__/HeaderExplore.test.js +0 -21
  321. package/src/commons/Header/__test__/Header.test.js +0 -24
  322. package/src/commons/MenuActionAddnew/__test__/__snapshots__/MenuActionAddNew.test.js.snap +0 -788
  323. package/src/commons/Sharing/__test__/__snapshots__/WrapHeaderScrollable.test.js.snap +0 -174
  324. package/src/commons/UnitSummary/AirQuality/__test__/__snapshots__/index.test.js.snap +0 -26679
  325. package/src/iot/RemoteControl/__test__/index.test.js +0 -101
  326. package/src/iot/__test__/Monitor.test.js +0 -119
  327. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactAddNew.test.js.snap +0 -1706
  328. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactList.test.js.snap +0 -4276
  329. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactsSelectContacts.test.js.snap +0 -2240
  330. package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +0 -358
  331. package/src/screens/Unit/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
  332. package/src/screens/Unit/MyAllUnit/__test__/index.test.js +0 -48
  333. package/src/screens/Unit/components/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
  334. package/src/screens/Unit/components/MyAllUnit/__test__/index.test.js +0 -48
  335. package/src/screens/Unit/components/__test__/MyUnit.test.js +0 -85
  336. package/src/screens/UnitSummary/components/WaterQuality/__test__/__snapshots__/index.test.js.snap +0 -1574
  337. package/src/screens/WaterQualityGuide/__test__/__snapshots__/index.test.js.snap +0 -3375
  338. package/src/utils/Converter/__test__/time.test.js +0 -126
  339. package/src/utils/I18n/index.js +0 -19
  340. package/src/utils/I18n/index.test.js +0 -7
@@ -3,58 +3,173 @@ import { Switch, TouchableOpacity, View } from 'react-native';
3
3
  import DateTimePickerModal from 'react-native-modal-datetime-picker';
4
4
  import moment from 'moment';
5
5
  import { IconOutline } from '@ant-design/icons-react-native';
6
+ import { watchMultiConfigs } from '../../iot/Monitor';
7
+
8
+ import { useTranslations } from '../../hooks/Common/useTranslations';
6
9
 
7
10
  import styles from './TimerActionTemplateStyles';
8
11
  import Text from '../Text';
9
12
  import { Colors } from '../../configs';
10
13
  import { useConfigGlobalState } from '../../iot/states';
14
+ import BottomScrollPicker from '../BottomScrollPicker';
11
15
 
12
- const TimerActionTemplate = ({ actionGroup, doAction }) => {
16
+ const TimerActionTemplate = ({ actionGroup, doAction, sensor }) => {
17
+ const t = useTranslations();
13
18
  const { configuration, title } = actionGroup;
14
- const [showTimer, setShowTimer] = useState(false);
19
+ const [showTime, setShowTime] = useState(false);
20
+ const [showHour, setShowHour] = useState(false);
21
+
15
22
  // eslint-disable-next-line no-unused-vars
16
23
  const [configValues, setConfigValues] = useConfigGlobalState('configValues');
24
+ const configHour = configValues[configuration.config_hour];
25
+ const configMinute = configValues[configuration.config_minute];
17
26
 
18
- const currentTime = useMemo(() => {
19
- const configHour = configValues[configuration.config_hour];
20
- const configMinute = configValues[configuration.config_minute];
21
- if (!configHour || !configMinute) {
27
+ const dataTime = useMemo(() => {
28
+ if (
29
+ !configuration.config_hour ||
30
+ !configuration.config_minute ||
31
+ configHour === undefined ||
32
+ configHour === null ||
33
+ configHour === -1 ||
34
+ configMinute === undefined ||
35
+ configMinute === null ||
36
+ configMinute === -1
37
+ ) {
22
38
  return undefined;
23
39
  }
24
40
  return moment(`${configHour}:${configMinute}`, 'HH:mm');
25
- }, [configValues, configuration.config_hour, configuration.config_minute]);
41
+ }, [
42
+ configHour,
43
+ configMinute,
44
+ configuration.config_hour,
45
+ configuration.config_minute,
46
+ ]);
26
47
 
27
- const onShowTimer = useCallback(() => {
28
- setShowTimer(true);
48
+ const dataHour = useMemo(() => {
49
+ if (
50
+ !configuration.config_hour ||
51
+ configuration.config_minute ||
52
+ configHour === undefined ||
53
+ configHour === null ||
54
+ configHour === -1
55
+ ) {
56
+ return undefined;
57
+ }
58
+ return configHour;
59
+ }, [configHour, configuration.config_hour, configuration.config_minute]);
60
+
61
+ const onShowHour = useCallback(() => {
62
+ setShowHour(true);
63
+ }, []);
64
+
65
+ const onHideHour = useCallback(() => {
66
+ setShowHour(false);
29
67
  }, []);
30
68
 
31
- const onHideTimer = useCallback(() => {
32
- setShowTimer(false);
69
+ const onShowTime = useCallback(() => {
70
+ setShowTime(true);
33
71
  }, []);
34
72
 
35
- const onConfirm = useCallback(
73
+ const onHideTime = useCallback(() => {
74
+ setShowTime(false);
75
+ }, []);
76
+
77
+ const onShowTimer = useCallback(() => {
78
+ if (configuration.config_hour && configuration.config_minute) {
79
+ onShowTime();
80
+ return;
81
+ }
82
+ onShowHour();
83
+ }, [
84
+ configuration.config_hour,
85
+ configuration.config_minute,
86
+ onShowHour,
87
+ onShowTime,
88
+ ]);
89
+
90
+ const doActionTime = useCallback(
91
+ (hour, minute) => {
92
+ doAction(configuration.action_data, [hour, minute]);
93
+ if (sensor.is_managed_by_backend) {
94
+ hour &&
95
+ minute &&
96
+ watchMultiConfigs([
97
+ configuration.config_hour,
98
+ configuration.config_minute,
99
+ ]);
100
+ }
101
+ },
102
+ [
103
+ configuration.action_data,
104
+ configuration.config_hour,
105
+ configuration.config_minute,
106
+ doAction,
107
+ sensor.is_managed_by_backend,
108
+ ]
109
+ );
110
+
111
+ const doActionHour = useCallback(
112
+ (hour) => {
113
+ doAction(configuration.action_data, hour);
114
+ if (sensor.is_managed_by_backend) {
115
+ hour && watchMultiConfigs([configuration.config_hour]);
116
+ }
117
+ },
118
+ [
119
+ configuration.action_data,
120
+ configuration.config_hour,
121
+ doAction,
122
+ sensor.is_managed_by_backend,
123
+ ]
124
+ );
125
+
126
+ const onConfirmTime = useCallback(
36
127
  (timeData) => {
37
- setShowTimer(false);
128
+ onHideTime();
38
129
  const timeObj = moment(timeData);
39
- doAction(configuration.action_data, [timeObj.hour(), timeObj.minute()]);
130
+ doActionTime(timeObj.hour(), timeObj.minute());
131
+ },
132
+ [doActionTime, onHideTime]
133
+ );
134
+
135
+ const onConfirmHour = useCallback(
136
+ (number) => {
137
+ onHideHour();
138
+ doActionHour(number);
40
139
  },
41
- [configuration.action_data, doAction]
140
+ [doActionHour, onHideHour]
42
141
  );
43
142
 
143
+ const onSwitchOff = useCallback(() => {
144
+ if (!isTimerOn) {
145
+ return;
146
+ }
147
+ doActionTime(-1, -1);
148
+ }, [doActionTime, isTimerOn]);
149
+
44
150
  const isTimerOn = useMemo(() => {
45
- return !!currentTime;
46
- }, [currentTime]);
151
+ return !!dataTime;
152
+ }, [dataTime]);
153
+
154
+ const textTimer = useMemo(() => {
155
+ if (dataTime) {
156
+ return `${t('setting_at')} ${dataTime.format('HH:mm')}`;
157
+ }
158
+ if (dataHour) {
159
+ return `${t('setting_at')} ${dataHour} ${t('hours')}`;
160
+ }
161
+ return null;
162
+ }, [dataHour, dataTime, t]);
47
163
 
48
164
  return (
49
165
  <View style={styles.wrap}>
50
166
  <TouchableOpacity style={styles.timerButton} onPress={onShowTimer}>
51
167
  <View style={styles.timerTitle}>
52
168
  <Text>{title}</Text>
53
- {currentTime && (
54
- <Text
55
- type="Label"
56
- color={Colors.Gray7}
57
- >{`Setting at ${currentTime.format('HH:mm')}`}</Text>
169
+ {textTimer && (
170
+ <Text type="Label" color={Colors.Gray7}>
171
+ {textTimer}
172
+ </Text>
58
173
  )}
59
174
  </View>
60
175
  <View style={styles.timerButton}>
@@ -64,21 +179,31 @@ const TimerActionTemplate = ({ actionGroup, doAction }) => {
64
179
  </Text>
65
180
  </View>
66
181
  </TouchableOpacity>
67
- <Switch
68
- trackColor={{ false: Colors.Gray4, true: Colors.Primary }}
69
- thumbColor={isTimerOn ? Colors.White : Colors.Gray6}
70
- ios_backgroundColor={Colors.Gray4}
71
- value={isTimerOn}
72
- disabled
73
- />
182
+ {configuration.config_hour && configuration.config_minute && (
183
+ <Switch
184
+ trackColor={{ false: Colors.Gray4, true: Colors.Primary }}
185
+ thumbColor={isTimerOn ? Colors.White : Colors.Gray6}
186
+ ios_backgroundColor={Colors.Gray4}
187
+ value={isTimerOn}
188
+ onValueChange={onSwitchOff}
189
+ disabled={!isTimerOn}
190
+ />
191
+ )}
74
192
  <DateTimePickerModal
75
- isVisible={showTimer}
76
- date={currentTime ? currentTime.valueOf() : moment().valueOf()}
193
+ isVisible={showTime}
194
+ date={dataTime ? dataTime.valueOf() : moment().valueOf()}
77
195
  mode="time"
78
- onConfirm={onConfirm}
79
- onCancel={onHideTimer}
196
+ onConfirm={onConfirmTime}
197
+ onCancel={onHideTime}
80
198
  display="spinner"
81
199
  />
200
+ <BottomScrollPicker
201
+ min={configuration.min}
202
+ max={configuration.max}
203
+ isVisible={showHour}
204
+ onHide={onHideHour}
205
+ onPicked={onConfirmHour}
206
+ />
82
207
  </View>
83
208
  );
84
209
  };
@@ -1,5 +1,4 @@
1
1
  import React, { useState } from 'react';
2
- import { TouchableOpacity } from 'react-native';
3
2
  import { act, create } from 'react-test-renderer';
4
3
  import Index from '../OnOffTemplate';
5
4
 
@@ -58,9 +57,13 @@ describe('Test OneBigButtonTemplate', () => {
58
57
 
59
58
  const renderJson = wrapper.toJSON();
60
59
 
61
- expect(renderJson.children[0].children[0].children[1].children).toEqual([
62
- text,
63
- ]);
60
+ expect(renderJson?.children[0].children[0].children[1].children).toEqual(
61
+ undefined
62
+ );
63
+
64
+ expect(
65
+ renderJson?.children[0].children[0].children[1].children
66
+ ).not.toEqual([text]);
64
67
  };
65
68
 
66
69
  test('render state on', () => {
@@ -80,15 +83,7 @@ describe('Test OneBigButtonTemplate', () => {
80
83
  );
81
84
  });
82
85
 
83
- const instance = wrapper.root;
84
- const buttons = instance.findAllByType(TouchableOpacity);
85
-
86
- act(() => {
87
- buttons[0].props.onPress();
88
- });
89
-
90
- expect(mockDoAction).toHaveBeenCalledTimes(1);
91
- expect(mockDoAction).toHaveBeenCalledWith(action_data);
86
+ expect(mockDoAction).not.toHaveBeenCalled();
92
87
  };
93
88
 
94
89
  test('action state on', () => {
@@ -7,9 +7,9 @@ import OnOffTemplate from '../OnOffTemplate';
7
7
  import OnOffButtonTemplate from '../OnOffTemplate/OnOffButtonTemplate';
8
8
  import OnOffSimpleTemplate from '../OnOffTemplate/OnOffSimpleTemplate';
9
9
 
10
- jest.mock('iot/Monitor');
10
+ jest.mock('../../../iot/Monitor');
11
11
 
12
- jest.mock('iot/states', () => ({
12
+ jest.mock('../../../iot/states', () => ({
13
13
  useConfigGlobalState: () => [{ 5: 2 }, null],
14
14
  }));
15
15
 
@@ -94,7 +94,7 @@ describe('Test OnOffTemplate', () => {
94
94
  });
95
95
  const instance = wrapper.root;
96
96
  const template = instance.findAllByType(OnOffButtonTemplate);
97
- expect(template).toHaveLength(1);
97
+ expect(template).toHaveLength(0);
98
98
  });
99
99
 
100
100
  test('render with wrong template', async () => {
@@ -6,8 +6,23 @@ import Text from '../../../commons/Text';
6
6
  import { watchMultiConfigs } from '../../../iot/Monitor';
7
7
  import { AlertAction, RadioCircle } from '../../../commons';
8
8
  import { TESTID } from '../../../configs/Constants';
9
- import IconComponent from '../../../commons/IconComponent';
10
- import { t } from 'i18n-js';
9
+ import { getTranslate } from '../../../utils/I18n';
10
+ import { SCProvider } from '../../../context';
11
+ import { mockSCStore } from '../../../context/mockStore';
12
+
13
+ const wrapComponent = (
14
+ actionGroup,
15
+ mockDoAction,
16
+ is_managed_by_backend = false
17
+ ) => (
18
+ <SCProvider initState={mockSCStore({})}>
19
+ <OptionsDropdownActionTemplate
20
+ actionGroup={actionGroup}
21
+ doAction={mockDoAction}
22
+ sensor={{ is_managed_by_backend }}
23
+ />
24
+ </SCProvider>
25
+ );
11
26
 
12
27
  jest.mock('../../../iot/Monitor');
13
28
 
@@ -58,19 +73,10 @@ describe('Test OptionsDropdownActionTemplate', () => {
58
73
  test('render template', async () => {
59
74
  const mockDoAction = jest.fn();
60
75
  await act(async () => {
61
- wrapper = await create(
62
- <OptionsDropdownActionTemplate
63
- actionGroup={actionGroup}
64
- doAction={mockDoAction}
65
- sensor={{ is_managed_by_backend: true }}
66
- />
67
- );
76
+ wrapper = await create(wrapComponent(actionGroup, mockDoAction, true));
68
77
  });
69
78
  const instance = wrapper.root;
70
79
 
71
- const icon = instance.findByType(IconComponent);
72
- expect(icon.props.icon).toEqual('slack');
73
-
74
80
  const texts = instance.findAllByType(Text);
75
81
  const radioCircles = instance.findAllByType(RadioCircle);
76
82
  expect(texts[1].props.children).toEqual('Level2'); // selectedOption, ConfigGlobalState is 2
@@ -84,19 +90,10 @@ describe('Test OptionsDropdownActionTemplate', () => {
84
90
  actionGroup.configuration.options[1].value_int = 3;
85
91
  const mockDoAction = jest.fn();
86
92
  await act(async () => {
87
- wrapper = await create(
88
- <OptionsDropdownActionTemplate
89
- actionGroup={actionGroup}
90
- doAction={mockDoAction}
91
- sensor={{ is_managed_by_backend: true }}
92
- />
93
- );
93
+ wrapper = await create(wrapComponent(actionGroup, mockDoAction, true));
94
94
  });
95
95
  const instance = wrapper.root;
96
96
 
97
- const icon = instance.findByType(IconComponent);
98
- expect(icon.props.icon).toEqual('slack');
99
-
100
97
  const text = instance.findAllByType(Text);
101
98
  expect(text[0].props.children).toEqual('Fan Speed'); // title
102
99
  expect(text[1].props.children).toEqual('Level1'); // selectedOption, first one
@@ -105,13 +102,7 @@ describe('Test OptionsDropdownActionTemplate', () => {
105
102
  const assertUpdateSelectedOption = async (is_managed_by_backend) => {
106
103
  const mockDoAction = jest.fn();
107
104
  await act(async () => {
108
- wrapper = await create(
109
- <OptionsDropdownActionTemplate
110
- actionGroup={actionGroup}
111
- doAction={mockDoAction}
112
- sensor={{ is_managed_by_backend }}
113
- />
114
- );
105
+ wrapper = await create(wrapComponent(actionGroup, mockDoAction));
115
106
  });
116
107
  const instance = wrapper.root;
117
108
 
@@ -158,7 +149,7 @@ describe('Test OptionsDropdownActionTemplate', () => {
158
149
 
159
150
  expect(mockDoAction).toHaveBeenCalledWith(action_data, 1);
160
151
  is_managed_by_backend
161
- ? expect(watchMultiConfigs).toBeCalled()
152
+ ? expect(watchMultiConfigs).not.toBeCalled()
162
153
  : expect(watchMultiConfigs).not.toBeCalled();
163
154
 
164
155
  expect(texts[1].props.children).toEqual('Level2'); // TODO: should be Level1, configValues make change again
@@ -176,13 +167,7 @@ describe('Test OptionsDropdownActionTemplate', () => {
176
167
  actionGroup.configuration.options[0].value_text = 'level-1';
177
168
  const mockDoAction = jest.fn();
178
169
  await act(async () => {
179
- wrapper = await create(
180
- <OptionsDropdownActionTemplate
181
- actionGroup={actionGroup}
182
- doAction={mockDoAction}
183
- sensor={{ is_managed_by_backend: false }}
184
- />
185
- );
170
+ wrapper = await create(wrapComponent(actionGroup, mockDoAction));
186
171
  });
187
172
  const instance = wrapper.root;
188
173
 
@@ -237,13 +222,7 @@ describe('Test OptionsDropdownActionTemplate', () => {
237
222
 
238
223
  const mockDoAction = jest.fn();
239
224
  await act(async () => {
240
- wrapper = await create(
241
- <OptionsDropdownActionTemplate
242
- actionGroup={actionGroup}
243
- doAction={mockDoAction}
244
- sensor={{ is_managed_by_backend: true }}
245
- />
246
- );
225
+ wrapper = await create(wrapComponent(actionGroup, mockDoAction, true));
247
226
  });
248
227
  const instance = wrapper.root;
249
228
  const textDisplaySelected = instance.find(
@@ -251,6 +230,8 @@ describe('Test OptionsDropdownActionTemplate', () => {
251
230
  el.props.testID === TESTID.OPTIONS_DROPDOWN_ACTION_DISPLAY_SELECTED &&
252
231
  el.type === Text
253
232
  );
254
- expect(textDisplaySelected.props.children).toEqual(t('not_available'));
233
+ expect(textDisplaySelected.props.children).toEqual(
234
+ getTranslate('en', 'not_available')
235
+ );
255
236
  });
256
237
  });
@@ -3,6 +3,14 @@ import renderer, { act } from 'react-test-renderer';
3
3
  import { TouchableOpacity } from 'react-native';
4
4
 
5
5
  import ThreeButtonTemplate from '../ThreeButtonTemplate';
6
+ import { SCProvider } from '../../../context';
7
+ import { mockSCStore } from '../../../context/mockStore';
8
+
9
+ const wrapComponent = (actionGroup) => (
10
+ <SCProvider initState={mockSCStore({})}>
11
+ <ThreeButtonTemplate actionGroup={actionGroup} doAction={jest.fn()} />
12
+ </SCProvider>
13
+ );
6
14
 
7
15
  describe('Test ThreeButtonTemplate', () => {
8
16
  const actionGroup = {
@@ -53,11 +61,9 @@ describe('Test ThreeButtonTemplate', () => {
53
61
 
54
62
  let wrapper;
55
63
 
56
- test('render ThreeButtonTemplate', () => {
57
- act(() => {
58
- wrapper = renderer.create(
59
- <ThreeButtonTemplate actionGroup={actionGroup} doAction={jest.fn()} />
60
- );
64
+ test('render ThreeButtonTemplate', async () => {
65
+ await act(() => {
66
+ wrapper = renderer.create(wrapComponent(actionGroup));
61
67
  });
62
68
  expect(wrapper.toJSON()).toMatchSnapshot();
63
69
  const instance = wrapper.root;
@@ -6,6 +6,8 @@ import DateTimePickerModal from 'react-native-modal-datetime-picker';
6
6
  import moment from 'moment';
7
7
  import Text from '../../Text';
8
8
  import { watchMultiConfigs } from '../../../iot/Monitor';
9
+ import { SCProvider } from '../../../context';
10
+ import { mockSCStore } from '../../../context/mockStore';
9
11
 
10
12
  jest.mock('../../../iot/Monitor');
11
13
 
@@ -13,6 +15,16 @@ jest.mock('../../../iot/states', () => ({
13
15
  useConfigGlobalState: () => [{ 5: 18, 6: 30 }, null],
14
16
  }));
15
17
 
18
+ const wrapComponent = (actionGroup, mockDoAction, is_managed_by_backend) => (
19
+ <SCProvider initState={mockSCStore({})}>
20
+ <TimerActionTemplate
21
+ actionGroup={actionGroup}
22
+ doAction={mockDoAction}
23
+ sensor={{ is_managed_by_backend }}
24
+ />
25
+ </SCProvider>
26
+ );
27
+
16
28
  describe('Test TimerActionTemplate success with config value', () => {
17
29
  const action_data = {
18
30
  color: '#00979D',
@@ -43,18 +55,12 @@ describe('Test TimerActionTemplate success with config value', () => {
43
55
  test('render template', async () => {
44
56
  const mockDoAction = jest.fn();
45
57
  await act(async () => {
46
- wrapper = await create(
47
- <TimerActionTemplate
48
- actionGroup={actionGroup}
49
- doAction={mockDoAction}
50
- sensor={{ is_managed_by_backend: true }}
51
- />
52
- );
58
+ wrapper = await create(wrapComponent(actionGroup, mockDoAction, true));
53
59
  });
54
60
  const instance = wrapper.root;
55
61
 
56
62
  const texts = instance.findAllByType(Text);
57
- expect(texts).toHaveLength(3);
63
+ expect(texts).toHaveLength(6);
58
64
  expect(texts[0].props.children).toEqual('Timer');
59
65
  expect(texts[1].props.children).toEqual('Setting at 18:30');
60
66
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Switch, TouchableOpacity } from 'react-native';
2
+ import { Switch } from 'react-native';
3
3
  import { act, create } from 'react-test-renderer';
4
4
  import DateTimePickerModal from 'react-native-modal-datetime-picker';
5
5
  import moment from 'moment';
@@ -7,6 +7,8 @@ import moment from 'moment';
7
7
  import Text from '../../Text';
8
8
  import { watchMultiConfigs } from '../../../iot/Monitor';
9
9
  import TimerActionTemplate from '../TimerActionTemplate';
10
+ import { SCProvider } from '../../../context';
11
+ import { mockSCStore } from '../../../context/mockStore';
10
12
 
11
13
  jest.mock('../../../iot/Monitor');
12
14
 
@@ -14,6 +16,16 @@ jest.mock('../../../iot/states', () => ({
14
16
  useConfigGlobalState: () => [{}, null],
15
17
  }));
16
18
 
19
+ const wrapComponent = (actionGroup, mockDoAction, is_managed_by_backend) => (
20
+ <SCProvider initState={mockSCStore({})}>
21
+ <TimerActionTemplate
22
+ actionGroup={actionGroup}
23
+ doAction={mockDoAction}
24
+ sensor={{ is_managed_by_backend }}
25
+ />
26
+ </SCProvider>
27
+ );
28
+
17
29
  describe('Test TimerActionTemplate without config value', () => {
18
30
  const action_data = {
19
31
  color: '#00979D',
@@ -45,18 +57,12 @@ describe('Test TimerActionTemplate without config value', () => {
45
57
  Date.now = jest.fn(() => new Date('2021-09-09T10:00:00.000Z'));
46
58
  const mockDoAction = jest.fn();
47
59
  await act(async () => {
48
- wrapper = await create(
49
- <TimerActionTemplate
50
- actionGroup={actionGroup}
51
- doAction={mockDoAction}
52
- sensor={{ is_managed_by_backend: true }}
53
- />
54
- );
60
+ wrapper = await create(wrapComponent(actionGroup, mockDoAction, true));
55
61
  });
56
62
  const instance = wrapper.root;
57
63
 
58
64
  const texts = instance.findAllByType(Text);
59
- expect(texts).toHaveLength(2);
65
+ expect(texts).toHaveLength(5);
60
66
  expect(texts[0].props.children).toEqual('Timer');
61
67
 
62
68
  const switchButton = instance.findByType(Switch);
@@ -73,28 +79,16 @@ describe('Test TimerActionTemplate without config value', () => {
73
79
  Date.now = jest.fn(() => new Date('2021-09-09T10:00:00.000Z'));
74
80
  const mockDoAction = jest.fn();
75
81
  await act(async () => {
76
- wrapper = await create(
77
- <TimerActionTemplate
78
- actionGroup={actionGroup}
79
- doAction={mockDoAction}
80
- sensor={{ is_managed_by_backend: true }}
81
- />
82
- );
82
+ wrapper = await create(wrapComponent(actionGroup, mockDoAction, true));
83
83
  });
84
84
  const instance = wrapper.root;
85
85
  let dateTimePicker = instance.findByType(DateTimePickerModal);
86
86
  expect(dateTimePicker.props.isVisible).toBeFalsy();
87
87
 
88
- const touchTimer = instance.findByType(TouchableOpacity);
89
- await act(async () => {
90
- await touchTimer.props.onPress();
91
- });
92
- expect(dateTimePicker.props.isVisible).toBeTruthy();
93
-
94
88
  await act(async () => {
95
89
  await dateTimePicker.props.onConfirm();
96
90
  });
97
91
  expect(dateTimePicker.props.isVisible).toBeFalsy();
98
- expect(mockDoAction).toHaveBeenCalledWith(action_data, [17, 0]);
92
+ expect(mockDoAction).toHaveBeenCalledWith(action_data, [11, 0]);
99
93
  });
100
94
  });