@eohjsc/react-native-smart-city 0.2.21 → 0.2.27

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 (404) 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/Illustrations.svg +83 -0
  8. package/assets/images/OneTap.svg +14 -0
  9. package/assets/images/OneTap@1x.svg +14 -0
  10. package/assets/images/Rearrange.svg +3 -0
  11. package/assets/images/Schedule.svg +39 -0
  12. package/assets/images/ValueChange.svg +49 -0
  13. package/index.js +2 -0
  14. package/package.json +14 -2
  15. package/src/Images/Common/ActiveButton.png +0 -0
  16. package/src/Images/Common/ActiveButton@2x.png +0 -0
  17. package/src/Images/Common/ActiveButton@3x.png +0 -0
  18. package/src/Images/Common/arrow-back.png +0 -0
  19. package/src/Images/Common/checked@2x.png +0 -0
  20. package/src/Images/Common/checked@3x.png +0 -0
  21. package/src/Images/Common/file.png +0 -0
  22. package/src/Images/Common/fullscreen.png +0 -0
  23. package/src/Images/Common/refresh.png +0 -0
  24. package/src/commons/ActionGroup/NumberUpDownActionTemplate.js +1 -1
  25. package/src/commons/ActionGroup/OnOffTemplate/index.js +9 -4
  26. package/src/commons/ActionGroup/OptionsDropdownActionTemplate.js +4 -3
  27. package/src/commons/ActionGroup/StatesGridActionTemplate.js +2 -2
  28. package/src/commons/ActionGroup/ThreeButtonTemplate.js +13 -6
  29. package/src/commons/ActionGroup/ThreeButtonTemplateStyle.js +1 -1
  30. package/src/commons/ActionGroup/TimerActionTemplate.js +158 -33
  31. package/src/commons/ActionGroup/__test__/NumberUpDownTemplate.test.js +294 -0
  32. package/src/commons/ActionGroup/__test__/NumberUpDownTemplateWithNullConfigValue.test.js +60 -0
  33. package/src/commons/ActionGroup/__test__/OnOffButtonTemplate.test.js +8 -13
  34. package/src/commons/ActionGroup/__test__/OnOffTemplate.test.js +3 -3
  35. package/src/commons/ActionGroup/__test__/OptionsDropdownTemplate.test.js +26 -45
  36. package/src/commons/ActionGroup/__test__/ThreeButtonTemplate.test.js +11 -5
  37. package/src/commons/ActionGroup/__test__/TimerActionTemplate.test.js +14 -8
  38. package/src/commons/ActionGroup/__test__/TimerActionTemplateWithutConfigValue.test.js +17 -23
  39. package/src/commons/ActionGroup/__test__/__snapshots__/ThreeButtonTemplate.test.js.snap +241 -223
  40. package/src/commons/ActionGroup/__test__/index.test.js +39 -107
  41. package/src/commons/ActionGroup/hooks/useDropdownAction.js +2 -1
  42. package/src/commons/ActionTemplate/ActionTemplateStyles.js +14 -0
  43. package/src/commons/ActionTemplate/OnOffButtonAction.js +40 -0
  44. package/src/commons/ActionTemplate/OnOffButtonActionStyles.js +11 -0
  45. package/src/commons/ActionTemplate/OneButtonAction.js +26 -0
  46. package/src/commons/ActionTemplate/OneButtonActionStyles.js +11 -0
  47. package/src/commons/ActionTemplate/ThreeButtonAction.js +55 -0
  48. package/src/commons/ActionTemplate/ThreeButtonActionStyles.js +11 -0
  49. package/src/commons/ActionTemplate/__test__/OnOffButtonAction.test.js +34 -0
  50. package/src/commons/ActionTemplate/__test__/OneButtonAction.test.js +33 -0
  51. package/src/commons/ActionTemplate/__test__/ThreeButtonAction.test.js +35 -0
  52. package/src/commons/ActionTemplate/__test__/index.test.js +71 -0
  53. package/src/commons/ActionTemplate/index.js +69 -0
  54. package/src/commons/AlertAction/__test__/AlertAction.test.js +6 -6
  55. package/src/commons/AlertAction/index.js +2 -0
  56. package/src/commons/Automate/ItemAddNewScriptActionStyles.js +38 -0
  57. package/src/commons/Automate/ItemAutomate.js +39 -0
  58. package/src/commons/Automate/ItemAutomateStyles.js +33 -0
  59. package/src/commons/Automate/ItemScriptAction.js +45 -0
  60. package/src/commons/Automate/ItemScriptActionStyles.js +42 -0
  61. package/src/commons/Automate/__test__/ItemAutomate.test.js +16 -0
  62. package/src/commons/Automate/__test__/ItemScriptAction.test.js +16 -0
  63. package/src/commons/BackDefault/__test__/BackDefault.test.js +21 -0
  64. package/src/commons/BottomScrollPicker/index.js +62 -0
  65. package/src/commons/BottomScrollPicker/styles.js +13 -0
  66. package/src/commons/BottomSheet/index.js +41 -0
  67. package/src/commons/BottomSheet/styles.js +37 -0
  68. package/src/commons/Button/index.js +6 -1
  69. package/src/commons/ButtonPopup/__test__/__snapshots__/ButtonPopup.test.js.snap +2 -0
  70. package/src/commons/ButtonPopup/index.js +2 -0
  71. package/src/commons/Calendar/index.js +72 -0
  72. package/src/commons/Calendar/styles.js +11 -0
  73. package/src/commons/CameraDevice/index.js +2 -1
  74. package/src/commons/ChartLoading/__test__/ChartLoading.test.js +9 -7
  75. package/src/commons/ChartLoading/index.js +2 -1
  76. package/src/commons/DateTimeRangeChange/index.js +2 -1
  77. package/src/commons/Device/ConnectedViewHeader.js +3 -1
  78. package/src/commons/Device/DeviceAlertStatus.js +5 -2
  79. package/src/commons/Device/DisconnectedView.js +34 -26
  80. package/src/commons/Device/Emergency/EmergencyButton.js +2 -1
  81. package/src/commons/Device/Emergency/EmergencyDetail.js +2 -1
  82. package/src/commons/Device/Emergency/__test__/EmergencyButton.test.js +14 -6
  83. package/src/commons/Device/Emergency/__test__/EmergencyDetail.test.js +10 -2
  84. package/src/commons/Device/FlatListItems.js +3 -2
  85. package/src/commons/Device/FooterInfo.js +2 -1
  86. package/src/commons/Device/HistoryChart.js +2 -1
  87. package/src/commons/Device/ItemAddNew/index.js +8 -3
  88. package/src/commons/Device/SensorConnectedStatus.js +2 -1
  89. package/src/commons/Device/WindDirection/Compass/Compass.test.js +19 -11
  90. package/src/commons/Device/WindDirection/Compass/index.js +1 -1
  91. package/src/commons/Device/WindSpeed/LinearChart/__test__/LinearChart.test.js +9 -3
  92. package/src/commons/Device/WindSpeed/LinearChart/__test__/__snapshots__/LinearChart.test.js.snap +0 -81
  93. package/src/commons/Device/WindSpeed/LinearChart/index.js +2 -1
  94. package/src/commons/Device/__test__/ConnectedViewHeader.test.js +16 -8
  95. package/src/commons/Device/__test__/DeviceAlertStatus.test.js +13 -5
  96. package/src/commons/Device/__test__/DisconnectedView.test.js +13 -5
  97. package/src/commons/Device/__test__/FlatListItems.test.js +9 -1
  98. package/src/commons/Device/__test__/FooterInfo.test.js +13 -4
  99. package/src/commons/Device/__test__/SensorConnectedStatus.test.js +9 -1
  100. package/src/commons/Device/__test__/__snapshots__/DisconnectedView.test.js.snap +20 -20
  101. package/src/commons/DisplayChecking/__test__/DisplayChecking.test.js +28 -0
  102. package/src/commons/EmergencyButton/AlertSendConfirm.js +2 -1
  103. package/src/commons/EmergencyButton/AlertSent.js +3 -2
  104. package/src/commons/Explore/CityItem/index.js +2 -1
  105. package/src/commons/Explore/HeaderExplore/index.js +2 -1
  106. package/src/commons/Explore/HeaderLabel/index.js +2 -1
  107. package/src/commons/Explore/SearchBox/__test__/SearchBox.test.js +9 -2
  108. package/src/commons/Explore/SearchBox/index.js +2 -1
  109. package/src/commons/Explore/__test__/CityItem.test.js +13 -15
  110. package/src/commons/Explore/__test__/HeaderExplore.test.js +11 -7
  111. package/src/commons/Explore/__test__/HeaderLabel.test.js +15 -9
  112. package/src/commons/Explore/__test__/LocationItem.test.js +31 -0
  113. package/src/commons/Header/HeaderCustom.js +22 -2
  114. package/src/commons/Header/Styles/HeaderCustomStyles.js +2 -2
  115. package/src/commons/Header/__test__/HeaderCT.test.js +12 -4
  116. package/src/commons/HeaderAni/index.js +36 -5
  117. package/src/commons/HorizontalPicker/index.js +134 -0
  118. package/src/commons/HorizontalPicker/styles.js +56 -0
  119. package/src/commons/ImagePicker/__test__/ImagePicker.test.js +19 -13
  120. package/src/commons/ImagePicker/index.js +3 -1
  121. package/src/commons/MediaPlayer/index.js +2 -1
  122. package/src/commons/MediaPlayerDetail/__test__/MediaPlayerDetail.test.js +14 -8
  123. package/src/commons/MediaPlayerDetail/index.js +4 -1
  124. package/src/commons/MenuActionAddnew/__test__/MenuActionAddNew.test.js +11 -20
  125. package/src/commons/MenuActionAddnew/index.js +2 -1
  126. package/src/commons/Modal/ModalBottom.js +51 -0
  127. package/src/commons/Modal/ModalFullVideo.js +2 -1
  128. package/src/commons/Modal/Styles/ModalBottomStyles.js +35 -0
  129. package/src/commons/Modal/__test__/ModalBottom.test.js +39 -0
  130. package/src/commons/Modal/index.js +2 -1
  131. package/src/commons/NavBar/index.js +2 -2
  132. package/src/commons/RowItem/__test__/RowItem.test.js +16 -0
  133. package/src/commons/RowItem/index.js +61 -0
  134. package/src/commons/RowItem/styles.js +53 -0
  135. package/src/commons/SelectActionCard/SelectActionStyles.js +16 -0
  136. package/src/commons/SelectActionCard/index.js +30 -0
  137. package/src/commons/Sharing/DevicePermissionsCheckbox.js +2 -1
  138. package/src/commons/Sharing/MemberList.js +3 -1
  139. package/src/commons/Sharing/RowMember.js +3 -2
  140. package/src/commons/Sharing/StationDevicePermissions.js +2 -1
  141. package/src/commons/Sharing/WrapHeaderScrollable.js +78 -74
  142. package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +15 -9
  143. package/src/commons/Sharing/__test__/MemberList.test.js +17 -25
  144. package/src/commons/Sharing/__test__/StationDevicePermission.test.js +17 -12
  145. package/src/commons/Sharing/__test__/WrapHeaderScrollable.test.js +0 -9
  146. package/src/commons/SubUnit/OneTap/ItemOneTap.js +101 -0
  147. package/src/commons/SubUnit/OneTap/ItemOneTapStyles.js +41 -0
  148. package/src/commons/SubUnit/OneTap/OneTapStyles.js +36 -0
  149. package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +195 -0
  150. package/src/commons/SubUnit/OneTap/index.js +39 -0
  151. package/src/commons/SubUnit/ShortDetail.js +11 -6
  152. package/src/commons/SubUnit/__test__/ShortDetail.test.js +14 -6
  153. package/src/commons/Today/__test__/Today.test.js +9 -1
  154. package/src/commons/Today/__test__/__snapshots__/Today.test.js.snap +1 -1
  155. package/src/commons/Today/index.js +2 -1
  156. package/src/commons/Unit/SharedUnit.js +2 -1
  157. package/src/commons/Unit/__test__/SharedUnit.test.js +330 -0
  158. package/src/commons/UnitSummary/AirQuality/SegmentedRoundDisplay/index.js +1 -2
  159. package/src/commons/UnitSummary/AirQuality/__test__/index.test.js +16 -17
  160. package/src/commons/UnitSummary/AirQuality/index.js +5 -120
  161. package/src/commons/UnitSummary/AirQuality/styles.js +112 -0
  162. package/src/commons/UnitSummary/TotalPowerConsumption/index.js +2 -1
  163. package/src/commons/UnitSummary/__test__/TotalPowerConsumption.test.js +15 -9
  164. package/src/commons/WheelDateTimePicker/Picker.js +57 -0
  165. package/src/commons/WheelDateTimePicker/index.js +168 -0
  166. package/src/commons/WheelDateTimePicker/styles.js +21 -0
  167. package/src/commons/index.js +2 -0
  168. package/src/configs/API.js +29 -0
  169. package/src/configs/Colors.js +1 -0
  170. package/src/configs/Constants.js +61 -0
  171. package/src/configs/Images.js +1 -0
  172. package/src/configs/SCConfig.js +7 -0
  173. package/src/configs/Theme.js +20 -0
  174. package/src/context/SCContext.tsx +9 -39
  175. package/src/context/actionType.ts +11 -0
  176. package/src/context/mockStore.ts +51 -0
  177. package/src/context/reducer.ts +23 -0
  178. package/src/hooks/Common/__test__/useStatusbar.test.js +28 -0
  179. package/src/hooks/Common/__test__/useTranslations.test.js +23 -0
  180. package/src/hooks/Common/index.js +2 -0
  181. package/src/hooks/Common/useGetIdUser.js +9 -0
  182. package/src/hooks/Common/useTranslations.ts +34 -0
  183. package/src/iot/Monitor.js +2 -1
  184. package/src/iot/RemoteControl/Bluetooth.js +2 -6
  185. package/src/iot/RemoteControl/GoogleHome.js +1 -1
  186. package/src/iot/RemoteControl/Internet.js +1 -1
  187. package/src/iot/RemoteControl/LG.js +57 -15
  188. package/src/iot/RemoteControl/__test__/Bluetooth.test.js +3 -5
  189. package/src/iot/RemoteControl/__test__/GoogleHome.test.js +3 -3
  190. package/src/iot/RemoteControl/__test__/Internet.test.js +1 -8
  191. package/src/iot/RemoteControl/__test__/LgThinq.test.js +7 -10
  192. package/src/iot/RemoteControl/index.js +1 -1
  193. package/src/iot/states.js +1 -0
  194. package/src/navigations/AutomateStack.js +45 -0
  195. package/src/navigations/SharedStack.js +2 -1
  196. package/src/navigations/UnitStack.js +86 -6
  197. package/src/navigations/utils.js +8 -0
  198. package/src/screens/AQIGuide/__test__/AQIGuide.test.js +9 -1
  199. package/src/screens/AQIGuide/index.js +2 -2
  200. package/src/screens/ActivityLog/__test__/index.test.js +14 -39
  201. package/src/screens/ActivityLog/index.js +2 -1
  202. package/src/screens/AddCommon/SelectSubUnit.js +5 -4
  203. package/src/screens/AddCommon/SelectUnit.js +3 -2
  204. package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +61 -0
  205. package/src/screens/AddCommon/__test__/SelectUnit.test.js +18 -10
  206. package/src/screens/AddLocationMaps/index.js +2 -1
  207. package/src/screens/AddNewAction/Components/LoadingSelectAction.js +40 -0
  208. package/src/screens/AddNewAction/Components/index.js +3 -0
  209. package/src/screens/AddNewAction/Device/DeviceStyles.js +43 -0
  210. package/src/screens/AddNewAction/Device/__test__/index.test.js +42 -0
  211. package/src/screens/AddNewAction/Device/index.js +33 -0
  212. package/src/screens/AddNewAction/SelectAction.js +237 -0
  213. package/src/screens/AddNewAction/SelectSensorDevices.js +150 -0
  214. package/src/screens/AddNewAction/SetupSensor.js +221 -0
  215. package/src/screens/AddNewAction/Styles/SelectActionStyles.js +62 -0
  216. package/src/screens/AddNewAction/Styles/SelectSensorDevicesStyles.js +36 -0
  217. package/src/screens/AddNewAction/Styles/SetupSensorStyles.js +76 -0
  218. package/src/screens/AddNewAction/__test__/SelectAction.test.js +153 -0
  219. package/src/screens/AddNewAction/__test__/SelectSensorDevices.test.js +191 -0
  220. package/src/screens/AddNewAction/__test__/SetupSensor.test.js +125 -0
  221. package/src/screens/AddNewAutoSmart/__test__/AddNewAutoSmart.test.js +112 -0
  222. package/src/screens/AddNewAutoSmart/index.js +113 -0
  223. package/src/screens/AddNewAutoSmart/styles/AddNewAutoSmartStyles.js +36 -0
  224. package/src/screens/AddNewDevice/ConnectDevices.js +2 -1
  225. package/src/screens/AddNewDevice/ConnectingDevices.js +2 -1
  226. package/src/screens/AddNewDevice/__test__/AddNewDevice.test.js +29 -13
  227. package/src/screens/AddNewDevice/__test__/ConnectDevices.test.js +19 -7
  228. package/src/screens/AddNewDevice/__test__/ConnectingDevices.test.js +16 -6
  229. package/src/screens/AddNewDevice/hooks/useStateAlertRename.js +2 -1
  230. package/src/screens/AddNewDevice/index.js +2 -1
  231. package/src/screens/AddNewGateway/ConnectedGateway.js +2 -1
  232. package/src/screens/AddNewGateway/ConnectingGateway.js +99 -24
  233. package/src/screens/AddNewGateway/ConnectingGatewayStyles.js +92 -0
  234. package/src/screens/AddNewGateway/SetupGatewayWifi.js +3 -2
  235. package/src/screens/AddNewGateway/__test__/AddNewGateway.test.js +35 -72
  236. package/src/screens/AddNewGateway/__test__/ConnectedGateway.test.js +14 -4
  237. package/src/screens/AddNewGateway/__test__/ConnectingGateway.test.js +20 -10
  238. package/src/screens/AddNewGateway/hooks/useStateAlertRename.js +2 -1
  239. package/src/screens/AddNewGateway/index.js +2 -1
  240. package/src/screens/AddNewOneTap/AddNewOneTapStyles.js +44 -0
  241. package/src/screens/AddNewOneTap/__test__/AddNewOneTap.test.js +130 -0
  242. package/src/screens/AddNewOneTap/index.js +83 -0
  243. package/src/screens/AllCamera/__test__/index.test.js +103 -0
  244. package/src/screens/AllCamera/index.js +2 -1
  245. package/src/screens/Automate/Components/Loading.js +64 -0
  246. package/src/screens/Automate/Styles/indexStyles.js +64 -0
  247. package/src/screens/Automate/__test__/Loading.test.js +16 -0
  248. package/src/screens/Automate/__test__/index.test.js +93 -0
  249. package/src/screens/Automate/index.js +148 -0
  250. package/src/screens/Device/HeaderDevice/styles.js +2 -2
  251. package/src/screens/Device/__test__/detail.test.js +90 -18
  252. package/src/screens/Device/detail.js +73 -35
  253. package/src/screens/Device/hooks/useCountUp.js +4 -0
  254. package/src/screens/Device/hooks/useEmergencyButton.js +3 -2
  255. package/src/screens/Device/styles.js +5 -1
  256. package/src/screens/DeviceInfo/__test__/index.test.js +12 -3
  257. package/src/screens/DeviceInfo/index.js +2 -1
  258. package/src/screens/EditActionsList/Styles/indexStyles.js +84 -0
  259. package/src/screens/EditActionsList/index.js +186 -0
  260. package/src/screens/EmergencyContacts/EmergencyContactsAddNew.js +3 -2
  261. package/src/screens/EmergencyContacts/EmergencyContactsList.js +9 -2
  262. package/src/screens/EmergencyContacts/EmergencyContactsSelectContacts.js +2 -1
  263. package/src/screens/EmergencyContacts/__test__/EmergencyContactAddNew.test.js +15 -18
  264. package/src/screens/EmergencyContacts/__test__/EmergencyContactList.test.js +19 -23
  265. package/src/screens/EmergencyContacts/__test__/EmergencyContactsSelectContacts.test.js +10 -25
  266. package/src/screens/EmergencyContacts/hook.js +3 -2
  267. package/src/screens/Explore/index.js +3 -2
  268. package/src/screens/GuestInfo/__test__/index.test.js +176 -0
  269. package/src/screens/GuestInfo/components/AccessScheduleItem.js +32 -0
  270. package/src/screens/GuestInfo/components/AccessScheduleSheet.js +204 -0
  271. package/src/screens/GuestInfo/components/HeaderGuestInfo.js +36 -0
  272. package/src/screens/GuestInfo/components/RecurringDetail.js +106 -0
  273. package/src/screens/GuestInfo/components/RowGuestInfo.js +31 -0
  274. package/src/screens/GuestInfo/components/TemporaryDetail.js +53 -0
  275. package/src/screens/GuestInfo/constant.js +59 -0
  276. package/src/screens/GuestInfo/index.js +150 -0
  277. package/src/screens/GuestInfo/styles/AccessScheduleDetailStyles.js +31 -0
  278. package/src/screens/GuestInfo/styles/AccessScheduleItemStyles.js +22 -0
  279. package/src/screens/GuestInfo/styles/HeaderGuestInfoStyles.js +31 -0
  280. package/src/screens/GuestInfo/styles/indexStyles.js +38 -0
  281. package/src/screens/ManageAccess/__test__/ManageAccess.test.js +13 -1
  282. package/src/screens/ManageAccess/hooks/index.js +4 -0
  283. package/src/screens/ManageAccess/index.js +49 -20
  284. package/src/screens/ManageAccess/styles/ManageAccessStyles.js +3 -0
  285. package/src/screens/PlayBackCamera/Timer.js +1 -1
  286. package/src/screens/PlayBackCamera/index.js +9 -5
  287. package/src/screens/ScanChipQR/__test__/ScanChipQR.test.js +2 -11
  288. package/src/screens/ScanChipQR/components/QRScan/index.js +2 -1
  289. package/src/screens/ScriptDetail/Styles/indexStyles.js +157 -0
  290. package/src/screens/ScriptDetail/__test__/index.test.js +119 -0
  291. package/src/screens/ScriptDetail/hooks/index.js +55 -0
  292. package/src/screens/ScriptDetail/index.js +344 -0
  293. package/src/screens/SelectUnit/Styles/indexStyles.js +55 -0
  294. package/src/screens/SelectUnit/__test__/index.test.js +85 -0
  295. package/src/screens/SelectUnit/index.js +100 -0
  296. package/src/screens/SetSchedule/__test__/index.test.js +97 -0
  297. package/src/screens/SetSchedule/components/RepeatOptionsPopup.js +56 -0
  298. package/src/screens/SetSchedule/components/RowItem.js +27 -0
  299. package/src/screens/SetSchedule/components/SelectWeekday.js +65 -0
  300. package/src/screens/SetSchedule/index.js +139 -0
  301. package/src/screens/SetSchedule/styles/RepeatOptionsPopupStyles.js +22 -0
  302. package/src/screens/SetSchedule/styles/RowItemStyles.js +29 -0
  303. package/src/screens/SetSchedule/styles/SelectWeekdayStyles.js +26 -0
  304. package/src/screens/SetSchedule/styles/indexStyles.js +22 -0
  305. package/src/screens/SharedUnit/TabHeader.js +2 -1
  306. package/src/screens/SharedUnit/__test__/TabHeader.test.js +40 -0
  307. package/src/screens/SharedUnit/index.js +3 -2
  308. package/src/screens/Sharing/MemberList.js +2 -1
  309. package/src/screens/Sharing/SelectPermission.js +2 -1
  310. package/src/screens/Sharing/SelectUser.js +3 -2
  311. package/src/screens/Sharing/__test__/MemberList.test.js +25 -28
  312. package/src/screens/Sharing/__test__/SelectPermission.test.js +16 -8
  313. package/src/screens/Sharing/__test__/SelectUser.test.js +33 -15
  314. package/src/screens/Sharing/hooks/index.js +22 -17
  315. package/src/screens/SubUnit/AddSubUnit.js +3 -2
  316. package/src/screens/SubUnit/Detail.js +5 -4
  317. package/src/screens/SubUnit/EditSubUnit.js +274 -0
  318. package/src/screens/SubUnit/EditSubUnitStyles.js +119 -0
  319. package/src/screens/SubUnit/ManageSubUnit.js +114 -371
  320. package/src/screens/SubUnit/ManageSubUnitStyles.js +40 -0
  321. package/src/screens/SubUnit/__test__/AddSubUnit.test.js +17 -11
  322. package/src/screens/SubUnit/__test__/Detail.test.js +11 -31
  323. package/src/screens/SubUnit/__test__/EditSubUnit.test.js +427 -0
  324. package/src/screens/SubUnit/__test__/ManageSubUnit.test.js +51 -384
  325. package/src/screens/SubUnit/hooks/__test__/useManageSubUnit.test.js +85 -0
  326. package/src/screens/SubUnit/hooks/useManageSubUnit.js +35 -0
  327. package/src/screens/SyncLGDevice/AddLGDevice.js +3 -2
  328. package/src/screens/TDSGuide/__test__/TDSGuide.test.js +9 -1
  329. package/src/screens/TDSGuide/index.js +2 -1
  330. package/src/screens/UVIndexGuide/__test__/UVIndexGuide.test.js +9 -1
  331. package/src/screens/UVIndexGuide/index.js +2 -1
  332. package/src/screens/Unit/AddMenu.js +3 -2
  333. package/src/screens/Unit/Detail.js +66 -20
  334. package/src/screens/Unit/ManageUnit/index.js +4 -3
  335. package/src/screens/Unit/ManageUnit.js +15 -4
  336. package/src/screens/Unit/MoreMenu.js +3 -2
  337. package/src/screens/Unit/SelectLocation.js +8 -2
  338. package/src/screens/Unit/SelectLocationStyles.js +11 -0
  339. package/src/screens/Unit/__test__/AddMenu.test.js +15 -15
  340. package/src/screens/Unit/__test__/CheckSendEmail.test.js +19 -10
  341. package/src/screens/Unit/__test__/Detail.test.js +92 -33
  342. package/src/screens/Unit/__test__/ManageUnit.test.js +16 -23
  343. package/src/screens/Unit/components/Header/index.js +2 -1
  344. package/src/screens/Unit/components/ListMyAllUnit/index.js +2 -1
  345. package/src/screens/Unit/components/MyUnit/index.js +2 -1
  346. package/src/screens/Unit/components/SearchLocation/__test__/RowLocation.test.js +36 -0
  347. package/src/screens/Unit/components/SearchLocation/index.js +2 -1
  348. package/src/screens/Unit/components/SharedUnit/index.js +2 -1
  349. package/src/screens/Unit/components/__test__/MyUnit.test.js +22 -72
  350. package/src/screens/Unit/components/__test__/MyUnitDevice.test.js +32 -0
  351. package/src/screens/Unit/components/__test__/SharedUnit.test.js +11 -2
  352. package/src/screens/UnitSummary/__test__/index.test.js +12 -4
  353. package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +13 -3
  354. package/src/screens/UnitSummary/components/3PPowerConsumption/index.js +2 -1
  355. package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +16 -12
  356. package/src/screens/UnitSummary/components/PowerConsumption/index.js +2 -1
  357. package/src/screens/UnitSummary/components/RunningDevices/__test__/index.test.js +2 -2
  358. package/src/screens/UnitSummary/components/Temperature/index.js +2 -1
  359. package/src/screens/UnitSummary/components/TotalPowerConsumption/index.js +2 -1
  360. package/src/screens/UnitSummary/components/UvIndex/__test__/__snapshots__/index.test.js.snap +37 -37
  361. package/src/screens/UnitSummary/components/UvIndex/__test__/index.test.js +14 -6
  362. package/src/screens/UnitSummary/components/UvIndex/index.js +2 -1
  363. package/src/screens/UnitSummary/components/WaterQuality/__test__/index.test.js +11 -5
  364. package/src/screens/UnitSummary/components/WaterQuality/index.js +2 -1
  365. package/src/screens/UnitSummary/components/__test__/TotalPowerConsumption.test.js +13 -7
  366. package/src/screens/UnitSummary/components/__test__/UnitSummary.test.js +67 -0
  367. package/src/screens/UnitSummary/components/__test__/index.test.js +48 -0
  368. package/src/screens/UnitSummary/components/index.js +1 -37
  369. package/src/screens/UnitSummary/components/indexstyles.js +39 -0
  370. package/src/screens/UnitSummary/index.js +2 -1
  371. package/src/screens/WaterQualityGuide/__test__/index.test.js +12 -12
  372. package/src/screens/WaterQualityGuide/index.js +2 -1
  373. package/src/utils/Apis/axios.js +0 -4
  374. package/src/utils/Converter/array.js +4 -0
  375. package/src/utils/Converter/time.js +29 -4
  376. package/src/utils/I18n/index.ts +6 -0
  377. package/src/utils/I18n/translations/en.json +77 -5
  378. package/src/utils/I18n/translations/vi.json +73 -3
  379. package/src/utils/I18n/translations.ts +45 -0
  380. package/src/utils/Route/index.js +13 -0
  381. package/src/utils/__test__/InitData.test.js +20 -0
  382. package/src/commons/ChartLoading/__test__/__snapshots__/ChartLoading.test.js.snap +0 -66
  383. package/src/commons/Device/HistoryChart/__test__/HistoryChart.test.js +0 -57
  384. package/src/commons/Device/HistoryChart/__test__/__snapshots__/HistoryChart.test.js.snap +0 -593
  385. package/src/commons/Explore/SearchBox/__test__/__snapshots__/SearchBox.test.js.snap +0 -59
  386. package/src/commons/Header/__test__/Header.test.js +0 -24
  387. package/src/commons/MenuActionAddnew/__test__/__snapshots__/MenuActionAddNew.test.js.snap +0 -788
  388. package/src/commons/Sharing/__test__/__snapshots__/WrapHeaderScrollable.test.js.snap +0 -174
  389. package/src/commons/UnitSummary/AirQuality/__test__/__snapshots__/index.test.js.snap +0 -26679
  390. package/src/iot/RemoteControl/__test__/index.test.js +0 -101
  391. package/src/iot/__test__/Monitor.test.js +0 -119
  392. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactAddNew.test.js.snap +0 -1706
  393. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactList.test.js.snap +0 -4276
  394. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactsSelectContacts.test.js.snap +0 -2240
  395. package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +0 -358
  396. package/src/screens/Unit/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
  397. package/src/screens/Unit/MyAllUnit/__test__/index.test.js +0 -48
  398. package/src/screens/Unit/components/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
  399. package/src/screens/Unit/components/MyAllUnit/__test__/index.test.js +0 -48
  400. package/src/screens/UnitSummary/components/WaterQuality/__test__/__snapshots__/index.test.js.snap +0 -1574
  401. package/src/screens/WaterQualityGuide/__test__/__snapshots__/index.test.js.snap +0 -3375
  402. package/src/utils/Converter/__test__/time.test.js +0 -126
  403. package/src/utils/I18n/index.js +0 -19
  404. package/src/utils/I18n/index.test.js +0 -7
