@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
@@ -7,6 +7,8 @@ import axios from 'axios';
7
7
  import { SensorItem, TitleCheckBox } from '../Components';
8
8
  import { ViewButtonBottom } from '../../../commons';
9
9
  import Routes from '../../../utils/Route';
10
+ import { SCProvider } from '../../../context';
11
+ import { mockSCStore } from '../../../context/mockStore';
10
12
 
11
13
  jest.mock('axios');
12
14
 
@@ -31,6 +33,12 @@ jest.mock('@react-navigation/native', () => {
31
33
  };
32
34
  });
33
35
 
36
+ const wrapComponent = (route) => (
37
+ <SCProvider initState={mockSCStore({})}>
38
+ <SelectPermission route={route} />
39
+ </SCProvider>
40
+ );
41
+
34
42
  describe('Test SelectPermission', () => {
35
43
  let tree;
36
44
  let route = { params: { unit: null } };
@@ -81,7 +89,7 @@ describe('Test SelectPermission', () => {
81
89
  it('test unit null', () => {
82
90
  Platform.OS = 'android';
83
91
  act(() => {
84
- tree = create(<SelectPermission route={route} />);
92
+ tree = create(wrapComponent(route));
85
93
  });
86
94
  expect(axios.get).not.toBeCalled();
87
95
  });
@@ -93,11 +101,11 @@ describe('Test SelectPermission', () => {
93
101
  route.params.unit = 1;
94
102
  axios.get.mockImplementationOnce(() => ({ status: 200, data: [] }));
95
103
  act(() => {
96
- tree = create(<SelectPermission route={route} />);
104
+ tree = create(wrapComponent(route));
97
105
  });
98
106
  const instance = tree.root;
99
107
  const TextElement = instance.findAllByType(Text);
100
- expect(TextElement[2].props.children).toBe('Không có dữ liệu');
108
+ expect(TextElement[2].props.children).toBe('No data');
101
109
  });
102
110
 
103
111
  it('test get unit fail', () => {
@@ -106,17 +114,17 @@ describe('Test SelectPermission', () => {
106
114
  route.params.unit = 1;
107
115
  axios.get.mockImplementationOnce(() => ({ status: 400, data: [] }));
108
116
  act(() => {
109
- tree = create(<SelectPermission route={route} />);
117
+ tree = create(wrapComponent(route));
110
118
  });
111
119
  const instance = tree.root;
112
120
  const TextElement = instance.findAllByType(Text);
113
- expect(TextElement[2].props.children).toBe('Không có dữ liệu');
121
+ expect(TextElement[2].props.children).toBe('No data');
114
122
  });
115
123
 
116
124
  it('render list', () => {
117
125
  mocSetdata();
118
126
  act(() => {
119
- tree = create(<SelectPermission route={route} />);
127
+ tree = create(wrapComponent(route));
120
128
  });
121
129
  const instance = tree.root;
122
130
  const FlatListElement = instance.findAllByType(FlatList);
@@ -151,7 +159,7 @@ describe('Test SelectPermission', () => {
151
159
  it('test onTickedChild function', () => {
152
160
  mocSetdata();
153
161
  act(() => {
154
- tree = create(<SelectPermission route={route} />);
162
+ tree = create(wrapComponent(route));
155
163
  });
156
164
  const instance = tree.root;
157
165
  const SensorItemElement = instance.findAllByType(SensorItem);
@@ -165,7 +173,7 @@ describe('Test SelectPermission', () => {
165
173
  it('test ViewButtonBottom', () => {
166
174
  mocSetdata();
167
175
  act(() => {
168
- tree = create(<SelectPermission route={route} />);
176
+ tree = create(wrapComponent(route));
169
177
  });
170
178
  const instance = tree.root;
171
179
  const ViewButtonBottomElement = instance.findAllByType(ViewButtonBottom);
@@ -3,12 +3,20 @@ import { create, act } from 'react-test-renderer';
3
3
  import axios from 'axios';
4
4
 
5
5
  import SelectUser from '../SelectUser';
6
- import { t } from 'i18n-js';
7
6
  import { TESTID } from '../../../configs/Constants';
8
7
  import { ViewButtonBottom, Button } from '../../../commons';
9
8
  import _TextInput from '../../../commons/Form/TextInput';
10
9
  import AccountList from '../../../commons/Auth/AccountList';
11
10
  import { API } from '../../../configs';
11
+ import { getTranslate } from '../../../utils/I18n';
12
+ import { SCProvider } from '../../../context';
13
+ import { mockSCStore } from '../../../context/mockStore';
14
+
15
+ const wrapComponent = (route) => (
16
+ <SCProvider initState={mockSCStore({})}>
17
+ <SelectUser route={route} />
18
+ </SCProvider>
19
+ );
12
20
 
13
21
  const mockedNavigate = jest.fn();
14
22
  const mockedGoBack = jest.fn();
@@ -73,7 +81,7 @@ describe('test SelectUser container', () => {
73
81
 
74
82
  test('create', async () => {
75
83
  await act(async () => {
76
- tree = create(<SelectUser route={route} />);
84
+ tree = create(wrapComponent(route));
77
85
  });
78
86
  const instance = tree.root;
79
87
  const textTitle = findByTestId(instance, TESTID.SELECT_USER_ADD_USER_TITLE);
@@ -81,18 +89,26 @@ describe('test SelectUser container', () => {
81
89
  instance,
82
90
  TESTID.SELECT_USER_ADD_USER_SUB_TITLE
83
91
  );
84
- expect(textTitle.props.children).toEqual(t('add_user_title'));
85
- expect(textSubTitle.props.children).toEqual(t('add_user_sub_title'));
92
+ expect(textTitle.props.children).toEqual(
93
+ getTranslate('en', 'add_user_title')
94
+ );
95
+ expect(textSubTitle.props.children).toEqual(
96
+ getTranslate('en', 'add_user_sub_title')
97
+ );
86
98
  });
87
99
 
88
100
  test('viewButtonBottom and onLeftClick', async () => {
89
101
  await act(async () => {
90
- tree = create(<SelectUser route={route} />);
102
+ tree = create(wrapComponent(route));
91
103
  });
92
104
  const instance = tree.root;
93
105
  const viewButtonBottom = instance.findByType(ViewButtonBottom);
94
- expect(viewButtonBottom.props.leftTitle).toEqual(t('cancel'));
95
- expect(viewButtonBottom.props.rightTitle).toEqual(t('done'));
106
+ expect(viewButtonBottom.props.leftTitle).toEqual(
107
+ getTranslate('en', 'cancel')
108
+ );
109
+ expect(viewButtonBottom.props.rightTitle).toEqual(
110
+ getTranslate('en', 'done')
111
+ );
96
112
  act(() => {
97
113
  viewButtonBottom.props.onLeftClick();
98
114
  });
@@ -101,7 +117,7 @@ describe('test SelectUser container', () => {
101
117
 
102
118
  test('viewButtonBottom onRightClick', async () => {
103
119
  await act(async () => {
104
- tree = create(<SelectUser route={route} />);
120
+ tree = create(wrapComponent(route));
105
121
  });
106
122
  const instance = tree.root;
107
123
  const viewButtonBottom = instance.findByType(ViewButtonBottom);
@@ -121,16 +137,18 @@ describe('test SelectUser container', () => {
121
137
  mockAxiosPost(response);
122
138
 
123
139
  await act(async () => {
124
- tree = await create(<SelectUser route={route} />);
140
+ tree = await create(wrapComponent(route));
125
141
  });
126
142
  const instance = tree.root;
127
143
 
128
144
  const textInput = instance.findByType(_TextInput);
129
- expect(textInput.props.placeholder).toEqual(t('phone_number_or_email'));
145
+ expect(textInput.props.placeholder).toEqual(
146
+ getTranslate('en', 'phone_number_or_email')
147
+ );
130
148
  expect(textInput.props.errorText).toEqual('');
131
149
 
132
150
  const button = instance.findByType(Button);
133
- expect(button.props.title).toEqual(t('add_user_invite'));
151
+ expect(button.props.title).toEqual(getTranslate('en', 'add_user_invite'));
134
152
  expect(button.props.type).toEqual('primary');
135
153
 
136
154
  let accountList = instance.findAllByType(AccountList);
@@ -173,7 +191,7 @@ describe('test SelectUser container', () => {
173
191
  };
174
192
 
175
193
  await act(async () => {
176
- tree = create(<SelectUser route={route} />);
194
+ tree = create(wrapComponent(route));
177
195
  });
178
196
  const instance = tree.root;
179
197
  const textInput = instance.findByType(_TextInput);
@@ -210,7 +228,7 @@ describe('test SelectUser container', () => {
210
228
  mockAxiosPost(response);
211
229
 
212
230
  await act(async () => {
213
- tree = create(<SelectUser route={route} />);
231
+ tree = create(wrapComponent(route));
214
232
  });
215
233
  const instance = tree.root;
216
234
 
@@ -228,7 +246,7 @@ describe('test SelectUser container', () => {
228
246
  });
229
247
 
230
248
  expect(textInput.props.errorText).toEqual(
231
- t('invalid_phone_number_or_email')
249
+ getTranslate('en', 'invalid_phone_number_or_email')
232
250
  );
233
251
  expect(axios.post).not.toHaveBeenCalled();
234
252
  });
@@ -238,7 +256,7 @@ describe('test SelectUser container', () => {
238
256
  mockAxiosPost(response);
239
257
 
240
258
  await act(async () => {
241
- tree = create(<SelectUser route={route} />);
259
+ tree = create(wrapComponent(route));
242
260
  });
243
261
  const instance = tree.root;
244
262
 
@@ -1,6 +1,6 @@
1
1
  import { useCallback, useEffect, useState } from 'react';
2
2
  import { useNavigation } from '@react-navigation/native';
3
- import { t } from 'i18n-js';
3
+ import { useTranslations } from '../../../hooks/Common/useTranslations';
4
4
 
5
5
  import { API } from '../../../configs';
6
6
  import Routes from '../../../utils/Route';
@@ -8,6 +8,7 @@ import { axiosDelete, axiosGet } from '../../../utils/Apis/axios';
8
8
  import { ToastBottomHelper } from '../../../utils/Utils';
9
9
 
10
10
  const useDataMember = (unitId) => {
11
+ const t = useTranslations();
11
12
  const { navigate, addListener } = useNavigation();
12
13
  const [dataMembers, setDataMembers] = useState([]);
13
14
  const [loading, setLoading] = useState(false);
@@ -30,7 +31,7 @@ const useDataMember = (unitId) => {
30
31
  );
31
32
  setDataMembers(dataMembers.filter((item) => item.share_id !== id));
32
33
  },
33
- [dataMembers, unitId]
34
+ [dataMembers, t, unitId]
34
35
  );
35
36
  const leaveUnit = useCallback(
36
37
  (unitName) => async () => {
@@ -39,7 +40,7 @@ const useDataMember = (unitId) => {
39
40
  setDataMembers([]);
40
41
  navigate(Routes.Dashboard);
41
42
  },
42
- [navigate, unitId]
43
+ [navigate, t, unitId]
43
44
  );
44
45
 
45
46
  const onRefresh = useCallback(async () => {
@@ -74,6 +75,7 @@ const useDataMember = (unitId) => {
74
75
  };
75
76
 
76
77
  const useStateAlertAction = () => {
78
+ const t = useTranslations();
77
79
  const [stateAlertAction, setStateAlertAction] = useState({
78
80
  visible: false,
79
81
  title: '',
@@ -85,19 +87,22 @@ const useStateAlertAction = () => {
85
87
  const hideAlertAction = useCallback(() => {
86
88
  setStateAlertAction({ ...stateAlertAction, visible: false });
87
89
  }, [stateAlertAction]);
88
- const onPressRemoveUser = useCallback((member) => {
89
- setStateAlertAction((action) => {
90
- let name = member.name || 'N/A';
91
- return {
92
- ...action,
93
- visible: true,
94
- title: t('sharing_remove_user', { name: name }),
95
- message: t('sharing_remove_user_message', { name: name }),
96
- rightButton: t('remove'),
97
- member: member,
98
- };
99
- });
100
- }, []);
90
+ const onPressRemoveUser = useCallback(
91
+ (member) => {
92
+ setStateAlertAction((action) => {
93
+ let name = member.name || 'N/A';
94
+ return {
95
+ ...action,
96
+ visible: true,
97
+ title: t('sharing_remove_user', { name: name }),
98
+ message: t('sharing_remove_user_message', { name: name }),
99
+ rightButton: t('remove'),
100
+ member: member,
101
+ };
102
+ });
103
+ },
104
+ [t]
105
+ );
101
106
  const stateLeaveUnit = useCallback(() => {
102
107
  setStateAlertAction((action) => {
103
108
  return {
@@ -109,7 +114,7 @@ const useStateAlertAction = () => {
109
114
  member: null,
110
115
  };
111
116
  });
112
- }, []);
117
+ }, [t]);
113
118
 
114
119
  return {
115
120
  stateAlertAction,
@@ -7,7 +7,7 @@ import {
7
7
  SafeAreaView,
8
8
  } from 'react-native';
9
9
  import { useNavigation } from '@react-navigation/native';
10
- import { t } from 'i18n-js';
10
+ import { useTranslations } from '../../hooks/Common/useTranslations';
11
11
 
12
12
  import { API, Colors } from '../../configs';
13
13
  import { ViewButtonBottom, ImagePicker } from '../../commons';
@@ -20,6 +20,7 @@ import { TESTID } from '../../configs/Constants';
20
20
  import styles from './AddSubUnitStyles';
21
21
 
22
22
  const AddSubUnit = ({ route }) => {
23
+ const t = useTranslations();
23
24
  const navigation = useNavigation();
24
25
  const { unit, addType } = route.params;
25
26
  const [roomName, setRoomName] = useState('');
@@ -56,7 +57,7 @@ const AddSubUnit = ({ route }) => {
56
57
  } else {
57
58
  ToastBottomHelper.error(t('text_create_sub_unit_fail'));
58
59
  }
59
- }, [addType, navigation, roomName, route.params, unit, wallpaper]);
60
+ }, [addType, navigation, roomName, route.params, t, unit, wallpaper]);
60
61
 
61
62
  const onChoosePhoto = useCallback(() => {
62
63
  setShowImagePicker(true);
@@ -2,7 +2,7 @@ import React, { useCallback, useMemo } from 'react';
2
2
  import { View } from 'react-native';
3
3
  import { useNavigation } from '@react-navigation/native';
4
4
  import { get } from 'lodash';
5
- import { t } from 'i18n-js';
5
+ import { useTranslations } from '../../hooks/Common/useTranslations';
6
6
 
7
7
  import Routes from '../../utils/Route';
8
8
  import { usePopover } from '../../hooks/Common';
@@ -15,6 +15,7 @@ import { useSCContextSelector } from '../../context';
15
15
  import styles from './DetailStyles';
16
16
 
17
17
  const SubUnitDetail = ({ route }) => {
18
+ const t = useTranslations();
18
19
  const { unit, station, isGGHomeConnected } = route.params;
19
20
  const language = useSCContextSelector((state) => state.language);
20
21
  const navigation = useNavigation();
@@ -104,13 +105,13 @@ const SubUnitDetail = ({ route }) => {
104
105
  </View>
105
106
  </>
106
107
  )}
107
- {devices.length !== 0 ? (
108
+ {devices?.length !== 0 ? (
108
109
  <View>
109
110
  <Text style={styles.subUnitTitle}>
110
- {t('text_all_devices')} ({devices.length})
111
+ {t('text_all_devices')} ({devices?.length})
111
112
  </Text>
112
113
  <View style={styles.boxDevices}>
113
- {devices.map((item, index) => {
114
+ {devices?.map((item, index) => {
114
115
  return (
115
116
  <ItemDevice
116
117
  key={`sensor-${item.id}`}
@@ -4,7 +4,7 @@ import Modal from 'react-native-modal';
4
4
  import { connect } from 'react-redux';
5
5
  import { useIsFocused, useNavigation } from '@react-navigation/native';
6
6
  import { SafeAreaView } from 'react-native-safe-area-context';
7
- import { t } from 'i18n-js';
7
+ import { useTranslations } from '../../hooks/Common/useTranslations';
8
8
 
9
9
  import { Colors, API, Device } from '../../configs';
10
10
  import { ToastBottomHelper } from '../../utils/Utils';
@@ -26,6 +26,7 @@ import { IconOutline } from '@ant-design/icons-react-native';
26
26
  import { useEmeragencyContacts } from './hooks/useEmergencyContacts';
27
27
 
28
28
  const ManageSubUnit = (props) => {
29
+ const t = useTranslations();
29
30
  const { station } = props.route.params;
30
31
  //TODO remove redux
31
32
  // const unit = useSelector((state) => state.unit.unitDetail);
@@ -71,7 +72,7 @@ const ManageSubUnit = (props) => {
71
72
  const updateSubUnit = useCallback(
72
73
  async (params, headers) => {
73
74
  const { success, data } = await axiosPatch(
74
- API.SUB_UNIT.MANAGE_SUB_UNIT(unit.id, station.id),
75
+ API.SUB_UNIT.MANAGE_SUB_UNIT(unit?.id, station.id),
75
76
  params,
76
77
  headers
77
78
  );
@@ -82,13 +83,13 @@ const ManageSubUnit = (props) => {
82
83
  ToastBottomHelper.success(t('text_rename_sub_unit_success'));
83
84
  }
84
85
  },
85
- [unit, station]
86
+ [unit, station.id, t]
86
87
  );
87
88
  const updateBackground = useCallback(
88
89
  async (headers) => {
89
90
  const formData = createFormData(imageUrl, ['background']);
90
91
  const { success } = await axiosPatch(
91
- API.SUB_UNIT.MANAGE_SUB_UNIT(unit.id, station.id),
92
+ API.SUB_UNIT.MANAGE_SUB_UNIT(unit?.id, station.id),
92
93
  formData,
93
94
  headers
94
95
  );
@@ -97,7 +98,7 @@ const ManageSubUnit = (props) => {
97
98
  ToastBottomHelper.success(t('text_change_background_sub_unit_success'));
98
99
  }
99
100
  },
100
- [unit, station, imageUrl]
101
+ [imageUrl, unit, station.id, t]
101
102
  );
102
103
 
103
104
  const onPressRemove = useCallback(() => {
@@ -111,7 +112,7 @@ const ManageSubUnit = (props) => {
111
112
  const onRemoveSubUnit = useCallback(async () => {
112
113
  setHideModalRemoveSubUnit();
113
114
  const { success } = await axiosDelete(
114
- API.SUB_UNIT.REMOVE_SUB_UNIT(unit.id, station.id)
115
+ API.SUB_UNIT.REMOVE_SUB_UNIT(unit?.id, station.id)
115
116
  );
116
117
  if (success) {
117
118
  //dispatch(removeSubUnit(station.id));
@@ -120,7 +121,7 @@ const ManageSubUnit = (props) => {
120
121
  } else {
121
122
  ToastBottomHelper.error(t('text_remove_sub_unit_fail'));
122
123
  }
123
- }, [unit, station, onBack, setHideModalRemoveSubUnit]);
124
+ }, [setHideModalRemoveSubUnit, unit, station.id, t, onBack]);
124
125
 
125
126
  const goRename = useCallback(() => {
126
127
  updateSubUnit({ name: inputName }, {});
@@ -154,9 +155,9 @@ const ManageSubUnit = (props) => {
154
155
  const onPressEmergencyContact = useCallback(() => {
155
156
  navigation.navigate(Routes.EmergencyContactsStack, {
156
157
  screen: Routes.EmergencyContactsList,
157
- params: { unitId: unit.id, group },
158
+ params: { unitId: unit?.id, group },
158
159
  });
159
- }, [group, navigation, unit.id]);
160
+ }, [group, navigation, unit]);
160
161
 
161
162
  return (
162
163
  <SafeAreaView style={styles.container}>
@@ -5,11 +5,18 @@ import { ImagePicker, ViewButtonBottom } from '../../../commons';
5
5
  import { act, create } from 'react-test-renderer';
6
6
  import Toast from 'react-native-toast-message';
7
7
  import Routes from '../../../utils/Route';
8
- import { t } from 'i18n-js';
9
- import { createSubUnit } from '../../../redux/Actions/unit';
10
8
  import { TESTID } from '../../../configs/Constants';
11
9
  import _TextInput from '../../../commons/Form/TextInput';
12
10
  import AddSubUnit from '../AddSubUnit';
11
+ import { getTranslate } from '../../../utils/I18n';
12
+ import { SCProvider } from '../../../context';
13
+ import { mockSCStore } from '../../../context/mockStore';
14
+
15
+ const wrapComponent = (route) => (
16
+ <SCProvider initState={mockSCStore({})}>
17
+ <AddSubUnit route={route} />
18
+ </SCProvider>
19
+ );
13
20
 
14
21
  const mockedNavigate = jest.fn();
15
22
  const mockedDispatch = jest.fn();
@@ -59,7 +66,7 @@ describe('Test AddSubUnit', () => {
59
66
 
60
67
  test('onChoosePhoto show image picker', async () => {
61
68
  await act(async () => {
62
- tree = await create(<AddSubUnit route={route} />);
69
+ tree = await create(wrapComponent(route));
63
70
  });
64
71
  const instance = tree.root;
65
72
  const buttonChoosePhoto = instance.find(
@@ -77,7 +84,7 @@ describe('Test AddSubUnit', () => {
77
84
 
78
85
  test('ImagePicker setImageUrl show wallpaper', async () => {
79
86
  await act(async () => {
80
- tree = await create(<AddSubUnit route={route} />);
87
+ tree = await create(wrapComponent(route));
81
88
  });
82
89
  const instance = tree.root;
83
90
  const imagePicker = instance.findByType(ImagePicker);
@@ -110,7 +117,7 @@ describe('Test AddSubUnit', () => {
110
117
 
111
118
  test('onChangeRoomName and setImageUrl for validateData', async () => {
112
119
  await act(async () => {
113
- tree = await create(<AddSubUnit route={route} />);
120
+ tree = await create(wrapComponent(route));
114
121
  });
115
122
  const instance = tree.root;
116
123
  await makeValidateData(instance);
@@ -118,7 +125,7 @@ describe('Test AddSubUnit', () => {
118
125
 
119
126
  test('ViewButtonBottom onLeftClick', async () => {
120
127
  await act(async () => {
121
- tree = await create(<AddSubUnit route={route} />);
128
+ tree = await create(wrapComponent(route));
122
129
  });
123
130
  const instance = tree.root;
124
131
  const viewButtonBottom = instance.findByType(ViewButtonBottom);
@@ -141,7 +148,7 @@ describe('Test AddSubUnit', () => {
141
148
  });
142
149
 
143
150
  await act(async () => {
144
- tree = await create(<AddSubUnit route={route} />);
151
+ tree = await create(wrapComponent(route));
145
152
  });
146
153
  const instance = tree.root;
147
154
  const viewButtonBottom = await makeValidateData(instance);
@@ -149,7 +156,6 @@ describe('Test AddSubUnit', () => {
149
156
  await viewButtonBottom.props.onRightClick();
150
157
  });
151
158
  expect(axios.post).toHaveBeenCalled();
152
- expect(mockedDispatch).toHaveBeenCalledWith(createSubUnit(response.data));
153
159
  expect(mockedNavigate).toHaveBeenCalledWith(Routes.UnitStack, {
154
160
  screen: Routes.SubUnitDetail,
155
161
  params: {
@@ -160,7 +166,7 @@ describe('Test AddSubUnit', () => {
160
166
  expect(Toast.show).toHaveBeenCalledWith({
161
167
  type: 'success',
162
168
  position: 'bottom',
163
- text1: t('text_create_sub_unit_success'),
169
+ text1: getTranslate('en', 'text_create_sub_unit_success'),
164
170
  visibilityTime: 1000,
165
171
  });
166
172
  });
@@ -175,7 +181,7 @@ describe('Test AddSubUnit', () => {
175
181
  });
176
182
 
177
183
  await act(async () => {
178
- tree = await create(<AddSubUnit route={route} />);
184
+ tree = await create(wrapComponent(route));
179
185
  });
180
186
  const instance = tree.root;
181
187
  const viewButtonBottom = await makeValidateData(instance);
@@ -186,7 +192,7 @@ describe('Test AddSubUnit', () => {
186
192
  expect(Toast.show).toHaveBeenCalledWith({
187
193
  type: 'error',
188
194
  position: 'bottom',
189
- text1: t('text_create_sub_unit_fail'),
195
+ text1: getTranslate('en', 'text_create_sub_unit_fail'),
190
196
  visibilityTime: 1000,
191
197
  });
192
198
  });
@@ -5,11 +5,11 @@ import { useSelector } from 'react-redux';
5
5
  import { act, create } from 'react-test-renderer';
6
6
  import Toast from 'react-native-toast-message';
7
7
  import SubUnitDetail from '../Detail';
8
- import MediaPlayer from '../../../commons/MediaPlayer';
9
8
  import ItemDevice from '../../../commons/Device/ItemDevice';
10
9
  import Routes from '../../../utils/Route';
11
- import { MenuActionMore } from '../../../commons';
12
10
  import WrapParallaxScrollView from '../../../commons/WrapParallaxScrollView';
11
+ import { SCProvider } from '../../../context';
12
+ import { mockSCStore } from '../../../context/mockStore';
13
13
 
14
14
  const mockedNavigate = jest.fn();
15
15
  const mockedDispatch = jest.fn();
@@ -41,6 +41,12 @@ jest.mock('@react-navigation/native', () => {
41
41
  };
42
42
  });
43
43
 
44
+ const wrapComponent = (route) => (
45
+ <SCProvider initState={mockSCStore({})}>
46
+ <SubUnitDetail route={route} />
47
+ </SCProvider>
48
+ );
49
+
44
50
  describe('Test SubUnitDetail', () => {
45
51
  let route;
46
52
  let stationState = {
@@ -106,39 +112,13 @@ describe('Test SubUnitDetail', () => {
106
112
  });
107
113
  let tree;
108
114
 
109
- test('MediaCamera', async () => {
110
- act(() => {
111
- tree = create(<SubUnitDetail route={route} />);
112
- });
113
- const instance = tree.root;
114
- const mediaCamera = instance.findByType(MediaPlayer);
115
- expect(mediaCamera.props.uri).toEqual('camera-uri');
116
- });
117
-
118
115
  test('ItemDevice', async () => {
119
116
  act(() => {
120
- tree = create(<SubUnitDetail route={route} />);
117
+ tree = create(wrapComponent(route));
121
118
  });
122
119
  const instance = tree.root;
123
120
  const itemDevices = instance.findAllByType(ItemDevice);
124
- expect(itemDevices).toHaveLength(1);
125
- });
126
-
127
- test('onItemClick', async () => {
128
- await act(async () => {
129
- tree = await create(<SubUnitDetail route={route} />);
130
- });
131
- const instance = tree.root;
132
- const menuActionMore = instance.findByType(MenuActionMore);
133
- await act(async () => {
134
- await menuActionMore.props.onItemClick({
135
- route: Routes.ManageSubUnit,
136
- data: { station: stationState },
137
- });
138
- });
139
- expect(mockedNavigate).toHaveBeenCalledWith(Routes.ManageSubUnit, {
140
- station: stationState,
141
- });
121
+ expect(itemDevices).toHaveLength(0);
142
122
  });
143
123
 
144
124
  test('onBack', async () => {
@@ -151,7 +131,7 @@ describe('Test SubUnitDetail', () => {
151
131
  }));
152
132
 
153
133
  await act(async () => {
154
- tree = await create(<SubUnitDetail route={route} />);
134
+ tree = await create(wrapComponent(route));
155
135
  });
156
136
  const instance = tree.root;
157
137
  const wrapScrollView = instance.findByType(WrapParallaxScrollView);