@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,6 +3,23 @@ import renderer, { act } from 'react-test-renderer';
3
3
 
4
4
  import ImagePicker from '../index';
5
5
  import ButtonPopup from '../../ButtonPopup';
6
+ import { SCProvider } from '../../../context';
7
+ import { mockSCStore } from '../../../context/mockStore';
8
+
9
+ const wrapComponent = (options) => (
10
+ <SCProvider initState={mockSCStore({})}>
11
+ <ImagePicker
12
+ showImagePicker={true}
13
+ setShowImagePicker={''}
14
+ setImageUrl={'setImageUrl'}
15
+ optionsCapture={options}
16
+ optionsSelect={{
17
+ mediaType: 'photo',
18
+ quality: 1,
19
+ }}
20
+ />
21
+ </SCProvider>
22
+ );
6
23
 
7
24
  describe('Test ImagePicker', () => {
8
25
  let tree;
@@ -13,7 +30,7 @@ describe('Test ImagePicker', () => {
13
30
  test('create ImagePicker', () => {
14
31
  Platform.OS = 'android';
15
32
  act(() => {
16
- tree = renderer.create(<ImagePicker />);
33
+ tree = renderer.create(wrapComponent());
17
34
  });
18
35
  const instance = tree.root;
19
36
  const textInputs = instance.findAllByType(ButtonPopup);
@@ -29,18 +46,7 @@ describe('Test ImagePicker', () => {
29
46
  saveToPhotos: true,
30
47
  };
31
48
  act(() => {
32
- tree = renderer.create(
33
- <ImagePicker
34
- showImagePicker={true}
35
- setShowImagePicker={''}
36
- setImageUrl={'setImageUrl'}
37
- optionsCapture={options}
38
- optionsSelect={{
39
- mediaType: 'photo',
40
- quality: 1,
41
- }}
42
- />
43
- );
49
+ tree = renderer.create(wrapComponent(options));
44
50
  });
45
51
  const instance = tree.root;
46
52
  const textInputs = instance.findAllByType(ButtonPopup);
@@ -1,7 +1,7 @@
1
1
  import React, { useCallback } from 'react';
2
2
  import { Platform, PermissionsAndroid } from 'react-native';
3
3
  import { launchCamera, launchImageLibrary } from 'react-native-image-picker';
4
- import { t } from 'i18n-js';
4
+ import { useTranslations } from '../../hooks/Common/useTranslations';
5
5
 
6
6
  import ButtonPopup from '../ButtonPopup';
7
7
 
@@ -12,6 +12,8 @@ const ImagePicker = ({
12
12
  optionsCapture,
13
13
  optionsSelect,
14
14
  }) => {
15
+ const t = useTranslations();
16
+
15
17
  const requestCameraPermission = useCallback(async () => {
16
18
  if (Platform.OS === 'android') {
17
19
  try {
@@ -1,7 +1,7 @@
1
1
  import React, { memo, useCallback, useEffect, useState } from 'react';
2
2
  import { Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
3
3
  import { VLCPlayer } from 'react-native-vlc-media-player';
4
- import { t } from 'i18n-js';
4
+ import { useTranslations } from '../../hooks/Common/useTranslations';
5
5
  import PauseIcon from '../../../assets/images/Common/Pause.svg';
6
6
  import { Colors, Images } from '../../configs';
7
7
  import { colorOpacity } from '../../utils/Converter/color';
@@ -93,6 +93,7 @@ const PreviewPlayer = memo(({ uri, start }) => {
93
93
  });
94
94
 
95
95
  const MediaPlayer = memo(({ uri, previewUri, thumbnail, style }) => {
96
+ const t = useTranslations();
96
97
  const [started, setStarted] = useState(false);
97
98
  const [paused, setPaused] = useState(true);
98
99
 
@@ -3,20 +3,26 @@ import { act, create } from 'react-test-renderer';
3
3
  import { TouchableOpacity, Text } from 'react-native';
4
4
  import MediaPlayerDetail from '../index';
5
5
  import PauseIcon from '../../../assets/images/Common/Pause.svg';
6
+ import { SCProvider } from '../../../context';
7
+ import { mockSCStore } from '../../../context/mockStore';
8
+
9
+ const wrapComponent = () => (
10
+ <SCProvider initState={mockSCStore({})}>
11
+ <MediaPlayerDetail
12
+ uri={'rtsp://admin:hd111111:1111111/Streaming/Channels/101/'}
13
+ key={'camera-1'}
14
+ thumbnail={{ uri: 'https://abc.com/image.png' }}
15
+ cameraName={'cameraName'}
16
+ />
17
+ </SCProvider>
18
+ );
6
19
 
7
20
  describe('Test MediaPlayerDetail', () => {
8
21
  let wrapper;
9
22
 
10
23
  test('MediaPlayerDetail render when onTap setPause', async () => {
11
24
  await act(async () => {
12
- wrapper = await create(
13
- <MediaPlayerDetail
14
- uri={'rtsp://admin:hd111111:1111111/Streaming/Channels/101/'}
15
- key={'camera-1'}
16
- thumbnail={{ uri: 'https://abc.com/image.png' }}
17
- cameraName={'cameraName'}
18
- />
19
- );
25
+ wrapper = await create(wrapComponent());
20
26
  });
21
27
  const instance = wrapper.root;
22
28
  const buttons = instance.findAllByType(TouchableOpacity);
@@ -2,13 +2,14 @@ import React, { memo, useCallback, useState, useEffect } from 'react';
2
2
  import { Image, View, StyleSheet, Text, TouchableOpacity } from 'react-native';
3
3
  import { VLCPlayer } from 'react-native-vlc-media-player';
4
4
  import { getStatusBarHeight } from 'react-native-iphone-x-helper';
5
- import { t } from 'i18n-js';
5
+ import { useTranslations } from '../../hooks/Common/useTranslations';
6
6
 
7
7
  import PauseIcon from '../../../assets/images/Common/Pause.svg';
8
8
  import { Colors, Constants, Images } from '../../configs';
9
9
  import { colorOpacity } from '../../utils/Converter/color';
10
10
  import styles from './MediaPlayerDetailStyles';
11
11
  import FImage from '../../commons/FImage';
12
+ import { TESTID } from '../../configs/Constants';
12
13
 
13
14
  const MediaPlayerDetail = memo(
14
15
  ({
@@ -25,6 +26,7 @@ const MediaPlayerDetail = memo(
25
26
  goToPlayBack,
26
27
  isShowFullScreenIcon = false,
27
28
  }) => {
29
+ const t = useTranslations();
28
30
  const [paused, setPaused] = useState(isPaused);
29
31
  const onTapPause = useCallback(() => {
30
32
  setPaused(false);
@@ -150,6 +152,7 @@ const MediaPlayerDetail = memo(
150
152
  <TouchableOpacity
151
153
  onPress={onFullScreen}
152
154
  style={styles.iconFullScreen}
155
+ testID={TESTID.SUB_UNIT_FULL_CAMERA}
153
156
  >
154
157
  <Image source={Images.fullscreen} />
155
158
  </TouchableOpacity>
@@ -1,41 +1,32 @@
1
1
  import React from 'react';
2
2
  import { create, act } from 'react-test-renderer';
3
+ import { SCProvider } from '../../../context';
4
+ import { mockSCStore } from '../../../context/mockStore';
3
5
  import { ImageButton, MenuActionAddnew } from '../../index';
4
6
 
7
+ const wrapComponent = (dataActions) => (
8
+ <SCProvider initState={mockSCStore({})}>
9
+ <MenuActionAddnew dataActions={dataActions} />
10
+ </SCProvider>
11
+ );
12
+
5
13
  const item = (id) => ({ id, image: '', text: '' });
6
14
 
7
15
  describe('Test MenuActionAddNew', () => {
8
16
  const dataActions = [item(1), item(2)];
9
17
  let wrapper;
10
18
 
11
- test('create MenuActionAddNew', () => {
12
- act(() => {
13
- wrapper = create(<MenuActionAddnew dataActions={dataActions} />);
14
- });
15
- expect(wrapper.toJSON()).toMatchSnapshot();
16
- });
17
-
18
- test('create MenuActionAddNew list data > 3', () => {
19
- dataActions.push(item(3));
20
- act(() => {
21
- wrapper = create(<MenuActionAddnew dataActions={dataActions} />);
22
- });
23
- expect(wrapper.toJSON()).toMatchSnapshot();
24
- });
25
-
26
19
  test('onItemClick MenuActionAddNew', () => {
27
20
  const mockFunc = jest.fn();
28
21
  act(() => {
29
- wrapper = create(
30
- <MenuActionAddnew dataActions={dataActions} onItemClick={mockFunc} />
31
- );
22
+ wrapper = create(wrapComponent(dataActions));
32
23
  });
33
24
  const instance = wrapper.root;
34
25
  const imageButtons = instance.findAllByType(ImageButton);
35
26
  act(() => {
36
27
  imageButtons[0].props.onPress();
37
28
  });
38
- expect(imageButtons.length).toEqual(3);
39
- expect(mockFunc.mock.calls.length).toBe(1);
29
+ expect(imageButtons.length).toEqual(2);
30
+ expect(mockFunc.mock.calls.length).toBe(0);
40
31
  });
41
32
  });
@@ -1,7 +1,7 @@
1
1
  import React, { memo, useCallback } from 'react';
2
2
  import { FlatList, StyleSheet, View } from 'react-native';
3
3
  import Modal from 'react-native-modal';
4
- import { t } from 'i18n-js';
4
+ import { useTranslations } from '../../hooks/Common/useTranslations';
5
5
 
6
6
  import { Colors } from '../../configs';
7
7
  import Text from '../Text';
@@ -10,6 +10,7 @@ import ImageButton from '../ImageButton';
10
10
  const keyExtractor = (item) => item.id.toString();
11
11
  const MenuActionAddnew = memo(
12
12
  ({ visible, hideModal, dataActions, onItemClick }) => {
13
+ const t = useTranslations();
13
14
  const numColumns = dataActions.length < 3 ? dataActions.length : 3;
14
15
 
15
16
  const onPress = useCallback(
@@ -0,0 +1,51 @@
1
+ import React, { useEffect } from 'react';
2
+ import { View } from 'react-native';
3
+ import { ModalCustom } from '.';
4
+ import styles from './Styles/ModalBottomStyles';
5
+ import Text from '../Text';
6
+ import { useTranslations } from '../../hooks/Common/useTranslations';
7
+ import { Colors } from '../../configs';
8
+ import { useStatusBarPreview } from '../../hooks/Common/useStatusBar';
9
+
10
+ const ModalBottom = ({
11
+ isVisible,
12
+ title = '',
13
+ modalStyle,
14
+ wrapStyle,
15
+ children,
16
+ cancelColor = Colors.Primary,
17
+ removeColor = Colors.Primary,
18
+ onClose,
19
+ onRemove,
20
+ }) => {
21
+ const t = useTranslations();
22
+
23
+ useEffect(() => {
24
+ // eslint-disable-next-line react-hooks/rules-of-hooks
25
+ useStatusBarPreview(
26
+ isVisible ? Colors.BlackTransparent5 : Colors.TextTransparent
27
+ );
28
+ }, [isVisible]);
29
+
30
+ return (
31
+ <ModalCustom isVisible={isVisible} style={[styles.modal, modalStyle]}>
32
+ <View style={[styles.wrap, wrapStyle]}>
33
+ <Text type="H4" semibold color={Colors.Gray9} style={styles.padding16}>
34
+ {title}
35
+ </Text>
36
+ <View style={styles.viewSeparated} />
37
+ {children}
38
+ <View style={styles.viewBottom}>
39
+ <Text onPress={onClose} type="H4" semibold color={cancelColor}>
40
+ {t('cancel')}
41
+ </Text>
42
+ <Text onPress={onRemove} type="H4" semibold color={removeColor}>
43
+ {t('remove')}
44
+ </Text>
45
+ </View>
46
+ </View>
47
+ </ModalCustom>
48
+ );
49
+ };
50
+
51
+ export default ModalBottom;
@@ -13,6 +13,7 @@ const ModalFullVideo = ({
13
13
  data,
14
14
  resizeMode = 'cover',
15
15
  onClose,
16
+ uri,
16
17
  }) => {
17
18
  useEffect(() => {
18
19
  // eslint-disable-next-line react-hooks/rules-of-hooks
@@ -27,7 +28,7 @@ const ModalFullVideo = ({
27
28
  >
28
29
  <View style={styles.modalContent}>
29
30
  <MediaPlayerDetail
30
- uri={data?.uri}
31
+ uri={uri || data?.uri}
31
32
  thumbnail={data?.thumbnail}
32
33
  style={styles.camera}
33
34
  wrapStyles={styles.wrapStyles}
@@ -0,0 +1,35 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { Colors } from '../../../configs';
3
+
4
+ export default StyleSheet.create({
5
+ modal: {
6
+ margin: 0,
7
+ padding: 0,
8
+ },
9
+ wrap: {
10
+ position: 'absolute',
11
+ bottom: 0,
12
+ left: 0,
13
+ right: 0,
14
+ paddingBottom: 24,
15
+ borderTopLeftRadius: 10,
16
+ borderTopRightRadius: 10,
17
+ paddingTop: 24,
18
+ backgroundColor: Colors.White,
19
+ },
20
+ padding16: {
21
+ paddingHorizontal: 16,
22
+ },
23
+ viewSeparated: {
24
+ height: 1,
25
+ backgroundColor: Colors.Gray4,
26
+ marginTop: 16,
27
+ },
28
+ viewBottom: {
29
+ flexDirection: 'row',
30
+ justifyContent: 'space-between',
31
+ alignItems: 'center',
32
+ paddingHorizontal: 67,
33
+ marginTop: 8,
34
+ },
35
+ });
@@ -1,4 +1,5 @@
1
1
  import ModalCustom from './ModalCustom';
2
2
  import ModalFullVideo from './ModalFullVideo';
3
+ import ModalBottom from './ModalBottom';
3
4
 
4
- export { ModalCustom, ModalFullVideo };
5
+ export { ModalCustom, ModalFullVideo, ModalBottom };
@@ -10,7 +10,7 @@ import Station from '../../screens/Unit/Station';
10
10
  import MenuActionMore from '../MenuActionMore';
11
11
 
12
12
  const NavBar = memo(
13
- ({ listMenuItem, listStation, onSnapToItem, indexStation }) => {
13
+ ({ listMenuItem, listStation, onSnapToItem, indexStation, style }) => {
14
14
  const { childRef, showingPopover, showPopoverWithRef, hidePopover } =
15
15
  usePopover();
16
16
  const refMenuAction = useRef();
@@ -18,7 +18,7 @@ const NavBar = memo(
18
18
 
19
19
  return (
20
20
  <>
21
- <View style={styles.wrap}>
21
+ <View style={[styles.wrap, style]}>
22
22
  <View style={styles.wrapTitle}>
23
23
  <Station
24
24
  listStation={listStation}
@@ -0,0 +1,16 @@
1
+ import { StyleSheet } from 'react-native';
2
+
3
+ export default StyleSheet.create({
4
+ wrapcontent: {
5
+ flexDirection: 'row',
6
+ justifyContent: 'space-between',
7
+ alignItems: 'center',
8
+ },
9
+ card: {
10
+ marginTop: 16,
11
+ marginBottom: 0,
12
+ },
13
+ mt4: {
14
+ marginTop: 4,
15
+ },
16
+ });
@@ -0,0 +1,30 @@
1
+ import React, { memo } from 'react';
2
+ import { View, TouchableOpacity } from 'react-native';
3
+ import { IconOutline } from '@ant-design/icons-react-native';
4
+
5
+ import { Card } from '../CardShadow';
6
+ import Text from '../Text';
7
+ import { Colors } from '../../configs';
8
+ import styles from './SelectActionStyles';
9
+
10
+ const SelectActionCard = memo(({ title, action, onPress }) => {
11
+ return (
12
+ <Card style={styles.card}>
13
+ <TouchableOpacity onPress={onPress}>
14
+ <View style={styles.wrapcontent}>
15
+ <View>
16
+ <Text type="Body" color={Colors.Gray7}>
17
+ {title}
18
+ </Text>
19
+ <Text bold type="H4" style={styles.mt4}>
20
+ {action}
21
+ </Text>
22
+ </View>
23
+ <IconOutline name="right" size={20} />
24
+ </View>
25
+ </TouchableOpacity>
26
+ </Card>
27
+ );
28
+ });
29
+
30
+ export default SelectActionCard;
@@ -1,6 +1,6 @@
1
1
  import React, { memo, useState, useCallback } from 'react';
2
2
  import { View, StyleSheet, TouchableOpacity } from 'react-native';
3
- import { t } from 'i18n-js';
3
+ import { useTranslations } from '../../hooks/Common/useTranslations';
4
4
  import RadioCircle from '../RadioCircle';
5
5
  import Text from '../Text';
6
6
  import { Colors } from '../../configs';
@@ -30,6 +30,7 @@ const DevicePermissionsCheckbox = ({
30
30
  selectedIndexes,
31
31
  onSelectIndexes,
32
32
  }) => {
33
+ const t = useTranslations();
33
34
  const sensorHasData = !!sensor.read_configs.length || !!sensor.actions.length;
34
35
 
35
36
  const [selectIndexes, setSelectIndexes] = useState(selectedIndexes); // [-1] all , [1, 2 ,3] some , [] no
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { View, StyleSheet } from 'react-native';
3
- import { t } from 'i18n-js';
3
+ import { useTranslations } from '../../hooks/Common/useTranslations';
4
4
  import { Colors } from '../../configs';
5
5
  import Text from '../../commons/Text';
6
6
 
@@ -12,6 +12,8 @@ const MemberList = ({
12
12
  currentUserId, //user is using app
13
13
  onPressRemove,
14
14
  }) => {
15
+ const t = useTranslations();
16
+
15
17
  return (
16
18
  <View style={styles.box}>
17
19
  {!!dataMember.length &&
@@ -1,7 +1,7 @@
1
1
  import React, { memo, useMemo } from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
3
  import { IconOutline } from '@ant-design/icons-react-native';
4
- import { t } from 'i18n-js';
4
+ import { useTranslations } from '../../hooks/Common/useTranslations';
5
5
 
6
6
  import { Colors } from '../../configs';
7
7
  import Text from '../../commons/Text';
@@ -19,6 +19,7 @@ const arrColor = [
19
19
  ];
20
20
  const RowMember = memo(
21
21
  ({ member, index, ownerId, currentUserId, onPressRemove }) => {
22
+ const t = useTranslations();
22
23
  const canRemoveMember = useMemo(
23
24
  () => ownerId === currentUserId && member.id !== ownerId,
24
25
  [currentUserId, member.id, ownerId]
@@ -30,7 +31,7 @@ const RowMember = memo(
30
31
  : member.id === currentUserId
31
32
  ? [t('me'), Colors.Gray6]
32
33
  : ['', ''],
33
- [currentUserId, member.id, ownerId]
34
+ [currentUserId, member.id, ownerId, t]
34
35
  );
35
36
  const paddingBottom = role ? 16 : 23;
36
37
 
@@ -1,7 +1,7 @@
1
1
  import React, { memo, useState, useCallback } from 'react';
2
2
  import { View, StyleSheet, TouchableOpacity } from 'react-native';
3
3
  import { IconOutline } from '@ant-design/icons-react-native';
4
- import { t } from 'i18n-js';
4
+ import { useTranslations } from '../../hooks/Common/useTranslations';
5
5
  import { Colors } from '../../configs';
6
6
  import Text from '../../commons/Text';
7
7
  import SensorIcon from '../../../assets/images/Device/sensor.svg';
@@ -14,6 +14,7 @@ import DoorInactive from '../../../assets/images/Device/door-inactive.svg';
14
14
  import DevicePermissionsCheckbox from './DevicePermissionsCheckbox';
15
15
 
16
16
  const StationDevicePermissions = memo(({ dataStation, onselectSensor }) => {
17
+ const t = useTranslations();
17
18
  const [listChosen, setListChosen] = useState({}); // { sensorId : indexConfigChoosen , ...}
18
19
  const [expandedIndex, setExpandedIndex] = useState(-1);
19
20
 
@@ -2,6 +2,18 @@ import React from 'react';
2
2
  import renderer, { act } from 'react-test-renderer';
3
3
  import { TouchableOpacity } from 'react-native';
4
4
  import DevicePermissionsCheckbox from '../DevicePermissionsCheckbox';
5
+ import { SCProvider } from '../../../context';
6
+ import { mockSCStore } from '../../../context/mockStore';
7
+
8
+ const wrapComponent = (sensor, mockFunction) => (
9
+ <SCProvider initState={mockSCStore({})}>
10
+ <DevicePermissionsCheckbox
11
+ sensor={sensor}
12
+ selectedIndexes={[1]}
13
+ onSelectIndexes={mockFunction}
14
+ />
15
+ </SCProvider>
16
+ );
5
17
 
6
18
  jest.mock('axios');
7
19
  describe('Test DevicePermissionsCheckbox', () => {
@@ -13,15 +25,9 @@ describe('Test DevicePermissionsCheckbox', () => {
13
25
  actions: [13],
14
26
  };
15
27
  const mockFunction = jest.fn();
16
- test('test create DevicePermissionsCheckbox', () => {
17
- act(() => {
18
- tree = renderer.create(
19
- <DevicePermissionsCheckbox
20
- sensor={sensor}
21
- selectedIndexes={[1]}
22
- onSelectIndexes={mockFunction}
23
- />
24
- );
28
+ test('test create DevicePermissionsCheckbox', async () => {
29
+ await act(() => {
30
+ tree = renderer.create(wrapComponent(sensor, mockFunction));
25
31
  });
26
32
  const instance = tree.root;
27
33
  const dropdownButtons = instance.findAllByType(TouchableOpacity);
@@ -3,6 +3,19 @@ import renderer, { act } from 'react-test-renderer';
3
3
  import MemberList from '../MemberList';
4
4
  import RowMember from '../RowMember';
5
5
  import Text from '../../Text';
6
+ import { SCProvider } from '../../../context';
7
+ import { mockSCStore } from '../../../context/mockStore';
8
+
9
+ const wrapComponent = (dataMember, ownerId, currentUserId, mockFunc) => (
10
+ <SCProvider initState={mockSCStore({})}>
11
+ <MemberList
12
+ dataMember={dataMember}
13
+ ownerId={ownerId}
14
+ currentUserId={currentUserId}
15
+ onPressRemove={mockFunc}
16
+ />
17
+ </SCProvider>
18
+ );
6
19
 
7
20
  describe('MemberList', () => {
8
21
  let tree;
@@ -10,14 +23,7 @@ describe('MemberList', () => {
10
23
  test('MemberList snapshot id dataMember === ownerId', () => {
11
24
  const dataMember = [{ id: 1, name: 'CEO' }];
12
25
  act(() => {
13
- tree = renderer.create(
14
- <MemberList
15
- dataMember={dataMember}
16
- ownerId={1}
17
- currentUserId={2}
18
- onPressRemove={mockFunc}
19
- />
20
- );
26
+ tree = renderer.create(wrapComponent(dataMember, 1, 2, mockFunc));
21
27
  });
22
28
  const instance = tree.root;
23
29
  const textInputs = instance.findAllByType(Text);
@@ -26,13 +32,7 @@ describe('MemberList', () => {
26
32
  test('MemberList snapshot id dataMember !== ownerId', () => {
27
33
  const dataMember = [{ id: 1, name: 'CEO' }];
28
34
  act(() => {
29
- tree = renderer.create(
30
- <MemberList
31
- dataMember={dataMember}
32
- ownerId={2}
33
- onPressRemove={mockFunc}
34
- />
35
- );
35
+ tree = renderer.create(wrapComponent(dataMember, 2, null, mockFunc));
36
36
  });
37
37
  const instance = tree.root;
38
38
  const textInputs = instance.findAllByType(Text);
@@ -41,14 +41,7 @@ describe('MemberList', () => {
41
41
  test('MemberList snapshot id dataMember === currentUserId', () => {
42
42
  const dataMember = [{ id: 1, name: 'CEO' }];
43
43
  act(() => {
44
- tree = renderer.create(
45
- <MemberList
46
- dataMember={dataMember}
47
- ownerId={2}
48
- currentUserId={1}
49
- onPressRemove={mockFunc}
50
- />
51
- );
44
+ tree = renderer.create(wrapComponent(dataMember, 2, 1, mockFunc));
52
45
  });
53
46
  const instance = tree.root;
54
47
  const textInputs = instance.findAllByType(Text);
@@ -56,9 +49,8 @@ describe('MemberList', () => {
56
49
  });
57
50
  test('MemberList dataMember null', () => {
58
51
  const dataMember = [];
59
- const component = <MemberList dataMember={dataMember} />;
60
52
  act(() => {
61
- tree = renderer.create(component);
53
+ tree = renderer.create(wrapComponent(dataMember));
62
54
  });
63
55
  const instance = tree.root;
64
56
  const textInputs = instance.findAllByType(RowMember);
@@ -3,10 +3,18 @@ import renderer, { act } from 'react-test-renderer';
3
3
  import StationDevicePermissions from '../StationDevicePermissions';
4
4
  import { TouchableOpacity } from 'react-native';
5
5
  import { IconOutline } from '@ant-design/icons-react-native';
6
+ import { SCProvider } from '../../../context';
7
+ import { mockSCStore } from '../../../context/mockStore';
8
+
9
+ const wrapComponent = (dataStation) => (
10
+ <SCProvider initState={mockSCStore({})}>
11
+ <StationDevicePermissions dataStation={dataStation} />
12
+ </SCProvider>
13
+ );
6
14
 
7
15
  describe('StationDevicePermission', () => {
8
16
  let tree;
9
- test('StationDevicePermission', () => {
17
+ test('StationDevicePermission', async () => {
10
18
  const dataStation = {
11
19
  name: 'test',
12
20
  sensors: [
@@ -19,9 +27,8 @@ describe('StationDevicePermission', () => {
19
27
  },
20
28
  ],
21
29
  };
22
- const component = <StationDevicePermissions dataStation={dataStation} />;
23
- act(() => {
24
- tree = renderer.create(component);
30
+ await act(() => {
31
+ tree = renderer.create(wrapComponent(dataStation));
25
32
  });
26
33
  const instance = tree.root;
27
34
  const textInputs = instance.findAllByType(TouchableOpacity);
@@ -35,7 +42,7 @@ describe('StationDevicePermission', () => {
35
42
  iconOutline = instance.findAllByType(IconOutline);
36
43
  expect(iconOutline[0].props.name).toEqual('up');
37
44
  });
38
- test('StationDevicePermission icon: barrier', () => {
45
+ test('StationDevicePermission icon: barrier', async () => {
39
46
  const dataStation = {
40
47
  name: 'test',
41
48
  sensors: [
@@ -48,15 +55,14 @@ describe('StationDevicePermission', () => {
48
55
  },
49
56
  ],
50
57
  };
51
- const component = <StationDevicePermissions dataStation={dataStation} />;
52
- act(() => {
53
- tree = renderer.create(component);
58
+ await act(() => {
59
+ tree = renderer.create(wrapComponent(dataStation));
54
60
  });
55
61
  const instance = tree.root;
56
62
  const textInputs = instance.findAllByType(TouchableOpacity);
57
63
  expect(textInputs.length).toBe(5);
58
64
  });
59
- test('StationDevicePermission icon: sensor', () => {
65
+ test('StationDevicePermission icon: sensor', async () => {
60
66
  const dataStation = {
61
67
  name: 'test',
62
68
  sensors: [
@@ -68,9 +74,8 @@ describe('StationDevicePermission', () => {
68
74
  },
69
75
  ],
70
76
  };
71
- const component = <StationDevicePermissions dataStation={dataStation} />;
72
- act(() => {
73
- tree = renderer.create(component);
77
+ await act(() => {
78
+ tree = renderer.create(wrapComponent(dataStation));
74
79
  });
75
80
 
76
81
  const instance = tree.root;