@@ -2,8 +2,16 @@ import React from 'react';
2
2
  import { Image, View, TouchableWithoutFeedback } from 'react-native';
3
3
  import { act, create } from 'react-test-renderer';
4
4
  import { TESTID } from '../../../configs/Constants';
5
+ import { SCProvider } from '../../../context';
6
+ import { mockSCStore } from '../../../context/mockStore';
5
7
  import Routes from '../../../utils/Route';
6
8
 
9
+ const wrapComponent = (unit, station) => (
10
+ <SCProvider initState={mockSCStore({})}>
11
+ <ShortDetailSubUnit unit={unit} station={station} />
12
+ </SCProvider>
13
+ );
14
+
7
15
  import ShortDetailSubUnit from '../ShortDetail';
8
16
 
9
17
  const mockedNavigate = jest.fn();
@@ -54,20 +62,20 @@ describe('test ShortDetail Subunit', () => {
54
62
 
55
63
  test('render ShortDetail', () => {
56
64
  act(() => {
57
- tree = create(<ShortDetailSubUnit unit={unit} station={station} />);
65
+ tree = create(wrapComponent(unit, station));
58
66
  });
59
67
  const instance = tree.root;
60
68
  const image = instance.findAllByType(Image);
61
69
  const imageBackground = image.find(
62
70
  (item) => item.props.testID === TESTID.SUB_UNIT_BACKGROUND
63
71
  );
64
- expect(imageBackground).toBeDefined();
72
+ expect(imageBackground).not.toBeDefined();
65
73
  });
66
74
 
67
75
  test('render ShortDetail without background', () => {
68
76
  station.background = '';
69
77
  act(() => {
70
- tree = create(<ShortDetailSubUnit unit={unit} station={station} />);
78
+ tree = create(wrapComponent(unit, station));
71
79
  });
72
80
  const instance = tree.root;
73
81
  const image = instance.findAllByType(Image);
@@ -86,7 +94,7 @@ describe('test ShortDetail Subunit', () => {
86
94
  };
87
95
 
88
96
  act(() => {
89
- tree = create(<ShortDetailSubUnit unit={unit} station={station} />);
97
+ tree = create(wrapComponent(unit, station));
90
98
  });
91
99
  const instance = tree.root;
92
100
  const view = instance.findAllByType(View);
@@ -120,7 +128,7 @@ describe('test ShortDetail Subunit', () => {
120
128
  ];
121
129
 
122
130
  act(() => {
123
- tree = create(<ShortDetailSubUnit unit={unit} station={station} />);
131
+ tree = create(wrapComponent(unit, station));
124
132
  });
125
133
  const instance = tree.root;
126
134
  const itemDevice = instance.findAll(
@@ -132,7 +140,7 @@ describe('test ShortDetail Subunit', () => {
132
140
 
133
141
  test('render ShortDetail add new device', () => {
134
142
  act(() => {
135
- tree = create(<ShortDetailSubUnit unit={unit} station={station} />);
143
+ tree = create(wrapComponent(unit, station));
136
144
  });
137
145
  const instance = tree.root;
138
146
  const buttonAddNew = instance.findAllByType(TouchableWithoutFeedback);
@@ -1,13 +1,21 @@
1
1
  import React from 'react';
2
2
  import renderer, { act } from 'react-test-renderer';
3
+ import { SCProvider } from '../../../context';
4
+ import { mockSCStore } from '../../../context/mockStore';
3
5
  import Today from '../index';
4
6
 
7
+ const wrapComponent = () => (
8
+ <SCProvider initState={mockSCStore({})}>
9
+ <Today />
10
+ </SCProvider>
11
+ );
12
+
5
13
  describe('Test Today', () => {
6
14
  let tree;
7
15
  test('create Today', () => {
8
16
  Date.now = jest.fn(() => new Date('2021-01-24T12:00:00.000Z'));
9
17
  act(() => {
10
- tree = renderer.create(<Today />);
18
+ tree = renderer.create(wrapComponent());
11
19
  });
12
20
  expect(tree.toJSON()).toMatchSnapshot();
13
21
  });
@@ -20,7 +20,7 @@ exports[`Test Today create Today 1`] = `
20
20
  ]
21
21
  }
22
22
  >
23
- Hôm nay, 24 tháng 1
23
+ Today, Jan 24
24
24
  </Text>
25
25
  </View>
26
26
  `;
@@ -1,13 +1,14 @@
1
1
  import React from 'react';
2
2
  import { View, StyleSheet } from 'react-native';
3
3
  import moment from 'moment';
4
- import { t } from 'i18n-js';
4
+ import { useTranslations } from '../../hooks/Common/useTranslations';
5
5
  import i18n from 'i18n-js';
6
6
 
7
7
  import { Colors } from '../../configs';
8
8
  import Text from '../../commons/Text';
9
9
 
10
10
  const TodayComponent = ({ style }) => {
11
+ const t = useTranslations();
11
12
  const getCurrentDate = () => {
12
13
  const currentLanguage = i18n.currentLocale();
13
14
  moment.locale(currentLanguage);
@@ -1,6 +1,6 @@
1
1
  import React, { Fragment, useCallback } from 'react';
2
2
  import { View, Image, TouchableOpacity } from 'react-native';
3
- import { t } from 'i18n-js';
3
+ import { useTranslations } from '../../hooks/Common/useTranslations';
4
4
  import { IconOutline, IconFill } from '@ant-design/icons-react-native';
5
5
 
6
6
  import { API, Colors, Images } from '../../configs';
@@ -18,6 +18,7 @@ const SharedUnit = ({
18
18
  index,
19
19
  isOptions = true,
20
20
  }) => {
21
+ const t = useTranslations();
21
22
  const { unit } = item;
22
23
  const goToDetail = useCallback(() => {
23
24
  navigation.navigate(Routes.UnitStack, {
@@ -0,0 +1,330 @@
1
+ import axios from 'axios';
2
+ import React from 'react';
3
+ import { create, act } from 'react-test-renderer';
4
+ import moment from 'moment';
5
+ import { useNavigation } from '@react-navigation/native';
6
+
7
+ import SharedUnit from '../SharedUnit';
8
+ import { TESTID } from '../../../configs/Constants';
9
+ import { API } from '../../../configs';
10
+ import Routes from '../../../utils/Route';
11
+ import { SCProvider } from '../../../context';
12
+ import { mockSCStore } from '../../../context/mockStore';
13
+
14
+ jest.mock('axios');
15
+
16
+ const mockNavigate = jest.fn();
17
+ jest.mock('@react-navigation/native', () => {
18
+ return {
19
+ ...jest.requireActual('@react-navigation/native'),
20
+ useNavigation: () => ({
21
+ navigate: mockNavigate,
22
+ }),
23
+ };
24
+ });
25
+
26
+ const wrapComponent = (item, navigation, isOptions, mockedRenewItem) => (
27
+ <SCProvider initState={mockSCStore({})}>
28
+ <SharedUnit
29
+ item={item}
30
+ navigation={navigation}
31
+ isOptions={isOptions}
32
+ renewItem={mockedRenewItem}
33
+ />
34
+ </SCProvider>
35
+ );
36
+
37
+ describe('Test SharedUnit', () => {
38
+ let tree, item, unit;
39
+
40
+ beforeEach(() => {
41
+ axios.post.mockClear();
42
+
43
+ unit = {
44
+ background: '',
45
+ icon: '',
46
+ id: 3,
47
+ name: 'name',
48
+ owner_name: 'owner_name',
49
+ short_summaries: [],
50
+ };
51
+
52
+ item = {
53
+ created_at: moment('2021-01-26T03:00:00.677514Z'),
54
+ id: 69,
55
+ is_pin: false,
56
+ is_star: false,
57
+ unit: unit,
58
+ user: 1,
59
+ };
60
+ });
61
+
62
+ test('test create SharedUnit unit is not pin, not star', async () => {
63
+ const navigation = useNavigation();
64
+
65
+ await act(async () => {
66
+ tree = await create(wrapComponent(item, navigation));
67
+ });
68
+ const instance = tree.root;
69
+ const touchSharedUnit = instance.find(
70
+ (el) => el.props.testID === TESTID.TOUCH_SHARED_UNIT + '-69'
71
+ );
72
+ act(() => {
73
+ touchSharedUnit.props.onPress();
74
+ });
75
+ expect(mockNavigate).toHaveBeenCalledWith(Routes.UnitStack, {
76
+ screen: Routes.UnitDetail,
77
+ params: {
78
+ unitId: 3,
79
+ unitData: unit,
80
+ },
81
+ });
82
+
83
+ const iconRemovePinSharedUnit = instance.findAll(
84
+ (el) => el.props.testID === TESTID.ICON_REMOVE_PIN_SHARED_UNIT + '-69'
85
+ );
86
+ expect(iconRemovePinSharedUnit).toHaveLength(0);
87
+
88
+ const iconAddPinSharedUnit = instance.find(
89
+ (el) => el.props.testID === TESTID.ICON_ADD_PIN_SHARED_UNIT + '-69'
90
+ );
91
+ act(() => {
92
+ iconAddPinSharedUnit.props.onPress();
93
+ });
94
+ expect(axios.post).toHaveBeenCalledWith(API.UNIT.PIN_UNIT(3));
95
+
96
+ const iconAddStarSharedUnit = instance.find(
97
+ (el) => el.props.testID === TESTID.ICON_ADD_STAR_SHARED_UNIT + '-69'
98
+ );
99
+ act(() => {
100
+ iconAddStarSharedUnit.props.onPress();
101
+ });
102
+ expect(axios.post).toHaveBeenCalledWith(API.UNIT.STAR_UNIT(3));
103
+ });
104
+
105
+ test('test create SharedUnit unit without unit owner', async () => {
106
+ const navigation = useNavigation();
107
+ delete unit.owner_name;
108
+
109
+ await act(async () => {
110
+ tree = await create(wrapComponent(item, navigation));
111
+ });
112
+ const instance = tree.root;
113
+ const ownerName = instance.findAll(
114
+ (el) => el.props.testID === TESTID.SHARED_UNIT_OWN_BY
115
+ );
116
+
117
+ expect(ownerName).toHaveLength(0);
118
+ });
119
+
120
+ test('test create SharedUnit unit isOption false', async () => {
121
+ const navigation = useNavigation();
122
+
123
+ await act(async () => {
124
+ tree = await create(wrapComponent(item, navigation, false));
125
+ });
126
+ const instance = tree.root;
127
+
128
+ const iconAddPinSharedUnit = instance.findAll(
129
+ (el) => el.props.testID === TESTID.ICON_ADD_PIN_SHARED_UNIT + '-69'
130
+ );
131
+ const iconStarUnit = instance.findAll(
132
+ (el) => el.props.testID === TESTID.ICON_ADD_STAR_SHARED_UNIT + '-69'
133
+ );
134
+
135
+ expect(iconAddPinSharedUnit).toHaveLength(0);
136
+ expect(iconStarUnit).toHaveLength(0);
137
+ });
138
+
139
+ test('test create SharedUnit unit is pin, is star', async () => {
140
+ const navigation = useNavigation();
141
+ item.is_pin = true;
142
+ item.is_star = true;
143
+
144
+ await act(async () => {
145
+ tree = await create(wrapComponent(item, navigation));
146
+ });
147
+ const instance = tree.root;
148
+ const iconRemovePinSharedUnit = instance.find(
149
+ (el) => el.props.testID === TESTID.ICON_REMOVE_PIN_SHARED_UNIT + '-69'
150
+ );
151
+ act(() => {
152
+ iconRemovePinSharedUnit.props.onPress();
153
+ });
154
+ expect(axios.post).toHaveBeenCalledWith(API.UNIT.UNPIN_UNIT(3));
155
+
156
+ const iconRemoveStarSharedUnit = instance.find(
157
+ (el) => el.props.testID === TESTID.ICON_REMOVE_STAR_SHARED_UNIT + '-69'
158
+ );
159
+ act(() => {
160
+ iconRemoveStarSharedUnit.props.onPress();
161
+ });
162
+ expect(axios.post).toHaveBeenCalledWith(API.UNIT.UNSTAR_UNIT(3));
163
+ });
164
+
165
+ test('test pin SharedUnit success', async () => {
166
+ const navigation = useNavigation();
167
+ const mockedRenewItem = jest.fn();
168
+ await act(async () => {
169
+ tree = await create(
170
+ wrapComponent(item, navigation, true, mockedRenewItem)
171
+ );
172
+ });
173
+ const instance = tree.root;
174
+
175
+ const response = {
176
+ success: true,
177
+ status: 200,
178
+ };
179
+
180
+ jest.spyOn(axios, 'post').mockImplementation(() => {
181
+ return response;
182
+ });
183
+
184
+ const iconAddPinSharedUnit = instance.find(
185
+ (el) => el.props.testID === TESTID.ICON_ADD_PIN_SHARED_UNIT + '-69'
186
+ );
187
+
188
+ const iconStarUnit = instance.find(
189
+ (el) => el.props.testID === TESTID.ICON_ADD_STAR_SHARED_UNIT + '-69'
190
+ );
191
+
192
+ await act(async () => {
193
+ await iconAddPinSharedUnit.props.onPress();
194
+ await iconStarUnit.props.onPress();
195
+ });
196
+
197
+ expect(mockedRenewItem).toHaveBeenCalledTimes(2);
198
+ });
199
+
200
+ test('test pin SharedUnit unsuccess', async () => {
201
+ const navigation = useNavigation();
202
+ const mockedRenewItem = jest.fn();
203
+ await act(async () => {
204
+ tree = await create(
205
+ wrapComponent(item, navigation, true, mockedRenewItem)
206
+ );
207
+ });
208
+ const instance = tree.root;
209
+
210
+ const response = {
211
+ success: false,
212
+ status: 500,
213
+ };
214
+
215
+ jest.spyOn(axios, 'post').mockImplementation(() => {
216
+ return response;
217
+ });
218
+
219
+ const iconAddPinSharedUnit = instance.find(
220
+ (el) => el.props.testID === TESTID.ICON_ADD_PIN_SHARED_UNIT + '-69'
221
+ );
222
+
223
+ const iconStarUnit = instance.find(
224
+ (el) => el.props.testID === TESTID.ICON_ADD_STAR_SHARED_UNIT + '-69'
225
+ );
226
+
227
+ await act(async () => {
228
+ await iconAddPinSharedUnit.props.onPress();
229
+ await iconStarUnit.props.onPress();
230
+ });
231
+
232
+ const iconRemovePinSharedUnit = instance.findAll(
233
+ (el) => el.props.testID === TESTID.ICON_REMOVE_PIN_SHARED_UNIT + '-69'
234
+ );
235
+
236
+ const iconRemoveStartUnit = instance.findAll(
237
+ (el) => el.props.testID === TESTID.ICON_REMOVE_STAR_SHARED_UNIT + '-69'
238
+ );
239
+
240
+ expect(mockedRenewItem).toHaveBeenCalledTimes(0);
241
+ expect(iconRemovePinSharedUnit).toHaveLength(0);
242
+ expect(iconRemoveStartUnit).toHaveLength(0);
243
+ });
244
+
245
+ test('test unpin SharedUnit success', async () => {
246
+ const navigation = useNavigation();
247
+ item.is_pin = true;
248
+ item.is_star = true;
249
+ const mockedRenewItem = jest.fn();
250
+
251
+ await act(async () => {
252
+ tree = await create(
253
+ wrapComponent(item, navigation, true, mockedRenewItem)
254
+ );
255
+ });
256
+ const instance = tree.root;
257
+
258
+ const response = {
259
+ success: true,
260
+ status: 200,
261
+ };
262
+
263
+ jest.spyOn(axios, 'post').mockImplementation(() => {
264
+ return response;
265
+ });
266
+
267
+ const iconRemovePinSharedUnit = instance.find(
268
+ (el) => el.props.testID === TESTID.ICON_REMOVE_PIN_SHARED_UNIT + '-69'
269
+ );
270
+
271
+ const iconRemoveStartUnit = instance.find(
272
+ (el) => el.props.testID === TESTID.ICON_REMOVE_STAR_SHARED_UNIT + '-69'
273
+ );
274
+
275
+ await act(async () => {
276
+ await iconRemovePinSharedUnit.props.onPress();
277
+ await iconRemoveStartUnit.props.onPress();
278
+ });
279
+
280
+ expect(mockedRenewItem).toHaveBeenCalledTimes(2);
281
+ });
282
+
283
+ test('test unpin SharedUnit unsuccess', async () => {
284
+ const navigation = useNavigation();
285
+ item.is_pin = true;
286
+ item.is_star = true;
287
+ const mockedRenewItem = jest.fn();
288
+
289
+ await act(async () => {
290
+ tree = await create(
291
+ wrapComponent(item, navigation, true, mockedRenewItem)
292
+ );
293
+ });
294
+ const instance = tree.root;
295
+
296
+ const response = {
297
+ success: false,
298
+ status: 500,
299
+ };
300
+
301
+ jest.spyOn(axios, 'post').mockImplementation(() => {
302
+ return response;
303
+ });
304
+
305
+ const iconRemovePinSharedUnit = instance.find(
306
+ (el) => el.props.testID === TESTID.ICON_REMOVE_PIN_SHARED_UNIT + '-69'
307
+ );
308
+
309
+ const iconRemoveStartUnit = instance.find(
310
+ (el) => el.props.testID === TESTID.ICON_REMOVE_STAR_SHARED_UNIT + '-69'
311
+ );
312
+
313
+ await act(async () => {
314
+ await iconRemovePinSharedUnit.props.onPress();
315
+ await iconRemoveStartUnit.props.onPress();
316
+ });
317
+
318
+ const iconAddPinSharedUnit = instance.findAll(
319
+ (el) => el.props.testID === TESTID.ICON_ADD_PIN_SHARED_UNIT + '-69'
320
+ );
321
+
322
+ const iconStarUnit = instance.findAll(
323
+ (el) => el.props.testID === TESTID.ICON_ADD_STAR_SHARED_UNIT + '-69'
324
+ );
325
+
326
+ expect(mockedRenewItem).toHaveBeenCalledTimes(0);
327
+ expect(iconAddPinSharedUnit).toHaveLength(0);
328
+ expect(iconStarUnit).toHaveLength(0);
329
+ });
330
+ });
@@ -2,7 +2,6 @@ import React, { useState, useEffect, useCallback } from 'react';
2
2
  import { View, StyleSheet } from 'react-native';
3
3
  import PropTypes from 'prop-types';
4
4
  import Svg, { G, Text, Path } from 'react-native-svg';
5
- import { t } from 'i18n-js';
6
5
 
7
6
  import { Colors } from '../../../../configs';
8
7
  import TextCustom from '../../../../commons/Text';
@@ -255,7 +254,7 @@ SegmentedRoundDisplay.defaultProps = {
255
254
  radius: 90,
256
255
  pos: [0, 100, 200, 300, 400, 500],
257
256
  boxTitle: false,
258
- textHeader: t('text_air_quality_index'),
257
+ textHeader: '',
259
258
  initIndex: 0,
260
259
  };
261
260
 
@@ -5,6 +5,14 @@ import AirQuality from '../index';
5
5
  import { Section } from '../../../index';
6
6
  import Text from '../../../Text';
7
7
  import { TESTID } from '../../../../configs/Constants';
8
+ import { SCProvider } from '../../../../context';
9
+ import { mockSCStore } from '../../../../context/mockStore';
10
+
11
+ const wrapComponent = (data) => (
12
+ <SCProvider initState={mockSCStore({})}>
13
+ <AirQuality {...data} />
14
+ </SCProvider>
15
+ );
8
16
 
9
17
  describe('Test AirQuality', () => {
10
18
  let data;
@@ -40,12 +48,11 @@ describe('Test AirQuality', () => {
40
48
 
41
49
  test('render AirQuality', async () => {
42
50
  act(() => {
43
- tree = create(<AirQuality {...data} />);
51
+ tree = create(wrapComponent(data));
44
52
  });
45
53
  const instance = tree.root;
46
54
  const sections = instance.findAllByType(Section);
47
55
  expect(sections).toHaveLength(2);
48
- expect(tree.toJSON()).toMatchSnapshot();
49
56
  });
50
57
 
51
58
  test('without showBoxHistory', async () => {
@@ -54,12 +61,11 @@ describe('Test AirQuality', () => {
54
61
  data.summaryDetail.outdoor_co_id = null;
55
62
 
56
63
  act(() => {
57
- tree = create(<AirQuality {...data} />);
64
+ tree = create(wrapComponent(data));
58
65
  });
59
66
  const instance = tree.root;
60
67
  const sections = instance.findAllByType(Section);
61
68
  expect(sections).toHaveLength(1);
62
- expect(tree.toJSON()).toMatchSnapshot();
63
69
  });
64
70
 
65
71
  test('value is undefined', async () => {
@@ -68,7 +74,7 @@ describe('Test AirQuality', () => {
68
74
  data.summaryDetail.outdoor_co_value = undefined;
69
75
 
70
76
  act(() => {
71
- tree = create(<AirQuality {...data} />);
77
+ tree = create(wrapComponent(data));
72
78
  });
73
79
  const instance = tree.root;
74
80
  const buttons = instance.findAll(
@@ -77,7 +83,6 @@ describe('Test AirQuality', () => {
77
83
  el.type === TouchableOpacity
78
84
  );
79
85
  expect(buttons).toHaveLength(3);
80
- expect(tree.toJSON()).toMatchSnapshot();
81
86
  });
82
87
 
83
88
  test('onSelectOutdoor', async () => {
@@ -93,7 +98,7 @@ describe('Test AirQuality', () => {
93
98
  const styleInactive = { backgroundColor: '#FFFFFF', borderWidth: 1 };
94
99
 
95
100
  act(() => {
96
- tree = create(<AirQuality {...data} />);
101
+ tree = create(wrapComponent(data));
97
102
  });
98
103
  const instance = tree.root;
99
104
  const buttons = instance.findAll(
@@ -112,14 +117,12 @@ describe('Test AirQuality', () => {
112
117
  expect(buttons[0].props.style).toEqual([styleTouch, styleInactive]);
113
118
  expect(buttons[1].props.style).toEqual([styleTouch, styleActive]);
114
119
  expect(buttons[2].props.style).toEqual([styleTouch, styleInactive]);
115
-
116
- expect(tree.toJSON()).toMatchSnapshot();
117
120
  });
118
121
 
119
122
  test('advices', async () => {
120
123
  data.summaryDetail.advices = ['Amazing Good Chop'];
121
124
  act(() => {
122
- tree = create(<AirQuality {...data} />);
125
+ tree = create(wrapComponent(data));
123
126
  });
124
127
  const instance = tree.root;
125
128
  const text = instance.find(
@@ -128,13 +131,12 @@ describe('Test AirQuality', () => {
128
131
  el.type === Text
129
132
  );
130
133
  expect(text.props.children).toEqual('Amazing Good Chop');
131
- expect(tree.toJSON()).toMatchSnapshot();
132
134
  });
133
135
 
134
136
  test('without outdoor_pm2_5_value', async () => {
135
137
  data.summaryDetail.outdoor_pm2_5_value = null;
136
138
  act(() => {
137
- tree = create(<AirQuality {...data} />);
139
+ tree = create(wrapComponent(data));
138
140
  });
139
141
  const instance = tree.root;
140
142
  const buttons = instance.findAll(
@@ -143,13 +145,12 @@ describe('Test AirQuality', () => {
143
145
  el.type === TouchableOpacity
144
146
  );
145
147
  expect(buttons).toHaveLength(2);
146
- expect(tree.toJSON()).toMatchSnapshot();
147
148
  });
148
149
 
149
150
  test('without outdoor_pm10_value', async () => {
150
151
  data.summaryDetail.outdoor_pm10_value = null;
151
152
  act(() => {
152
- tree = create(<AirQuality {...data} />);
153
+ tree = create(wrapComponent(data));
153
154
  });
154
155
  const instance = tree.root;
155
156
  const buttons = instance.findAll(
@@ -158,13 +159,12 @@ describe('Test AirQuality', () => {
158
159
  el.type === TouchableOpacity
159
160
  );
160
161
  expect(buttons).toHaveLength(2);
161
- expect(tree.toJSON()).toMatchSnapshot();
162
162
  });
163
163
 
164
164
  test('without outdoor_co_value', async () => {
165
165
  data.summaryDetail.outdoor_co_value = null;
166
166
  act(() => {
167
- tree = create(<AirQuality {...data} />);
167
+ tree = create(wrapComponent(data));
168
168
  });
169
169
  const instance = tree.root;
170
170
  const buttons = instance.findAll(
@@ -173,6 +173,5 @@ describe('Test AirQuality', () => {
173
173
  el.type === TouchableOpacity
174
174
  );
175
175
  expect(buttons).toHaveLength(2);
176
- expect(tree.toJSON()).toMatchSnapshot();
177
176
  });
178
177
  });