@eohjsc/react-native-smart-city 0.2.99 → 0.3.2

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 (224) hide show
  1. package/README.md +1 -1
  2. package/package.json +6 -4
  3. package/react-native-smart-city.podspec +1 -0
  4. package/src/commons/Action/ItemQuickAction.js +11 -2
  5. package/src/commons/Action/__test__/ItemQuickAction.test.js +11 -6
  6. package/src/commons/ActionGroup/CurtainButtonTemplate.js +10 -5
  7. package/src/commons/ActionGroup/NumberUpDownActionTemplate.js +31 -20
  8. package/src/commons/ActionGroup/OnOffSmartLock/AutoLock/__test__/index.test.js +4 -0
  9. package/src/commons/ActionGroup/OnOffSmartLock/PasscodeList/ItemPasscode.js +1 -1
  10. package/src/commons/ActionGroup/OnOffSmartLock/PasscodeList/__test__/ItemPasscode.test.js +24 -0
  11. package/src/commons/ActionGroup/OnOffSmartLock/SetupGeneratePasscode/__test__/index.test.js +14 -0
  12. package/src/commons/ActionGroup/OptionsDropdownActionTemplate.js +1 -1
  13. package/src/commons/ActionGroup/SmartTiviActionTemplate/SmartTiviActionTemplate.js +3 -2
  14. package/src/commons/ActionGroup/StatesGridActionTemplate.js +8 -4
  15. package/src/commons/ActionGroup/TimerActionTemplate.js +2 -2
  16. package/src/commons/ActionGroup/TwoButtonTemplate/index.js +0 -1
  17. package/src/commons/ActionGroup/__test__/CurtainButtonTemplate.test.js +53 -4
  18. package/src/commons/ActionGroup/__test__/NumberUpDownTemplate.test.js +45 -48
  19. package/src/commons/ActionGroup/__test__/StatesGridActionTemplate.test.js +77 -0
  20. package/src/commons/ActionGroup/__test__/TimerActionTemplate.test.js +58 -6
  21. package/src/commons/ActionGroup/__test__/TwoButtonTemplate.test.js +49 -1
  22. package/src/commons/ActionGroup/__test__/index.test.js +137 -2
  23. package/src/commons/Automate/ItemAutomate.js +1 -3
  24. package/src/commons/Calendar/__test__/Calendar.test.js +33 -0
  25. package/src/commons/Connecting/__test__/Connecting.test.js +19 -2
  26. package/src/commons/ConnectingProcess/DeviceItem/DeviceItem.js +7 -3
  27. package/src/commons/ConnectingProcess/DeviceItem/DeviceItemStyles.js +8 -11
  28. package/src/commons/ConnectingProcess/__test__/Connecting.test.js +136 -3
  29. package/src/commons/ConnectingProcess/__test__/DeviceItem.test.js +3 -2
  30. package/src/commons/ConnectingProcess/index.js +72 -25
  31. package/src/commons/Dashboard/MyPinnedSharedUnit/__test__/MyPinnedSharedUnit.test.js +16 -13
  32. package/src/commons/Dashboard/MyPinnedSharedUnit/index.js +1 -1
  33. package/src/commons/Dashboard/MyUnit/__test__/MyUnit.test.js +0 -5
  34. package/src/commons/Device/ConnectedViewHeader.js +1 -1
  35. package/src/commons/Device/Hanet/ItemHanetDevice.test.js +58 -0
  36. package/src/commons/Device/HistoryChart.js +3 -3
  37. package/src/commons/Device/ItemDevice.js +15 -11
  38. package/src/commons/Device/LinearChart.js +15 -0
  39. package/src/commons/Device/SonosSpeaker/index.js +1 -1
  40. package/src/commons/Explore/__test__/CityItem.test.js +33 -54
  41. package/src/commons/FieldTemplate/ChooseUserField/__test__/index.test.js +19 -14
  42. package/src/commons/FieldTemplate/PasscodeField/__test__/index.test.js +0 -3
  43. package/src/commons/FieldTemplate/ScheduleField/__test__/index.test.js +0 -3
  44. package/src/commons/FieldTemplate/ScheduleField/index.js +2 -2
  45. package/src/commons/Header/HeaderCustom.js +2 -1
  46. package/src/commons/HorizontalPicker/index.js +2 -2
  47. package/src/commons/MediaPlayerDetail/Styles/MediaPlayerDetailStyles.js +0 -6
  48. package/src/commons/MediaPlayerDetail/index.js +24 -55
  49. package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +0 -1
  50. package/src/commons/SubUnit/Favorites/index.js +2 -3
  51. package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +8 -35
  52. package/src/commons/SubUnit/OneTap/index.js +1 -2
  53. package/src/commons/SubUnit/ShortDetail.js +25 -9
  54. package/src/commons/SubUnit/__test__/Item.test.js +0 -1
  55. package/src/commons/SubUnit/__test__/ShortDetail.test.js +8 -1
  56. package/src/commons/Unit/SharedUnit.js +1 -0
  57. package/src/commons/Unit/__test__/SharedUnit.test.js +38 -183
  58. package/src/commons/UnitSummary/ConfigHistoryChart/index.js +2 -13
  59. package/src/commons/UnitSummary/ConfigHistoryChart.js +22 -13
  60. package/src/commons/WheelDateTimePicker/index.js +2 -2
  61. package/src/configs/API.js +85 -144
  62. package/src/configs/Constants.js +24 -0
  63. package/src/configs/SCConfig.js +2 -0
  64. package/src/context/actionType.ts +8 -0
  65. package/src/context/mockStore.ts +10 -0
  66. package/src/context/reducer.ts +38 -2
  67. package/src/hooks/Common/index.js +2 -0
  68. package/src/hooks/Common/useGGHomeDeviceConnected.js +16 -0
  69. package/src/hooks/Common/useGetIdUser.js +1 -5
  70. package/src/hooks/Common/useSensorsStatus.js +4 -4
  71. package/src/hooks/IoT/__test__/useGGHomeConnection.test.js +198 -0
  72. package/src/hooks/IoT/__test__/useRemoteControl.test.js +198 -0
  73. package/src/hooks/IoT/index.js +4 -0
  74. package/src/hooks/IoT/useGGHomeConnection.js +91 -0
  75. package/src/hooks/IoT/useRemoteControl.js +79 -0
  76. package/src/hooks/index.js +4 -0
  77. package/src/hooks/useReceiveNotifications.js +9 -5
  78. package/src/iot/Monitor.js +3 -2
  79. package/src/iot/RemoteControl/Bluetooth.js +1 -1
  80. package/src/iot/RemoteControl/GoogleHome.js +75 -49
  81. package/src/iot/RemoteControl/Internet.js +1 -1
  82. package/src/iot/RemoteControl/__test__/GoogleHome.test.js +95 -48
  83. package/src/iot/RemoteControl/__test__/Internet.test.js +18 -7
  84. package/src/iot/RemoteControl/__test__/LgThinq.test.js +36 -177
  85. package/src/iot/RemoteControl/index.js +52 -52
  86. package/src/screens/ActivityLog/__test__/index.test.js +38 -23
  87. package/src/screens/ActivityLog/hooks/__test__/index.test.js +51 -90
  88. package/src/screens/ActivityLog/hooks/index.js +1 -1
  89. package/src/screens/ActivityLog/index.js +2 -2
  90. package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +13 -24
  91. package/src/screens/AddCommon/__test__/SelectUnit.test.js +9 -33
  92. package/src/screens/AddLocationMaps/index.js +5 -4
  93. package/src/screens/AddNewAction/SelectAction.js +8 -8
  94. package/src/screens/AddNewAction/SetupSensor.js +7 -7
  95. package/src/screens/AddNewAction/__test__/SelectAction.test.js +10 -91
  96. package/src/screens/AddNewAction/__test__/SelectSensorDevices.test.js +40 -26
  97. package/src/screens/AddNewDevice/ConnectingDevices.js +3 -3
  98. package/src/screens/AddNewDevice/__test__/AddNewDevice.test.js +34 -33
  99. package/src/screens/AddNewDevice/__test__/ConnectDevices.test.js +0 -4
  100. package/src/screens/AddNewDevice/__test__/ConnectingDevices.test.js +21 -21
  101. package/src/screens/AddNewDevice/hooks/ConnectDevices.js +1 -1
  102. package/src/screens/AddNewGateway/PlugAndPlay/ConnectWifiWarning.js +23 -17
  103. package/src/screens/AddNewGateway/PlugAndPlay/GatewayWifiList.js +3 -3
  104. package/src/screens/AddNewGateway/SetupGatewayWifi.js +1 -0
  105. package/src/screens/AddNewGateway/__test__/AddNewGateway.test.js +4 -6
  106. package/src/screens/AddNewGateway/__test__/ConnectedGateway.test.js +0 -4
  107. package/src/screens/AddNewGateway/__test__/ConnectingGateway.test.js +5 -29
  108. package/src/screens/AddNewGateway/__test__/SelectGateway.test.js +0 -4
  109. package/src/screens/AddNewGateway/__test__/SetupGateway.test.js +0 -4
  110. package/src/screens/AddNewOneTap/__test__/AddNewOneTap.test.js +9 -23
  111. package/src/screens/AllCamera/index.js +4 -4
  112. package/src/screens/Automate/MultiUnits.js +8 -8
  113. package/src/screens/Automate/__test__/MultiUnits.test.js +6 -9
  114. package/src/screens/Automate/__test__/index.test.js +7 -12
  115. package/src/screens/Automate/index.js +3 -3
  116. package/src/screens/ConfirmUnitDeletion/__test__/ConfirmUnitDeletion.test.js +36 -8
  117. package/src/screens/ConfirmUnitDeletion/index.js +7 -1
  118. package/src/screens/Device/EditDevice/__test__/EditDevice.test.js +71 -22
  119. package/src/screens/Device/EditDevice/index.js +2 -2
  120. package/src/screens/Device/__test__/detail.test.js +32 -85
  121. package/src/screens/Device/components/DetailHistoryChart.js +1 -1
  122. package/src/screens/Device/components/SensorConnectStatusViewHeader.js +1 -0
  123. package/src/screens/Device/components/SensorDisplayItem.js +5 -2
  124. package/src/screens/Device/detail.js +53 -22
  125. package/src/screens/Device/hooks/useDisconnectedDevice.js +4 -4
  126. package/src/screens/Device/hooks/useFavoriteDevice.js +5 -9
  127. package/src/screens/DeviceInfo/__test__/index.test.js +0 -2
  128. package/src/screens/EditActionsList/index.js +1 -1
  129. package/src/screens/EmergencyContacts/EmergencyContactsSelectContacts.js +1 -1
  130. package/src/screens/EmergencyContacts/__test__/EmergencyContactAddNew.test.js +7 -19
  131. package/src/screens/EmergencyContacts/__test__/EmergencyContactList.test.js +18 -14
  132. package/src/screens/EmergencyContacts/__test__/EmergencyContactsSelectContacts.test.js +30 -31
  133. package/src/screens/EmergencySetting/components/DropDownItem.js +2 -2
  134. package/src/screens/EnterPassword/__test__/EnterPassword.test.js +41 -25
  135. package/src/screens/GuestInfo/__test__/index.test.js +13 -40
  136. package/src/screens/HanetCamera/Detail.js +1 -1
  137. package/src/screens/HanetCamera/__test__/CaptureFaceID.test.js +8 -12
  138. package/src/screens/HanetCamera/__test__/Detail.test.js +27 -42
  139. package/src/screens/HanetCamera/__test__/ManageAccess.test.js +8 -5
  140. package/src/screens/HanetCamera/__test__/MemberInfo.test.js +10 -32
  141. package/src/screens/HanetCamera/components/RequestFaceIDPopup.js +3 -2
  142. package/src/screens/HanetCamera/hooks/__test__/useHanetCheckinData.test.js +43 -35
  143. package/src/screens/HanetCamera/hooks/__test__/useHanetPlaceMembers.test.js +10 -21
  144. package/src/screens/HanetCamera/hooks/useHanetCheckinData.js +11 -11
  145. package/src/screens/HanetCamera/hooks/useHanetPlaceMembers.js +11 -11
  146. package/src/screens/ManageAccess/__test__/ManageAccess.test.js +33 -22
  147. package/src/screens/ManageAccess/hooks/__test__/useManageAccess.test.js +44 -45
  148. package/src/screens/ManageAccess/hooks/index.js +7 -4
  149. package/src/screens/ManageAccess/index.js +1 -1
  150. package/src/screens/MoveToAnotherSubUnit/__test__/index.test.js +35 -12
  151. package/src/screens/MoveToAnotherSubUnit/index.js +5 -5
  152. package/src/screens/Notification/__test__/Notification.test.js +14 -25
  153. package/src/screens/Notification/__test__/NotificationItem.test.js +8 -7
  154. package/src/screens/Notification/components/NotificationItem.js +17 -20
  155. package/src/screens/Notification/index.js +9 -2
  156. package/src/screens/PlayBackCamera/Timer.js +2 -2
  157. package/src/screens/PlayBackCamera/__test__/index.test.js +87 -2
  158. package/src/screens/PlayBackCamera/index.js +22 -6
  159. package/src/screens/ScanChipQR/__test__/ScanChipQR.test.js +7 -20
  160. package/src/screens/ScanChipQR/hooks/index.js +15 -16
  161. package/src/screens/ScanSensorQR/__test__/ScanSensorQR.test.js +8 -24
  162. package/src/screens/ScriptDetail/__test__/index.test.js +17 -86
  163. package/src/screens/ScriptDetail/index.js +16 -11
  164. package/src/screens/SelectUnit/__test__/index.test.js +11 -54
  165. package/src/screens/SelectUnit/index.js +4 -2
  166. package/src/screens/SetSchedule/index.js +9 -9
  167. package/src/screens/SharedUnit/__test__/TabHeader.test.js +0 -2
  168. package/src/screens/Sharing/Components/SensorItem.js +10 -12
  169. package/src/screens/Sharing/InfoMemberUnit.js +1 -1
  170. package/src/screens/Sharing/SelectPermission.js +121 -76
  171. package/src/screens/Sharing/__test__/InfoMemberUnit.test.js +47 -29
  172. package/src/screens/Sharing/__test__/MemberList.test.js +13 -127
  173. package/src/screens/Sharing/__test__/MemberList2.test.js +80 -0
  174. package/src/screens/Sharing/__test__/SelectPermission.test.js +28 -38
  175. package/src/screens/Sharing/__test__/SelectUser.test.js +17 -38
  176. package/src/screens/SideMenuDetail/__test__/index.test.js +12 -23
  177. package/src/screens/SideMenuDetail/index.js +2 -3
  178. package/src/screens/SmartIr/components/GroupButtonByType/GroupButtonByType.js +3 -2
  179. package/src/screens/SubUnit/Detail.js +1 -2
  180. package/src/screens/SubUnit/ManageSubUnit.js +12 -7
  181. package/src/screens/SubUnit/__test__/AddSubUnit.test.js +21 -67
  182. package/src/screens/SubUnit/__test__/Detail.test.js +31 -8
  183. package/src/screens/SubUnit/__test__/EditSubUnit.test.js +21 -89
  184. package/src/screens/SubUnit/__test__/ManageSubUnit.test.js +27 -1
  185. package/src/screens/SubUnit/hooks/__test__/useManageSubUnit.test.js +48 -45
  186. package/src/screens/SubUnit/hooks/useManageSubUnit.js +7 -7
  187. package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +14 -90
  188. package/src/screens/Unit/ChooseLocation.js +7 -14
  189. package/src/screens/Unit/Detail.js +30 -75
  190. package/src/screens/Unit/ManageUnit.js +1 -0
  191. package/src/screens/Unit/SelectAddress.js +34 -21
  192. package/src/screens/Unit/SmartAccount.js +4 -4
  193. package/src/screens/Unit/Summaries.js +17 -1
  194. package/src/screens/Unit/__test__/CheckSendEmail.test.js +24 -29
  195. package/src/screens/Unit/__test__/ChooseLocation.test.js +27 -14
  196. package/src/screens/Unit/__test__/Detail.test.js +99 -200
  197. package/src/screens/Unit/__test__/ManageUnit.test.js +18 -42
  198. package/src/screens/Unit/__test__/SelectAddress.test.js +84 -51
  199. package/src/screens/Unit/__test__/SmartAccount.test.js +17 -9
  200. package/src/screens/Unit/__test__/SmartAccountItem.test.js +0 -1
  201. package/src/screens/Unit/__test__/Summaries.test.js +100 -0
  202. package/src/screens/Unit/components/MyAllUnit/__test__/MyAllUnit.test.js +36 -0
  203. package/src/screens/Unit/components/MyAllUnit/__test__/index.test.js +54 -0
  204. package/src/screens/Unit/components/SharedUnit/index.js +1 -0
  205. package/src/screens/Unit/components/__test__/SharedUnit.test.js +31 -34
  206. package/src/screens/Unit/hook/useUnitConnectRemoteDevices.js +50 -0
  207. package/src/screens/Unit/styles.js +4 -0
  208. package/src/screens/UnitSummary/__test__/index.test.js +70 -41
  209. package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +31 -2
  210. package/src/screens/UnitSummary/components/PowerConsumeHistoryChart/__test__/index.test.js +7 -4
  211. package/src/screens/UnitSummary/components/PowerConsumeHistoryChart/index.js +2 -13
  212. package/src/screens/UnitSummary/components/PowerConsumption/__test__/ItemPower.test.js +0 -1
  213. package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +14 -16
  214. package/src/screens/UnitSummary/components/RunningDevices/__test__/index.test.js +11 -2
  215. package/src/screens/UnitSummary/components/RunningDevices/index.js +7 -10
  216. package/src/screens/UnitSummary/components/Temperature/index.js +4 -4
  217. package/src/screens/UnitSummary/components/WaterQuality/Item/index.js +10 -2
  218. package/src/screens/UnitSummary/index.js +15 -1
  219. package/src/utils/Apis/axios.js +46 -31
  220. package/src/utils/Converter/time.js +0 -18
  221. package/src/utils/I18n/translations/en.json +4 -1
  222. package/src/utils/I18n/translations/vi.json +5 -1
  223. package/src/utils/Permission/common.js +67 -0
  224. package/src/utils/Utils.js +11 -7
