@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
@@ -5,11 +5,21 @@ import DateTimePickerModal from 'react-native-modal-datetime-picker';
5
5
  import moment from 'moment';
6
6
 
7
7
  import ActionGroup from '..';
8
- import RadioCircle from '../../RadioCircle';
9
- import IconComponent from '../../IconComponent';
10
8
  import Text from '../../Text';
11
9
  import { Colors } from '../../../configs';
12
10
  import { TESTID } from '../../../configs/Constants';
11
+ import { SCProvider } from '../../../context';
12
+ import { mockSCStore } from '../../../context/mockStore';
13
+
14
+ const wrapComponent = (actionGroup, mockDoAction, sensor) => (
15
+ <SCProvider initState={mockSCStore({})}>
16
+ <ActionGroup
17
+ actionGroup={actionGroup}
18
+ doAction={mockDoAction}
19
+ sensor={sensor}
20
+ />
21
+ </SCProvider>
22
+ );
13
23
 
14
24
  describe('Test ActionGroup', () => {
15
25
  const configuration_with_none_action_on_off = {
@@ -140,13 +150,11 @@ describe('Test ActionGroup', () => {
140
150
  };
141
151
  });
142
152
 
143
- test('render ActionGroup three_button_action_template', () => {
153
+ test('render ActionGroup three_button_action_template', async () => {
144
154
  const actionGroup = actionGroupData;
145
155
  const mockDoAction = jest.fn();
146
- act(() => {
147
- wrapper = renderer.create(
148
- <ActionGroup actionGroup={actionGroup} doAction={mockDoAction} />
149
- );
156
+ await act(() => {
157
+ wrapper = renderer.create(wrapComponent(actionGroup, mockDoAction));
150
158
  });
151
159
  const instance = wrapper.root;
152
160
  const buttons = instance.findAllByType(TouchableOpacity);
@@ -180,13 +188,11 @@ describe('Test ActionGroup', () => {
180
188
  );
181
189
  });
182
190
 
183
- test('Three_button_action_template Action OnOff isDisplayLock True', () => {
191
+ test('Three_button_action_template Action OnOff isDisplayLock True', async () => {
184
192
  const actionGroup = actionGroupData;
185
193
  const mockDoAction = jest.fn();
186
- act(() => {
187
- wrapper = renderer.create(
188
- <ActionGroup actionGroup={actionGroup} doAction={mockDoAction} />
189
- );
194
+ await act(() => {
195
+ wrapper = renderer.create(wrapComponent(actionGroup, mockDoAction));
190
196
  });
191
197
  const instance = wrapper.root;
192
198
  const switchOnOff = instance.findAllByType(Switch);
@@ -207,16 +213,14 @@ describe('Test ActionGroup', () => {
207
213
  );
208
214
  });
209
215
 
210
- test('Three_button_action_template None Action OnOff isDisplayLock True', () => {
216
+ test('Three_button_action_template None Action OnOff isDisplayLock True', async () => {
211
217
  const actionGroup = {
212
218
  ...actionGroupData,
213
219
  configuration: configuration_with_none_action_on_off,
214
220
  };
215
221
  const mockDoAction = jest.fn();
216
- act(() => {
217
- wrapper = renderer.create(
218
- <ActionGroup actionGroup={actionGroup} doAction={mockDoAction} />
219
- );
222
+ await act(() => {
223
+ wrapper = renderer.create(wrapComponent(actionGroup, mockDoAction));
220
224
  });
221
225
  const instance = wrapper.root;
222
226
  const buttons = instance.findAllByType(TouchableOpacity);
@@ -250,22 +254,20 @@ describe('Test ActionGroup', () => {
250
254
  );
251
255
  });
252
256
 
253
- test('Three_button_action_template Action OnOff isDisplayLock False', () => {
257
+ test('Three_button_action_template Action OnOff isDisplayLock False', async () => {
254
258
  const actionGroup = {
255
259
  ...actionGroupData.configuration,
256
260
  is_display_lock: false,
257
261
  };
258
262
  const mockDoAction = jest.fn();
259
- act(() => {
260
- wrapper = renderer.create(
261
- <ActionGroup actionGroup={actionGroup} doAction={mockDoAction} />
262
- );
263
+ await act(() => {
264
+ wrapper = renderer.create(wrapComponent(actionGroup, mockDoAction));
263
265
  });
264
266
  const instance = wrapper.root;
265
267
  const switchOnOff = instance.findAllByType(Switch);
266
268
  expect(switchOnOff.length).toEqual(0);
267
269
  });
268
- test('render ActionGroup one_button_action_template', () => {
270
+ test('render ActionGroup one_button_action_template', async () => {
269
271
  const mockDoAction = jest.fn();
270
272
  const actionGroup = {
271
273
  template: 'one_button_action_template',
@@ -276,10 +278,8 @@ describe('Test ActionGroup', () => {
276
278
  text: 'UP',
277
279
  },
278
280
  };
279
- act(() => {
280
- wrapper = renderer.create(
281
- <ActionGroup actionGroup={actionGroup} doAction={mockDoAction} />
282
- );
281
+ await act(() => {
282
+ wrapper = renderer.create(wrapComponent(actionGroup, mockDoAction));
283
283
  });
284
284
  const instance = wrapper.root;
285
285
  const buttons = instance.findAllByType(TouchableOpacity);
@@ -291,7 +291,7 @@ describe('Test ActionGroup', () => {
291
291
  expect(mockDoAction).toHaveBeenCalledWith(action_data);
292
292
  });
293
293
 
294
- test('render ActionGroup on_off_button_action_template', () => {
294
+ test('render ActionGroup on_off_button_action_template', async () => {
295
295
  const mockDoAction = jest.fn();
296
296
  const actionGroup = {
297
297
  template: 'on_off_button_action_template',
@@ -304,14 +304,8 @@ describe('Test ActionGroup', () => {
304
304
  text_off: 'OFF',
305
305
  },
306
306
  };
307
- act(() => {
308
- wrapper = renderer.create(
309
- <ActionGroup
310
- actionGroup={actionGroup}
311
- doAction={mockDoAction}
312
- sensor={{}}
313
- />
314
- );
307
+ await act(() => {
308
+ wrapper = renderer.create(wrapComponent(actionGroup, mockDoAction, {}));
315
309
  });
316
310
  const instance = wrapper.root;
317
311
  const buttons = instance.findAllByType(TouchableOpacity);
@@ -322,7 +316,7 @@ describe('Test ActionGroup', () => {
322
316
  expect(mockDoAction).toHaveBeenCalledTimes(1);
323
317
  });
324
318
 
325
- test('render ActionGroup NumberUpDownActionTemplate', () => {
319
+ test('render ActionGroup NumberUpDownActionTemplate', async () => {
326
320
  const mockDoAction = jest.fn();
327
321
  const actionGroup = {
328
322
  template: 'NumberUpDownActionTemplate',
@@ -334,14 +328,8 @@ describe('Test ActionGroup', () => {
334
328
  text_format: '{number} *C',
335
329
  },
336
330
  };
337
- act(() => {
338
- wrapper = renderer.create(
339
- <ActionGroup
340
- actionGroup={actionGroup}
341
- doAction={mockDoAction}
342
- sensor={{}}
343
- />
344
- );
331
+ await act(() => {
332
+ wrapper = renderer.create(wrapComponent(actionGroup, mockDoAction, {}));
345
333
  });
346
334
  const instance = wrapper.root;
347
335
  const text = instance.findByType(Text);
@@ -351,7 +339,7 @@ describe('Test ActionGroup', () => {
351
339
  expect(touchs).toHaveLength(2);
352
340
  });
353
341
 
354
- test('render ActionGroup StatesGridActionTemplate', () => {
342
+ test('render ActionGroup StatesGridActionTemplate', async () => {
355
343
  const mockDoAction = jest.fn();
356
344
  const actionGroup = {
357
345
  template: 'StatesGridActionTemplate',
@@ -377,14 +365,8 @@ describe('Test ActionGroup', () => {
377
365
  ],
378
366
  },
379
367
  };
380
- act(() => {
381
- wrapper = renderer.create(
382
- <ActionGroup
383
- actionGroup={actionGroup}
384
- doAction={mockDoAction}
385
- sensor={{}}
386
- />
387
- );
368
+ await act(() => {
369
+ wrapper = renderer.create(wrapComponent(actionGroup, mockDoAction, {}));
388
370
  });
389
371
  const instance = wrapper.root;
390
372
  const texts = instance.findAllByType(Text);
@@ -418,50 +400,6 @@ describe('Test ActionGroup', () => {
418
400
  expect(touchs[1].props.style).toEqual([buttonStyle, OnOffStyle.OFF]);
419
401
  });
420
402
 
421
- test('render ActionGroup OptionsDropdownActionTemplate', () => {
422
- const mockDoAction = jest.fn();
423
- const actionGroup = {
424
- template: 'OptionsDropdownActionTemplate',
425
- configuration: {
426
- action_data,
427
- config: 5,
428
- action: 'e5d23347-ee31-4fe3-9fb5-bbce05bf4b61',
429
- options: [
430
- {
431
- text: 'Level1',
432
- value: 1,
433
- },
434
- {
435
- text: 'Level2',
436
- value: 2,
437
- },
438
- ],
439
- icon: 'slack',
440
- },
441
- };
442
- act(() => {
443
- wrapper = renderer.create(
444
- <ActionGroup
445
- actionGroup={actionGroup}
446
- doAction={mockDoAction}
447
- sensor={{}}
448
- />
449
- );
450
- });
451
- const instance = wrapper.root;
452
-
453
- const icon = instance.findByType(IconComponent);
454
- expect(icon.props.icon).toEqual('slack');
455
-
456
- const texts = instance.findAllByType(Text);
457
- const radioCircles = instance.findAllByType(RadioCircle);
458
- expect(texts[1].props.children).toEqual('Level1'); // selectedOption, get first one
459
- expect(radioCircles[0].props.active).toBeTruthy(); // radioCircle tick
460
-
461
- const touchs = instance.findAllByType(TouchableOpacity);
462
- expect(touchs).toHaveLength(5); // show-hide alert + 2 options + onDone
463
- });
464
-
465
403
  test('render TimerActionTemplate', async () => {
466
404
  Date.now = jest.fn(() => new Date('2021-09-09T10:00:00.000Z'));
467
405
  const actionGroup = {
@@ -474,19 +412,13 @@ describe('Test ActionGroup', () => {
474
412
  },
475
413
  };
476
414
  const mockDoAction = jest.fn();
477
- act(() => {
478
- wrapper = renderer.create(
479
- <ActionGroup
480
- actionGroup={actionGroup}
481
- doAction={mockDoAction}
482
- sensor={{}}
483
- />
484
- );
415
+ await act(() => {
416
+ wrapper = renderer.create(wrapComponent(actionGroup, mockDoAction, {}));
485
417
  });
486
418
  const instance = wrapper.root;
487
419
 
488
420
  const texts = instance.findAllByType(Text);
489
- expect(texts).toHaveLength(2);
421
+ expect(texts).toHaveLength(5);
490
422
  expect(texts[0].props.children).toEqual('Timer');
491
423
 
492
424
  const switchButton = instance.findByType(Switch);
@@ -1,7 +1,8 @@
1
- import { t } from 'i18n-js';
1
+ import { useTranslations } from '../../../hooks/Common/useTranslations';
2
2
  import { useCallback, useState } from 'react';
3
3
 
4
4
  export const useDropdownAction = () => {
5
+ const t = useTranslations();
5
6
  const [stateAlert, setStateAlert] = useState({
6
7
  visible: false,
7
8
  title: 'Fan Speed',
@@ -0,0 +1,14 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { Colors } from '../../configs';
3
+
4
+ export default StyleSheet.create({
5
+ popoverStyle: {
6
+ width: '100%',
7
+ backgroundColor: Colors.White,
8
+ borderRadius: 10,
9
+ },
10
+ modalHeader: {
11
+ paddingLeft: 16,
12
+ paddingRight: 16,
13
+ },
14
+ });
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import { TouchableOpacity } from 'react-native';
3
+ import Text from '../Text';
4
+ import styles from './OnOffButtonActionStyles';
5
+
6
+ const OnOffButtonAction = ({ configuration, onPress }) => {
7
+ const { text_on, text_off, action_on, action_off } = configuration;
8
+ const onPressActionOn = () => {
9
+ onPress &&
10
+ onPress({
11
+ name: text_on,
12
+ action: action_on,
13
+ });
14
+ };
15
+
16
+ const onPressActionOff = () => {
17
+ onPress &&
18
+ onPress({
19
+ name: text_off,
20
+ action: action_off,
21
+ });
22
+ };
23
+
24
+ return (
25
+ <>
26
+ <TouchableOpacity onPress={onPressActionOn}>
27
+ <Text type="H4" style={styles.textwithline}>
28
+ {text_on}
29
+ </Text>
30
+ </TouchableOpacity>
31
+ <TouchableOpacity onPress={onPressActionOff}>
32
+ <Text type="H4" style={styles.textwithline}>
33
+ {text_off}
34
+ </Text>
35
+ </TouchableOpacity>
36
+ </>
37
+ );
38
+ };
39
+
40
+ export default OnOffButtonAction;
@@ -0,0 +1,11 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { Colors } from '../../configs';
3
+
4
+ export default StyleSheet.create({
5
+ textwithline: {
6
+ paddingBottom: 16,
7
+ paddingTop: 16,
8
+ borderBottomWidth: 1,
9
+ borderColor: Colors.Gray4,
10
+ },
11
+ });
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { TouchableOpacity } from 'react-native';
3
+ import Text from '../Text';
4
+ import styles from './OneButtonActionStyles';
5
+
6
+ const OneButtonAction = ({ configuration, onPress }) => {
7
+ const { text, action } = configuration;
8
+ const onPressAction = () => {
9
+ onPress &&
10
+ onPress({
11
+ name: text,
12
+ action: action,
13
+ });
14
+ };
15
+
16
+ return (
17
+ <>
18
+ <TouchableOpacity onPress={onPressAction}>
19
+ <Text type="H4" style={styles.textwithline}>
20
+ {text}
21
+ </Text>
22
+ </TouchableOpacity>
23
+ </>
24
+ );
25
+ };
26
+ export default OneButtonAction;
@@ -0,0 +1,11 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { Colors } from '../../configs';
3
+
4
+ export default StyleSheet.create({
5
+ textwithline: {
6
+ paddingBottom: 16,
7
+ paddingTop: 16,
8
+ borderBottomWidth: 1,
9
+ borderColor: Colors.Gray4,
10
+ },
11
+ });
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ import { TouchableOpacity } from 'react-native';
3
+ import Text from '../Text';
4
+ import styles from './ThreeButtonActionStyles';
5
+
6
+ const ThreeButtonAction = ({ configuration, onPress }) => {
7
+ const { text1, text2, text3, action1, action2, action3 } = configuration;
8
+ const onPressAction1 = () => {
9
+ onPress &&
10
+ onPress({
11
+ name: text1,
12
+ action: action1,
13
+ });
14
+ };
15
+
16
+ const onPressAction2 = () => {
17
+ onPress &&
18
+ onPress({
19
+ name: text2,
20
+ action: action2,
21
+ });
22
+ };
23
+
24
+ const onPressAction3 = () => {
25
+ onPress &&
26
+ onPress({
27
+ name: text3,
28
+ action: action3,
29
+ });
30
+ };
31
+
32
+ return (
33
+ <>
34
+ <TouchableOpacity onPress={onPressAction1}>
35
+ <Text type="H4" style={styles.textwithline}>
36
+ {text1}
37
+ </Text>
38
+ </TouchableOpacity>
39
+
40
+ <TouchableOpacity onPress={onPressAction2}>
41
+ <Text type="H4" style={styles.textwithline}>
42
+ {text2}
43
+ </Text>
44
+ </TouchableOpacity>
45
+
46
+ <TouchableOpacity onPress={onPressAction3}>
47
+ <Text type="H4" style={styles.textwithline}>
48
+ {text3}
49
+ </Text>
50
+ </TouchableOpacity>
51
+ </>
52
+ );
53
+ };
54
+
55
+ export default ThreeButtonAction;
@@ -0,0 +1,11 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { Colors } from '../../configs';
3
+
4
+ export default StyleSheet.create({
5
+ textwithline: {
6
+ paddingBottom: 16,
7
+ paddingTop: 16,
8
+ borderBottomWidth: 1,
9
+ borderColor: Colors.Gray4,
10
+ },
11
+ });
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import renderer, { act } from 'react-test-renderer';
3
+ import { TouchableOpacity } from 'react-native';
4
+
5
+ import OnOffButtonAction from '../OnOffButtonAction';
6
+ import { SCProvider } from '../../../context';
7
+ import { mockSCStore } from '../../../context/mockStore';
8
+
9
+ const wrapComponent = (configuration, onPress) => (
10
+ <SCProvider initState={mockSCStore({})}>
11
+ <OnOffButtonAction configuration={configuration} onPress={onPress} />
12
+ </SCProvider>
13
+ );
14
+
15
+ describe('Test OnOffButtonAction', () => {
16
+ let tree;
17
+
18
+ test('test onPress', () => {
19
+ const configuration = {};
20
+ const mockFuntion = jest.fn();
21
+ act(() => {
22
+ tree = renderer.create(wrapComponent(configuration, mockFuntion));
23
+ });
24
+ const instance = tree.root;
25
+ const touchOpacity = instance.findAllByType(TouchableOpacity);
26
+
27
+ expect(touchOpacity).toHaveLength(2);
28
+ act(() => {
29
+ touchOpacity[0].props.onPress();
30
+ touchOpacity[1].props.onPress();
31
+ });
32
+ expect(mockFuntion).toHaveBeenCalled();
33
+ });
34
+ });
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import renderer, { act } from 'react-test-renderer';
3
+ import { TouchableOpacity } from 'react-native';
4
+
5
+ import OneButtonAction from '../OneButtonAction';
6
+ import { SCProvider } from '../../../context';
7
+ import { mockSCStore } from '../../../context/mockStore';
8
+
9
+ const wrapComponent = (configuration, onPress) => (
10
+ <SCProvider initState={mockSCStore({})}>
11
+ <OneButtonAction configuration={configuration} onPress={onPress} />
12
+ </SCProvider>
13
+ );
14
+
15
+ describe('Test OneButtonAction', () => {
16
+ let tree;
17
+
18
+ test('test onPress', () => {
19
+ const configuration = {};
20
+ const mockFuntion = jest.fn();
21
+ act(() => {
22
+ tree = renderer.create(wrapComponent(configuration, mockFuntion));
23
+ });
24
+ const instance = tree.root;
25
+ const touchOpacity = instance.findAllByType(TouchableOpacity);
26
+
27
+ expect(touchOpacity).toHaveLength(1);
28
+ act(() => {
29
+ touchOpacity[0].props.onPress();
30
+ });
31
+ expect(mockFuntion).toHaveBeenCalled();
32
+ });
33
+ });
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import renderer, { act } from 'react-test-renderer';
3
+ import { TouchableOpacity } from 'react-native';
4
+
5
+ import ThreeButtonAction from '../ThreeButtonAction';
6
+ import { SCProvider } from '../../../context';
7
+ import { mockSCStore } from '../../../context/mockStore';
8
+
9
+ const wrapComponent = (configuration, onPress) => (
10
+ <SCProvider initState={mockSCStore({})}>
11
+ <ThreeButtonAction configuration={configuration} onPress={onPress} />
12
+ </SCProvider>
13
+ );
14
+
15
+ describe('Test ThreeButtonAction', () => {
16
+ let tree;
17
+
18
+ test('test onPress', () => {
19
+ const configuration = {};
20
+ const mockFuntion = jest.fn();
21
+ act(() => {
22
+ tree = renderer.create(wrapComponent(configuration, mockFuntion));
23
+ });
24
+ const instance = tree.root;
25
+ const touchOpacity = instance.findAllByType(TouchableOpacity);
26
+
27
+ expect(touchOpacity).toHaveLength(3);
28
+ act(() => {
29
+ touchOpacity[0].props.onPress();
30
+ touchOpacity[1].props.onPress();
31
+ touchOpacity[2].props.onPress();
32
+ });
33
+ expect(mockFuntion).toHaveBeenCalled();
34
+ });
35
+ });
@@ -0,0 +1,71 @@
1
+ import React, { useState } from 'react';
2
+ import renderer, { act } from 'react-test-renderer';
3
+
4
+ import ActionTemplate from '..';
5
+ import { SCProvider } from '../../../context';
6
+ import { mockSCStore } from '../../../context/mockStore';
7
+ import SelectActionCard from '../../SelectActionCard';
8
+ import Modal from 'react-native-modal';
9
+
10
+ const mockSetState = jest.fn();
11
+ jest.mock('react', () => {
12
+ return {
13
+ ...jest.requireActual('react'),
14
+ memo: (x) => x,
15
+ useState: jest.fn((init) => [init, mockSetState]),
16
+ };
17
+ });
18
+
19
+ const wrapComponent = (data, onSelectAction, action) => (
20
+ <SCProvider initState={mockSCStore({})}>
21
+ <ActionTemplate
22
+ data={data}
23
+ onSelectAction={onSelectAction}
24
+ action={action}
25
+ />
26
+ </SCProvider>
27
+ );
28
+
29
+ describe('Test ActionTemplate', () => {
30
+ let tree;
31
+ test('test state visible', () => {
32
+ const data = [
33
+ {
34
+ title: '',
35
+ template: 'three_button_action_template',
36
+ configuration: {
37
+ action1: '94ae262d-46e3-42ff-9d10-516831ecc830',
38
+ action2: '94ae262d-46e3-42ff-9d10-516831ecc830',
39
+ action3: '94ae262d-46e3-42ff-9d10-516831ecc830',
40
+ icon1: 'up',
41
+ icon2: 'stop',
42
+ icon3: 'down',
43
+ text1: 'OPEN',
44
+ text2: 'STOP',
45
+ text3: 'CLOSE',
46
+ text_lock: 'Door lock',
47
+ is_display_lock: true,
48
+ },
49
+ },
50
+ ];
51
+ const setState = jest.fn();
52
+ const mockFunction = jest.fn();
53
+ useState.mockImplementation((init) => [init, setState]);
54
+ act(() => {
55
+ tree = renderer.create(wrapComponent(data, mockFunction, mockFunction));
56
+ });
57
+ const instance = tree.root;
58
+
59
+ const selectActionCard = instance.findByType(SelectActionCard);
60
+ const modal = instance.findByType(Modal);
61
+ act(() => {
62
+ selectActionCard.props.onPress();
63
+ });
64
+ expect(setState).toHaveBeenCalledWith(true);
65
+
66
+ act(() => {
67
+ modal.props.onBackButtonPress();
68
+ });
69
+ expect(setState).toHaveBeenCalledWith(false);
70
+ });
71
+ });