@@ -15,12 +15,18 @@ import { standardizeCameraScreenSize } from '../../utils/Utils';
15
15
  import Routes from '../../utils/Route';
16
16
  import FastImage from 'react-native-fast-image';
17
17
  import MediaPlayerDetail from '../MediaPlayerDetail';
18
+ import {
19
+ keyPermission,
20
+ OpenSetting,
21
+ permitPermissionFunction,
22
+ } from '../../utils/Permission/common';
23
+ import { RESULTS } from 'react-native-permissions';
18
24
 
19
25
  const { standardizeWidth, standardizeHeight } = standardizeCameraScreenSize(
20
26
  Device.screenWidth - 32
21
27
  );
22
28
 
23
- const ShortDetailSubUnit = ({ unit, station, isGGHomeConnected }) => {
29
+ const ShortDetailSubUnit = ({ unit, station }) => {
24
30
  const t = useTranslations();
25
31
  const { navigate } = useNavigation();
26
32
 
@@ -71,13 +77,24 @@ const ShortDetailSubUnit = ({ unit, station, isGGHomeConnected }) => {
71
77
  };
72
78
 
73
79
  const handleOnAddNew = () => {
74
- navigate(Routes.AddDeviceStack, {
75
- screen: Routes.ScanSensorQR,
76
- params: {
77
- station_id: station?.id,
78
- unit_id: unit.id,
79
- unit_name: unit.name,
80
- },
80
+ permitPermissionFunction(keyPermission.CAMERA, (res) => {
81
+ if (res === RESULTS.GRANTED) {
82
+ navigate(Routes.AddDeviceStack, {
83
+ screen: Routes.ScanSensorQR,
84
+ params: {
85
+ station_id: station?.id,
86
+ unit_id: unit.id,
87
+ unit_name: unit.name,
88
+ },
89
+ });
90
+ return;
91
+ }
92
+ if (res === RESULTS.BLOCKED) {
93
+ OpenSetting(
94
+ t('camera_request_permission'),
95
+ t('camera_request_permission_des')
96
+ );
97
+ }
81
98
  });
82
99
  };
83
100
 
@@ -122,7 +139,6 @@ const ShortDetailSubUnit = ({ unit, station, isGGHomeConnected }) => {
122
139
  sensor={sensor}
123
140
  unit={unit}
124
141
  station={station}
125
- isGGHomeConnected={isGGHomeConnected}
126
142
  serverDown={serverDown}
127
143
  status={getStatus(sensor)}
128
144
  />
@@ -1,4 +1,3 @@
1
- /* eslint-disable promise/prefer-await-to-callbacks */
2
1
  import React from 'react';
3
2
  import { act, create } from 'react-test-renderer';
4
3
  import { TouchableScale } from '../../index';
@@ -1,12 +1,14 @@
1
1
  import React from 'react';
2
2
  import { Image, View } from 'react-native';
3
3
  import { act, create } from 'react-test-renderer';
4
+ import mock from 'react-native-permissions/mock';
4
5
  import { TESTID } from '../../../configs/Constants';
5
6
  import { SCProvider } from '../../../context';
6
7
  import { mockSCStore } from '../../../context/mockStore';
7
8
  import ShortDetailSubUnit from '../ShortDetail';
8
9
  import ItemAddNew from '../../Device/ItemAddNew';
9
10
  import Routes from '../../../utils/Route';
11
+ import { keyPermission } from '../../../utils/Permission/common';
10
12
 
11
13
  const wrapComponent = (props) => (
12
14
  <SCProvider initState={mockSCStore({})}>
@@ -21,6 +23,10 @@ jest.mock('react', () => {
21
23
  };
22
24
  });
23
25
 
26
+ jest.mock('react-native-permissions', () => {
27
+ return mock;
28
+ });
29
+
24
30
  const mockedNavigate = jest.fn();
25
31
  jest.mock('@react-navigation/native', () => {
26
32
  return {
@@ -148,7 +154,7 @@ describe('test ShortDetail Subunit', () => {
148
154
  expect(itemDevice.length).toBe(1);
149
155
  });
150
156
 
151
- test('render ShortDetail add new device', () => {
157
+ test('render ShortDetail add new device', async () => {
152
158
  act(() => {
153
159
  tree = create(wrapComponent(props));
154
160
  });
@@ -157,6 +163,7 @@ describe('test ShortDetail Subunit', () => {
157
163
  act(() => {
158
164
  buttonAddNew.props.onAddNew();
159
165
  });
166
+ await mock.request(keyPermission.CAMERA);
160
167
  expect(mockedNavigate).toHaveBeenCalledWith(Routes.AddDeviceStack, {
161
168
  screen: Routes.ScanSensorQR,
162
169
  params: {
@@ -39,6 +39,7 @@ const SharedUnit = ({
39
39
  }, [renewItem, index, unit, item]);
40
40
  const addPinSharedUnit = useCallback(async () => {
41
41
  const { success } = await axiosPost(API.UNIT.PIN_UNIT(unit.id));
42
+
42
43
  if (success) {
43
44
  item.is_pin = true;
44
45
  renewItem(index);
@@ -1,8 +1,8 @@
1
- import axios from 'axios';
2
1
  import React from 'react';
3
2
  import { create, act } from 'react-test-renderer';
4
3
  import moment from 'moment';
5
4
  import { useNavigation } from '@react-navigation/native';
5
+ import MockAdapter from 'axios-mock-adapter';
6
6
 
7
7
  import SharedUnit from '../SharedUnit';
8
8
  import { TESTID } from '../../../configs/Constants';
@@ -10,8 +10,9 @@ import { API } from '../../../configs';
10
10
  import Routes from '../../../utils/Route';
11
11
  import { SCProvider } from '../../../context';
12
12
  import { mockSCStore } from '../../../context/mockStore';
13
+ import api from '../../../utils/Apis/axios';
13
14
 
14
- jest.mock('axios');
15
+ const mock = new MockAdapter(api.axiosInstance);
15
16
 
16
17
  const mockNavigate = jest.fn();
17
18
  jest.mock('@react-navigation/native', () => {
@@ -38,8 +39,6 @@ describe('Test SharedUnit', () => {
38
39
  let tree, item, unit;
39
40
 
40
41
  beforeEach(() => {
41
- axios.post.mockClear();
42
-
43
42
  unit = {
44
43
  background: '',
45
44
  icon: '',
@@ -61,6 +60,12 @@ describe('Test SharedUnit', () => {
61
60
 
62
61
  test('test create SharedUnit unit is not pin, not star', async () => {
63
62
  const navigation = useNavigation();
63
+ const mockedRenewItem = jest.fn();
64
+ await act(async () => {
65
+ tree = await create(
66
+ wrapComponent(item, navigation, true, mockedRenewItem)
67
+ );
68
+ });
64
69
 
65
70
  await act(async () => {
66
71
  tree = await create(wrapComponent(item, navigation));
@@ -72,34 +77,39 @@ describe('Test SharedUnit', () => {
72
77
  act(() => {
73
78
  touchSharedUnit.props.onPress();
74
79
  });
75
- expect(mockNavigate).toHaveBeenCalledWith(Routes.UnitStack, {
76
- screen: Routes.UnitDetail,
77
- params: {
78
- unitId: 3,
79
- unitData: unit,
80
- },
81
- });
82
-
83
80
  const iconRemovePinSharedUnit = instance.findAll(
84
81
  (el) => el.props.testID === TESTID.ICON_REMOVE_PIN_SHARED_UNIT + '-69'
85
82
  );
86
- expect(iconRemovePinSharedUnit).toHaveLength(0);
87
-
88
83
  const iconAddPinSharedUnit = instance.find(
89
84
  (el) => el.props.testID === TESTID.ICON_ADD_PIN_SHARED_UNIT + '-69'
90
85
  );
86
+ mock.onPost(API.UNIT.PIN_UNIT(3)).reply(200);
87
+ act(() => {
88
+ iconAddPinSharedUnit.props.onPress();
89
+ });
90
+ mock.onPost(API.UNIT.PIN_UNIT(3)).reply(400);
91
91
  act(() => {
92
92
  iconAddPinSharedUnit.props.onPress();
93
93
  });
94
- expect(axios.post).toHaveBeenCalledWith(API.UNIT.PIN_UNIT(3));
95
-
96
94
  const iconAddStarSharedUnit = instance.find(
97
95
  (el) => el.props.testID === TESTID.ICON_ADD_STAR_SHARED_UNIT + '-69'
98
96
  );
97
+ mock.onPost(API.UNIT.STAR_UNIT(3)).reply(200);
99
98
  act(() => {
100
99
  iconAddStarSharedUnit.props.onPress();
101
100
  });
102
- expect(axios.post).toHaveBeenCalledWith(API.UNIT.STAR_UNIT(3));
101
+ mock.onPost(API.UNIT.STAR_UNIT(3)).reply(400);
102
+ act(() => {
103
+ iconAddStarSharedUnit.props.onPress();
104
+ });
105
+ expect(iconRemovePinSharedUnit).toHaveLength(0);
106
+ expect(mockNavigate).toHaveBeenCalledWith(Routes.UnitStack, {
107
+ screen: Routes.UnitDetail,
108
+ params: {
109
+ unitId: 3,
110
+ unitData: unit,
111
+ },
112
+ });
103
113
  });
104
114
 
105
115
  test('test create SharedUnit unit without unit owner', async () => {
@@ -148,183 +158,28 @@ describe('Test SharedUnit', () => {
148
158
  const iconRemovePinSharedUnit = instance.find(
149
159
  (el) => el.props.testID === TESTID.ICON_REMOVE_PIN_SHARED_UNIT + '-69'
150
160
  );
161
+ mock.onPost(API.UNIT.UNPIN_UNIT(3)).reply(200);
162
+ act(() => {
163
+ iconRemovePinSharedUnit.props.onPress();
164
+ });
165
+ mock.onPost(API.UNIT.UNPIN_UNIT(3)).reply(400);
151
166
  act(() => {
152
167
  iconRemovePinSharedUnit.props.onPress();
153
168
  });
154
- expect(axios.post).toHaveBeenCalledWith(API.UNIT.UNPIN_UNIT(3));
155
-
156
169
  const iconRemoveStarSharedUnit = instance.find(
157
170
  (el) => el.props.testID === TESTID.ICON_REMOVE_STAR_SHARED_UNIT + '-69'
158
171
  );
172
+ mock.onPost(API.UNIT.UNSTAR_UNIT(3)).reply(200);
159
173
  act(() => {
160
174
  iconRemoveStarSharedUnit.props.onPress();
161
175
  });
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;
176
+ mock.onPost(API.UNIT.UNSTAR_UNIT(3)).reply(400);
177
+ act(() => {
178
+ iconRemoveStarSharedUnit.props.onPress();
303
179
  });
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(
180
+ const iconRemoveStar = instance.findAll(
310
181
  (el) => el.props.testID === TESTID.ICON_REMOVE_STAR_SHARED_UNIT + '-69'
311
182
  );
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);
183
+ expect(iconRemoveStar).toHaveLength(3);
329
184
  });
330
185
  });
@@ -4,6 +4,7 @@ import moment from 'moment';
4
4
  import { API } from '../../../configs';
5
5
  import HistoryChart from '../../../commons/Device/HistoryChart';
6
6
  import { axiosGet } from '../../../utils/Apis/axios';
7
+ import { updateConfigChart } from '../ConfigHistoryChart';
7
8
 
8
9
  export const dateTimeType = {
9
10
  date: 'date',
@@ -30,19 +31,7 @@ const ConfigHistoryChart = memo(({ configs }) => {
30
31
  const { success, data } = await axiosGet(API.CONFIG.DISPLAY_HISTORY(), {
31
32
  params,
32
33
  });
33
- if (success) {
34
- for (let i = 0; i < data.length; i++) {
35
- for (let j = 0; j < data[i].data.length; j++) {
36
- data[i].data[j].x = moment(data[i].data[j].x).toDate();
37
- }
38
- }
39
- setChartData(
40
- configuration.map((config) => {
41
- config.data = data.find((k) => k.config === config.id).data;
42
- return config;
43
- })
44
- );
45
- }
34
+ updateConfigChart(success, data, configuration, setChartData);
46
35
  };
47
36
  fetchData();
48
37
  }, [startDate, endDate, configs]);
@@ -11,6 +11,27 @@ export const dateTimeType = {
11
11
  dateTime: 'datetime',
12
12
  };
13
13
 
14
+ export const updateConfigChart = (
15
+ success,
16
+ data,
17
+ configuration,
18
+ setChartData
19
+ ) => {
20
+ if (success) {
21
+ for (let i = 0; i < data.length; i++) {
22
+ for (let j = 0; j < data[i].data.length; j++) {
23
+ data[i].data[j].x = moment(data[i].data[j].x).toDate();
24
+ }
25
+ }
26
+ setChartData(
27
+ configuration.map((config) => {
28
+ config.data = data.find((k) => k.config === config.id).data;
29
+ return config;
30
+ })
31
+ );
32
+ }
33
+ };
34
+
14
35
  const ConfigHistoryChart = memo(({ configs }) => {
15
36
  const [chartData, setChartData] = useState(configs);
16
37
  const [startDate, setStartDate] = useState(moment().subtract(1, 'days'));
@@ -28,19 +49,7 @@ const ConfigHistoryChart = memo(({ configs }) => {
28
49
  const { success, data } = await axiosGet(API.CONFIG.DISPLAY_HISTORY(), {
29
50
  params,
30
51
  });
31
- if (success) {
32
- for (let i = 0; i < data.length; i++) {
33
- for (let j = 0; j < data[i].data.length; j++) {
34
- data[i].data[j].x = moment(data[i].data[j].x).toDate();
35
- }
36
- }
37
- setChartData(
38
- configuration.map((config) => {
39
- config.data = data.find((k) => k.config === config.id).data;
40
- return config;
41
- })
42
- );
43
- }
52
+ updateConfigChart(success, data, configuration, setChartData);
44
53
  };
45
54
  fetchData();
46
55
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -40,12 +40,12 @@ const WheelDateTimePicker = ({
40
40
  const date = moment(defaultValue);
41
41
  const maximumDate = moment(date).add(15, 'days');
42
42
  const minimumDate = moment(date).add(-15, 'days');
43
- const [dateData, indexDate] =
43
+ const [newDateData, indexDate] =
44
44
  mode === 'datetime'
45
45
  ? getDateData(date, maximumDate, minimumDate)
46
46
  : [[{ value: date }], 0];
47
47
  return {
48
- dateData: dateData,
48
+ dateData: newDateData,
49
49
  indexInitialDate: indexDate,
50
50
  indexInitialHour: date.hour(),
51
51
  indexInitialMinute: date.minute(),