@eohjsc/react-native-smart-city 0.2.98 → 0.3.1
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.
- package/README.md +36 -15
- package/package.json +5 -3
- package/src/commons/Action/ItemQuickAction.js +11 -2
- package/src/commons/Action/__test__/ItemQuickAction.test.js +11 -6
- package/src/commons/ActionGroup/CurtainButtonTemplate.js +10 -5
- package/src/commons/ActionGroup/NumberUpDownActionTemplate.js +32 -21
- package/src/commons/ActionGroup/OnOffSmartLock/AutoLock/__test__/index.test.js +4 -0
- package/src/commons/ActionGroup/OnOffSmartLock/OnOffSmartLock.js +3 -3
- package/src/commons/ActionGroup/OnOffSmartLock/PasscodeList/ItemPasscode.js +1 -1
- package/src/commons/ActionGroup/OnOffSmartLock/PasscodeList/__test__/ItemPasscode.test.js +24 -0
- package/src/commons/ActionGroup/OnOffSmartLock/SetupGeneratePasscode/__test__/index.test.js +14 -0
- package/src/commons/ActionGroup/OnOffTemplate/OnOffSimpleTemplate.js +1 -3
- package/src/commons/ActionGroup/OnOffTemplate/index.js +15 -45
- package/src/commons/ActionGroup/OptionsDropdownActionTemplate.js +1 -1
- package/src/commons/ActionGroup/SmartTiviActionTemplate/SmartTiviActionTemplate.js +3 -2
- package/src/commons/ActionGroup/StatesGridActionTemplate.js +8 -4
- package/src/commons/ActionGroup/TimerActionTemplate.js +2 -2
- package/src/commons/ActionGroup/TwoButtonTemplate/index.js +6 -7
- package/src/commons/ActionGroup/__test__/CurtainButtonTemplate.test.js +53 -4
- package/src/commons/ActionGroup/__test__/NumberUpDownTemplate.test.js +45 -48
- package/src/commons/ActionGroup/__test__/StatesGridActionTemplate.test.js +77 -0
- package/src/commons/ActionGroup/__test__/TimerActionTemplate.test.js +58 -6
- package/src/commons/ActionGroup/__test__/TwoButtonTemplate.test.js +49 -1
- package/src/commons/ActionGroup/__test__/index.test.js +137 -2
- package/src/commons/Automate/ItemAutomate.js +1 -3
- package/src/commons/Calendar/__test__/Calendar.test.js +33 -0
- package/src/commons/Connecting/__test__/Connecting.test.js +19 -2
- package/src/commons/ConnectingProcess/__test__/Connecting.test.js +136 -3
- package/src/commons/ConnectingProcess/index.js +12 -8
- package/src/commons/Dashboard/MyPinnedSharedUnit/__test__/MyPinnedSharedUnit.test.js +16 -13
- package/src/commons/Dashboard/MyPinnedSharedUnit/index.js +1 -1
- package/src/commons/Dashboard/MyUnit/__test__/MyUnit.test.js +0 -5
- package/src/commons/Device/ConnectedViewHeader.js +1 -1
- package/src/commons/Device/Hanet/ItemHanetDevice.test.js +58 -0
- package/src/commons/Device/HistoryChart.js +3 -3
- package/src/commons/Device/ItemDevice.js +15 -11
- package/src/commons/Device/LinearChart.js +15 -0
- package/src/commons/Device/SonosSpeaker/index.js +1 -1
- package/src/commons/Explore/__test__/CityItem.test.js +33 -54
- package/src/commons/FieldTemplate/ChooseUserField/ChooseFieldStyles.js +25 -0
- package/src/commons/FieldTemplate/ChooseUserField/ChoosePopup.js +96 -0
- package/src/commons/FieldTemplate/ChooseUserField/ChoosePopupStyles.js +39 -0
- package/src/commons/FieldTemplate/ChooseUserField/__test__/index.test.js +118 -0
- package/src/commons/FieldTemplate/ChooseUserField/index.js +62 -0
- package/src/commons/FieldTemplate/PasscodeField/PasscodeFieldStyles.js +30 -0
- package/src/commons/FieldTemplate/PasscodeField/__test__/index.test.js +90 -0
- package/src/commons/FieldTemplate/PasscodeField/index.js +43 -0
- package/src/commons/FieldTemplate/ScheduleField/ScheduleFieldStyles.js +13 -0
- package/src/commons/FieldTemplate/ScheduleField/__test__/index.test.js +179 -0
- package/src/commons/FieldTemplate/ScheduleField/index.js +176 -0
- package/src/commons/Header/HeaderCustom.js +2 -1
- package/src/commons/HorizontalPicker/index.js +2 -2
- package/src/commons/MediaPlayerDetail/Styles/MediaPlayerDetailStyles.js +0 -6
- package/src/commons/MediaPlayerDetail/index.js +19 -50
- package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +0 -1
- package/src/commons/SubUnit/Favorites/index.js +2 -3
- package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +8 -35
- package/src/commons/SubUnit/OneTap/index.js +1 -2
- package/src/commons/SubUnit/ShortDetail.js +1 -2
- package/src/commons/SubUnit/__test__/Item.test.js +0 -1
- package/src/commons/Unit/SharedUnit.js +1 -0
- package/src/commons/Unit/__test__/SharedUnit.test.js +38 -183
- package/src/commons/UnitSummary/ConfigHistoryChart/index.js +2 -13
- package/src/commons/UnitSummary/ConfigHistoryChart.js +22 -13
- package/src/commons/WheelDateTimePicker/index.js +4 -3
- package/src/configs/API.js +85 -145
- package/src/configs/Constants.js +36 -1
- package/src/configs/SCConfig.js +2 -0
- package/src/context/actionType.ts +8 -1
- package/src/context/mockStore.ts +10 -0
- package/src/context/reducer.ts +38 -5
- package/src/hooks/Common/index.js +2 -0
- package/src/hooks/Common/useGGHomeDeviceConnected.js +16 -0
- package/src/hooks/Common/useGetIdUser.js +1 -5
- package/src/hooks/Common/useSensorsStatus.js +5 -8
- package/src/hooks/IoT/__test__/useGGHomeConnection.test.js +198 -0
- package/src/hooks/IoT/__test__/useRemoteControl.test.js +198 -0
- package/src/hooks/IoT/index.js +4 -0
- package/src/hooks/IoT/useGGHomeConnection.js +91 -0
- package/src/hooks/IoT/useRemoteControl.js +79 -0
- package/src/hooks/index.js +4 -0
- package/src/hooks/useReceiveNotifications.js +8 -4
- package/src/iot/Monitor.js +3 -2
- package/src/iot/RemoteControl/Bluetooth.js +1 -1
- package/src/iot/RemoteControl/GoogleHome.js +75 -49
- package/src/iot/RemoteControl/Internet.js +1 -1
- package/src/iot/RemoteControl/__test__/GoogleHome.test.js +95 -48
- package/src/iot/RemoteControl/__test__/Internet.test.js +18 -7
- package/src/iot/RemoteControl/__test__/LgThinq.test.js +36 -177
- package/src/iot/RemoteControl/index.js +52 -52
- package/src/navigations/UnitStack.js +8 -0
- package/src/screens/ActivityLog/__test__/index.test.js +38 -23
- package/src/screens/ActivityLog/hooks/__test__/index.test.js +51 -90
- package/src/screens/ActivityLog/hooks/index.js +1 -1
- package/src/screens/ActivityLog/index.js +2 -2
- package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +13 -24
- package/src/screens/AddCommon/__test__/SelectUnit.test.js +9 -33
- package/src/screens/AddLocationMaps/index.js +5 -4
- package/src/screens/AddNewAction/SelectAction.js +8 -8
- package/src/screens/AddNewAction/SelectSensorDevices.js +2 -1
- package/src/screens/AddNewAction/SetupSensor.js +7 -7
- package/src/screens/AddNewAction/__test__/SelectAction.test.js +10 -91
- package/src/screens/AddNewAction/__test__/SelectSensorDevices.test.js +40 -26
- package/src/screens/AddNewAutoSmart/__test__/AddNewAutoSmart.test.js +3 -1
- package/src/screens/AddNewAutoSmart/index.js +5 -2
- package/src/screens/AddNewDevice/ConnectingDevices.js +3 -3
- package/src/screens/AddNewDevice/__test__/AddNewDevice.test.js +34 -33
- package/src/screens/AddNewDevice/__test__/ConnectDevices.test.js +0 -4
- package/src/screens/AddNewDevice/__test__/ConnectingDevices.test.js +21 -21
- package/src/screens/AddNewDevice/hooks/ConnectDevices.js +1 -1
- package/src/screens/AddNewGateway/PlugAndPlay/ConnectWifiWarning.js +23 -17
- package/src/screens/AddNewGateway/PlugAndPlay/GatewayWifiList.js +3 -3
- package/src/screens/AddNewGateway/SetupGatewayWifi.js +1 -0
- package/src/screens/AddNewGateway/__test__/AddNewGateway.test.js +4 -6
- package/src/screens/AddNewGateway/__test__/ConnectedGateway.test.js +0 -4
- package/src/screens/AddNewGateway/__test__/ConnectingGateway.test.js +5 -29
- package/src/screens/AddNewGateway/__test__/SelectGateway.test.js +0 -4
- package/src/screens/AddNewGateway/__test__/SetupGateway.test.js +0 -4
- package/src/screens/AddNewOneTap/__test__/AddNewOneTap.test.js +10 -24
- package/src/screens/AddNewOneTap/index.js +2 -1
- package/src/screens/AllCamera/index.js +4 -4
- package/src/screens/Automate/MultiUnits.js +8 -8
- package/src/screens/Automate/__test__/MultiUnits.test.js +6 -9
- package/src/screens/Automate/__test__/index.test.js +7 -12
- package/src/screens/Automate/index.js +3 -3
- package/src/screens/ConfirmUnitDeletion/__test__/ConfirmUnitDeletion.test.js +36 -8
- package/src/screens/ConfirmUnitDeletion/index.js +7 -1
- package/src/screens/Device/EditDevice/__test__/EditDevice.test.js +71 -22
- package/src/screens/Device/EditDevice/index.js +2 -2
- package/src/screens/Device/__test__/detail.test.js +33 -86
- package/src/screens/Device/components/DetailHistoryChart.js +1 -1
- package/src/screens/Device/components/SensorConnectStatusViewHeader.js +1 -0
- package/src/screens/Device/components/SensorDisplayItem.js +5 -2
- package/src/screens/Device/detail.js +81 -33
- package/src/screens/Device/hooks/useDisconnectedDevice.js +4 -4
- package/src/screens/Device/hooks/useFavoriteDevice.js +5 -9
- package/src/screens/DeviceInfo/__test__/index.test.js +0 -2
- package/src/screens/EditActionsList/index.js +1 -1
- package/src/screens/EmergencyContacts/EmergencyContactsSelectContacts.js +6 -3
- package/src/screens/EmergencyContacts/__test__/EmergencyContactAddNew.test.js +7 -19
- package/src/screens/EmergencyContacts/__test__/EmergencyContactList.test.js +18 -14
- package/src/screens/EmergencyContacts/__test__/EmergencyContactsSelectContacts.test.js +30 -31
- package/src/screens/EmergencySetting/components/DropDownItem.js +2 -2
- package/src/screens/EnterPassword/__test__/EnterPassword.test.js +41 -25
- package/src/screens/GuestInfo/__test__/index.test.js +14 -41
- package/src/screens/GuestInfo/components/RecurringDetail.js +1 -0
- package/src/screens/GuestInfo/components/TemporaryDetail.js +2 -2
- package/src/screens/HanetCamera/Detail.js +1 -1
- package/src/screens/HanetCamera/__test__/CaptureFaceID.test.js +8 -12
- package/src/screens/HanetCamera/__test__/Detail.test.js +27 -42
- package/src/screens/HanetCamera/__test__/ManageAccess.test.js +8 -5
- package/src/screens/HanetCamera/__test__/MemberInfo.test.js +10 -32
- package/src/screens/HanetCamera/components/RequestFaceIDPopup.js +3 -2
- package/src/screens/HanetCamera/hooks/__test__/useHanetCheckinData.test.js +43 -35
- package/src/screens/HanetCamera/hooks/__test__/useHanetPlaceMembers.test.js +10 -21
- package/src/screens/HanetCamera/hooks/useHanetCheckinData.js +11 -11
- package/src/screens/HanetCamera/hooks/useHanetPlaceMembers.js +11 -11
- package/src/screens/ManageAccess/__test__/ManageAccess.test.js +33 -22
- package/src/screens/ManageAccess/hooks/__test__/useManageAccess.test.js +44 -45
- package/src/screens/ManageAccess/hooks/index.js +7 -4
- package/src/screens/ManageAccess/index.js +1 -1
- package/src/screens/MoveToAnotherSubUnit/__test__/index.test.js +35 -12
- package/src/screens/MoveToAnotherSubUnit/index.js +5 -5
- package/src/screens/Notification/__test__/Notification.test.js +14 -25
- package/src/screens/Notification/__test__/NotificationItem.test.js +8 -7
- package/src/screens/Notification/components/NotificationItem.js +17 -20
- package/src/screens/Notification/index.js +9 -2
- package/src/screens/PlayBackCamera/Timer.js +2 -2
- package/src/screens/PlayBackCamera/__test__/index.test.js +87 -2
- package/src/screens/PlayBackCamera/index.js +22 -6
- package/src/screens/ScanChipQR/__test__/ScanChipQR.test.js +7 -20
- package/src/screens/ScanChipQR/components/QRScan/index.js +1 -0
- package/src/screens/ScanChipQR/hooks/index.js +15 -16
- package/src/screens/ScanSensorQR/__test__/ScanSensorQR.test.js +8 -24
- package/src/screens/ScriptDetail/__test__/index.test.js +17 -86
- package/src/screens/ScriptDetail/index.js +17 -12
- package/src/screens/SelectUnit/__test__/index.test.js +12 -55
- package/src/screens/SelectUnit/index.js +8 -4
- package/src/screens/SetSchedule/index.js +11 -10
- package/src/screens/SharedUnit/__test__/TabHeader.test.js +0 -2
- package/src/screens/Sharing/Components/SensorItem.js +10 -12
- package/src/screens/Sharing/InfoMemberUnit.js +1 -1
- package/src/screens/Sharing/SelectPermission.js +121 -77
- package/src/screens/Sharing/__test__/InfoMemberUnit.test.js +47 -29
- package/src/screens/Sharing/__test__/MemberList.test.js +13 -127
- package/src/screens/Sharing/__test__/MemberList2.test.js +80 -0
- package/src/screens/Sharing/__test__/SelectPermission.test.js +28 -38
- package/src/screens/Sharing/__test__/SelectUser.test.js +17 -38
- package/src/screens/SideMenuDetail/SideMenuDetailStyles.js +28 -0
- package/src/screens/SideMenuDetail/__test__/index.test.js +154 -0
- package/src/screens/SideMenuDetail/index.js +148 -0
- package/src/screens/SmartIr/components/GroupButtonByType/GroupButtonByType.js +3 -2
- package/src/screens/SubUnit/Detail.js +1 -2
- package/src/screens/SubUnit/ManageSubUnit.js +12 -7
- package/src/screens/SubUnit/__test__/AddSubUnit.test.js +21 -67
- package/src/screens/SubUnit/__test__/Detail.test.js +31 -8
- package/src/screens/SubUnit/__test__/EditSubUnit.test.js +21 -89
- package/src/screens/SubUnit/__test__/ManageSubUnit.test.js +27 -1
- package/src/screens/SubUnit/hooks/__test__/useManageSubUnit.test.js +48 -45
- package/src/screens/SubUnit/hooks/useManageSubUnit.js +7 -7
- package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +14 -90
- package/src/screens/Unit/ChooseLocation.js +7 -14
- package/src/screens/Unit/Detail.js +30 -75
- package/src/screens/Unit/ManageUnit.js +1 -0
- package/src/screens/Unit/SelectAddress.js +34 -21
- package/src/screens/Unit/SmartAccount.js +4 -4
- package/src/screens/Unit/Summaries.js +17 -1
- package/src/screens/Unit/__test__/CheckSendEmail.test.js +24 -29
- package/src/screens/Unit/__test__/ChooseLocation.test.js +27 -14
- package/src/screens/Unit/__test__/Detail.test.js +99 -200
- package/src/screens/Unit/__test__/ManageUnit.test.js +18 -42
- package/src/screens/Unit/__test__/SelectAddress.test.js +84 -51
- package/src/screens/Unit/__test__/SmartAccount.test.js +17 -9
- package/src/screens/Unit/__test__/SmartAccountItem.test.js +0 -1
- package/src/screens/Unit/__test__/Summaries.test.js +100 -0
- package/src/screens/Unit/components/MyAllUnit/__test__/MyAllUnit.test.js +36 -0
- package/src/screens/Unit/components/MyAllUnit/__test__/index.test.js +54 -0
- package/src/screens/Unit/components/SharedUnit/index.js +1 -0
- package/src/screens/Unit/components/__test__/SharedUnit.test.js +31 -34
- package/src/screens/Unit/hook/useUnitConnectRemoteDevices.js +50 -0
- package/src/screens/Unit/styles.js +4 -0
- package/src/screens/UnitSummary/__test__/index.test.js +70 -41
- package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +31 -2
- package/src/screens/UnitSummary/components/PowerConsumeHistoryChart/__test__/index.test.js +7 -4
- package/src/screens/UnitSummary/components/PowerConsumeHistoryChart/index.js +2 -13
- package/src/screens/UnitSummary/components/PowerConsumption/__test__/ItemPower.test.js +0 -1
- package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +14 -16
- package/src/screens/UnitSummary/components/RunningDevices/__test__/index.test.js +11 -2
- package/src/screens/UnitSummary/components/RunningDevices/index.js +7 -10
- package/src/screens/UnitSummary/components/Temperature/index.js +4 -4
- package/src/screens/UnitSummary/index.js +15 -1
- package/src/utils/Apis/axios.js +46 -31
- package/src/utils/Converter/time.js +0 -18
- package/src/utils/I18n/translations/en.json +3 -1
- package/src/utils/I18n/translations/vi.json +4 -1
- package/src/utils/Permission/common.js +39 -0
- package/src/utils/Route/index.js +1 -0
- package/src/utils/Utils.js +11 -7
|
@@ -356,8 +356,8 @@ describe('Test ActionGroup', () => {
|
|
|
356
356
|
text_format: '{number} *C',
|
|
357
357
|
},
|
|
358
358
|
};
|
|
359
|
-
await act(() => {
|
|
360
|
-
wrapper = renderer.create(
|
|
359
|
+
await act(async () => {
|
|
360
|
+
wrapper = await renderer.create(
|
|
361
361
|
wrapComponent(actionGroup, mockDoAction, sensor)
|
|
362
362
|
);
|
|
363
363
|
});
|
|
@@ -464,4 +464,139 @@ describe('Test ActionGroup', () => {
|
|
|
464
464
|
moment('2021-09-09T10:00:00.000Z').valueOf()
|
|
465
465
|
);
|
|
466
466
|
});
|
|
467
|
+
|
|
468
|
+
test('render OnOffSmartLock', async () => {
|
|
469
|
+
Date.now = jest.fn(() => new Date('2021-09-09T10:00:00.000Z'));
|
|
470
|
+
const actionGroup = {
|
|
471
|
+
template: 'OnOffSmartLockActionTemplate',
|
|
472
|
+
title: 'Timer',
|
|
473
|
+
configuration: {
|
|
474
|
+
action_off_data: jest.fn(),
|
|
475
|
+
action_on_data: jest.fn(),
|
|
476
|
+
},
|
|
477
|
+
};
|
|
478
|
+
const mockDoAction = jest.fn();
|
|
479
|
+
await act(() => {
|
|
480
|
+
wrapper = renderer.create(
|
|
481
|
+
wrapComponent(actionGroup, mockDoAction, sensor)
|
|
482
|
+
);
|
|
483
|
+
});
|
|
484
|
+
const instance = wrapper.root;
|
|
485
|
+
const texts = instance.findAllByType(Text);
|
|
486
|
+
expect(texts).toHaveLength(5);
|
|
487
|
+
});
|
|
488
|
+
|
|
489
|
+
test('render OptionsDropdownActionTemplate', async () => {
|
|
490
|
+
Date.now = jest.fn(() => new Date('2021-09-09T10:00:00.000Z'));
|
|
491
|
+
const actionGroup = {
|
|
492
|
+
template: 'OptionsDropdownActionTemplate',
|
|
493
|
+
title: 'Timer',
|
|
494
|
+
configuration: {
|
|
495
|
+
action_data: jest.fn(),
|
|
496
|
+
options: [],
|
|
497
|
+
icon_kit_data: 'icon_kit_data',
|
|
498
|
+
icon: '',
|
|
499
|
+
icon_outlined: 'icon_outlined',
|
|
500
|
+
},
|
|
501
|
+
};
|
|
502
|
+
const mockDoAction = jest.fn();
|
|
503
|
+
await act(() => {
|
|
504
|
+
wrapper = renderer.create(
|
|
505
|
+
wrapComponent(actionGroup, mockDoAction, sensor)
|
|
506
|
+
);
|
|
507
|
+
});
|
|
508
|
+
const instance = wrapper.root;
|
|
509
|
+
const texts = instance.findAllByType(Text);
|
|
510
|
+
expect(texts).toHaveLength(7);
|
|
511
|
+
});
|
|
512
|
+
|
|
513
|
+
test('render CurtainButtonTemplate', async () => {
|
|
514
|
+
Date.now = jest.fn(() => new Date('2021-09-09T10:00:00.000Z'));
|
|
515
|
+
const actionGroup = {
|
|
516
|
+
template: 'curtain_action_template',
|
|
517
|
+
title: 'Timer',
|
|
518
|
+
configuration: {},
|
|
519
|
+
};
|
|
520
|
+
const mockDoAction = jest.fn();
|
|
521
|
+
await act(() => {
|
|
522
|
+
wrapper = renderer.create(
|
|
523
|
+
wrapComponent(actionGroup, mockDoAction, sensor)
|
|
524
|
+
);
|
|
525
|
+
});
|
|
526
|
+
const instance = wrapper.root;
|
|
527
|
+
const texts = instance.findAllByType(Text);
|
|
528
|
+
expect(texts).toHaveLength(2);
|
|
529
|
+
});
|
|
530
|
+
|
|
531
|
+
test('render SmartTiviActionTemplate', async () => {
|
|
532
|
+
Date.now = jest.fn(() => new Date('2021-09-09T10:00:00.000Z'));
|
|
533
|
+
const actionGroup = {
|
|
534
|
+
template: 'SmartTiviActionTemplate',
|
|
535
|
+
title: 'Timer',
|
|
536
|
+
configuration: {},
|
|
537
|
+
};
|
|
538
|
+
const mockDoAction = jest.fn();
|
|
539
|
+
await act(() => {
|
|
540
|
+
wrapper = renderer.create(
|
|
541
|
+
wrapComponent(actionGroup, mockDoAction, sensor)
|
|
542
|
+
);
|
|
543
|
+
});
|
|
544
|
+
const instance = wrapper.root;
|
|
545
|
+
const texts = instance.findAllByType(Text);
|
|
546
|
+
expect(texts).toHaveLength(4);
|
|
547
|
+
});
|
|
548
|
+
|
|
549
|
+
test('render ColorPickerTemplate', async () => {
|
|
550
|
+
Date.now = jest.fn(() => new Date('2021-09-09T10:00:00.000Z'));
|
|
551
|
+
const actionGroup = {
|
|
552
|
+
template: 'color_picker_template',
|
|
553
|
+
title: 'Timer',
|
|
554
|
+
configuration: {},
|
|
555
|
+
};
|
|
556
|
+
const mockDoAction = jest.fn();
|
|
557
|
+
await act(() => {
|
|
558
|
+
wrapper = renderer.create(
|
|
559
|
+
wrapComponent(actionGroup, mockDoAction, sensor)
|
|
560
|
+
);
|
|
561
|
+
});
|
|
562
|
+
const instance = wrapper.root;
|
|
563
|
+
const texts = instance.findAllByType(Text);
|
|
564
|
+
expect(texts).toHaveLength(2);
|
|
565
|
+
});
|
|
566
|
+
|
|
567
|
+
test('render SliderRangeTemplate', async () => {
|
|
568
|
+
Date.now = jest.fn(() => new Date('2021-09-09T10:00:00.000Z'));
|
|
569
|
+
const actionGroup = {
|
|
570
|
+
template: 'slider_range_template',
|
|
571
|
+
title: 'Timer',
|
|
572
|
+
configuration: {},
|
|
573
|
+
};
|
|
574
|
+
const mockDoAction = jest.fn();
|
|
575
|
+
await act(() => {
|
|
576
|
+
wrapper = renderer.create(
|
|
577
|
+
wrapComponent(actionGroup, mockDoAction, sensor)
|
|
578
|
+
);
|
|
579
|
+
});
|
|
580
|
+
const instance = wrapper.root;
|
|
581
|
+
const texts = instance.findAllByType(Text);
|
|
582
|
+
expect(texts).toHaveLength(4);
|
|
583
|
+
});
|
|
584
|
+
|
|
585
|
+
test('render TwoButtonTemplate', async () => {
|
|
586
|
+
Date.now = jest.fn(() => new Date('2021-09-09T10:00:00.000Z'));
|
|
587
|
+
const actionGroup = {
|
|
588
|
+
template: 'two_button_action_template',
|
|
589
|
+
title: 'Timer',
|
|
590
|
+
configuration: {},
|
|
591
|
+
};
|
|
592
|
+
const mockDoAction = jest.fn();
|
|
593
|
+
await act(() => {
|
|
594
|
+
wrapper = renderer.create(
|
|
595
|
+
wrapComponent(actionGroup, mockDoAction, sensor)
|
|
596
|
+
);
|
|
597
|
+
});
|
|
598
|
+
const instance = wrapper.root;
|
|
599
|
+
const texts = instance.findAllByType(Text);
|
|
600
|
+
expect(texts).toHaveLength(5);
|
|
601
|
+
});
|
|
467
602
|
});
|
|
@@ -35,9 +35,7 @@ const ItemAutomate = ({
|
|
|
35
35
|
style={[styles.wrap, isSelected && styles.active]}
|
|
36
36
|
>
|
|
37
37
|
<View style={styles.row}>
|
|
38
|
-
<View style={styles.wrapIcon}>
|
|
39
|
-
<Icon />
|
|
40
|
-
</View>
|
|
38
|
+
<View style={styles.wrapIcon}>{!!Icon && <Icon />}</View>
|
|
41
39
|
<View style={styles.wrapTitle}>
|
|
42
40
|
<Text type="H4" bold>
|
|
43
41
|
{t(item?.title)}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import renderer, { act } from 'react-test-renderer';
|
|
3
|
+
import CalendarComponent from '../';
|
|
4
|
+
import { Calendar } from 'react-native-calendars';
|
|
5
|
+
// eslint-disable-next-line no-unused-vars
|
|
6
|
+
import BottomSheet from '../../BottomSheet';
|
|
7
|
+
import { SCProvider } from '../../../context';
|
|
8
|
+
import { mockSCStore } from '../../../context/mockStore';
|
|
9
|
+
|
|
10
|
+
const mockSetState = jest.fn();
|
|
11
|
+
jest.mock('react', () => {
|
|
12
|
+
return {
|
|
13
|
+
...jest.requireActual('react'),
|
|
14
|
+
useState: jest.fn((init) => [init, mockSetState]),
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
const wrapComponent = (route, navigation) => (
|
|
18
|
+
<SCProvider initState={mockSCStore({})}>
|
|
19
|
+
<CalendarComponent route={route} />
|
|
20
|
+
</SCProvider>
|
|
21
|
+
);
|
|
22
|
+
describe('Test Calendar component', () => {
|
|
23
|
+
let tree;
|
|
24
|
+
|
|
25
|
+
test('create Calendar', () => {
|
|
26
|
+
act(() => {
|
|
27
|
+
tree = renderer.create(wrapComponent());
|
|
28
|
+
});
|
|
29
|
+
const instance = tree.root;
|
|
30
|
+
const calendar = instance.findAllByType(Calendar);
|
|
31
|
+
expect(calendar).toHaveLength(1);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -5,13 +5,19 @@ import Text from '../../Text';
|
|
|
5
5
|
import { SCProvider } from '../../../context';
|
|
6
6
|
import { mockSCStore } from '../../../context/mockStore';
|
|
7
7
|
|
|
8
|
-
const wrapComponent = (route) => (
|
|
8
|
+
const wrapComponent = (route, isLoading, isConnect, isPercentConnect) => (
|
|
9
9
|
<SCProvider initState={mockSCStore({})}>
|
|
10
|
-
<Connecting
|
|
10
|
+
<Connecting
|
|
11
|
+
route={route}
|
|
12
|
+
isLoading={isLoading}
|
|
13
|
+
isConnect={isConnect}
|
|
14
|
+
isPercentConnect={isPercentConnect}
|
|
15
|
+
/>
|
|
11
16
|
</SCProvider>
|
|
12
17
|
);
|
|
13
18
|
describe('Test Connecting', () => {
|
|
14
19
|
let tree;
|
|
20
|
+
|
|
15
21
|
test('create Connecting', () => {
|
|
16
22
|
act(() => {
|
|
17
23
|
tree = renderer.create(wrapComponent());
|
|
@@ -20,4 +26,15 @@ describe('Test Connecting', () => {
|
|
|
20
26
|
const text = instance.findAllByType(Text);
|
|
21
27
|
expect(text).toHaveLength(4);
|
|
22
28
|
});
|
|
29
|
+
|
|
30
|
+
test('isLoading = true', () => {
|
|
31
|
+
jest.useFakeTimers();
|
|
32
|
+
act(() => {
|
|
33
|
+
tree = renderer.create(wrapComponent({}, true));
|
|
34
|
+
});
|
|
35
|
+
jest.runAllTimers();
|
|
36
|
+
const instance = tree.root;
|
|
37
|
+
const text = instance.findAllByType(Text);
|
|
38
|
+
expect(text).toHaveLength(4);
|
|
39
|
+
});
|
|
23
40
|
});
|
|
@@ -1,18 +1,35 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import renderer, { act } from 'react-test-renderer';
|
|
3
|
+
import MockAdapter from 'axios-mock-adapter';
|
|
4
|
+
|
|
3
5
|
import ConnectingProcess from '../index';
|
|
4
6
|
import { SafeAreaView } from 'react-native';
|
|
5
7
|
import { SCProvider } from '../../../context';
|
|
6
8
|
import { mockSCStore } from '../../../context/mockStore';
|
|
9
|
+
import api from '../../../utils/Apis/axios';
|
|
10
|
+
import { API } from '../../../configs';
|
|
7
11
|
|
|
8
12
|
const wrapComponent = (route) => (
|
|
9
13
|
<SCProvider initState={mockSCStore({})}>
|
|
10
14
|
<ConnectingProcess route={route} />
|
|
11
15
|
</SCProvider>
|
|
12
16
|
);
|
|
17
|
+
|
|
18
|
+
const mock = new MockAdapter(api.axiosInstance);
|
|
19
|
+
|
|
13
20
|
describe('Test ConnectingProcess', () => {
|
|
14
21
|
let tree;
|
|
15
|
-
|
|
22
|
+
|
|
23
|
+
test('render without params', () => {
|
|
24
|
+
act(() => {
|
|
25
|
+
tree = renderer.create(wrapComponent({}));
|
|
26
|
+
});
|
|
27
|
+
const instance = tree.root;
|
|
28
|
+
const safeAreaView = instance.findAllByType(SafeAreaView);
|
|
29
|
+
expect(safeAreaView).toHaveLength(1);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('create ConnectingProcess with devicePrefixName = SENSOR call api success', async () => {
|
|
16
33
|
const scan_sensor_data = { imei: 'SENSOR-afasdfas' };
|
|
17
34
|
const devicePrefixName = 'SENSOR';
|
|
18
35
|
const gateway = { id: 1, name: 'gateway' };
|
|
@@ -20,8 +37,124 @@ describe('Test ConnectingProcess', () => {
|
|
|
20
37
|
const route = {
|
|
21
38
|
params: { scan_sensor_data, gateway, station, devicePrefixName },
|
|
22
39
|
};
|
|
23
|
-
|
|
24
|
-
|
|
40
|
+
mock.onPost(API.SUB_UNIT.SENSOR_SCAN(1)).reply(200);
|
|
41
|
+
await act(async () => {
|
|
42
|
+
tree = await renderer.create(wrapComponent(route));
|
|
43
|
+
});
|
|
44
|
+
const instance = tree.root;
|
|
45
|
+
const safeAreaView = instance.findAllByType(SafeAreaView);
|
|
46
|
+
expect(safeAreaView).toHaveLength(1);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('create ConnectingProcess with devicePrefixName = SENSOR call api fail', async () => {
|
|
50
|
+
const scan_sensor_data = { imei: 'SENSOR-afasdfas' };
|
|
51
|
+
const devicePrefixName = 'SENSOR';
|
|
52
|
+
const gateway = { id: 1, name: 'gateway' };
|
|
53
|
+
const station = { id: 1, icon_kit: 'a', name: 'station' };
|
|
54
|
+
const route = {
|
|
55
|
+
params: { scan_sensor_data, gateway, station, devicePrefixName },
|
|
56
|
+
};
|
|
57
|
+
mock.onPost(API.SUB_UNIT.SENSOR_SCAN(1)).reply(400);
|
|
58
|
+
await act(async () => {
|
|
59
|
+
tree = await renderer.create(wrapComponent(route));
|
|
60
|
+
});
|
|
61
|
+
const instance = tree.root;
|
|
62
|
+
const safeAreaView = instance.findAllByType(SafeAreaView);
|
|
63
|
+
expect(safeAreaView).toHaveLength(1);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
test('create ConnectingProcess with devicePrefixName = ROBOT call api success', async () => {
|
|
67
|
+
const scan_sensor_data = { imei: 'SENSOR-afasdfas' };
|
|
68
|
+
const devicePrefixName = 'ROBOT';
|
|
69
|
+
const gateway = { id: 1, name: 'gateway' };
|
|
70
|
+
const station = { id: 1, icon_kit: 'a', name: 'station' };
|
|
71
|
+
const route = {
|
|
72
|
+
params: {
|
|
73
|
+
scan_sensor_data,
|
|
74
|
+
gateway,
|
|
75
|
+
station,
|
|
76
|
+
devicePrefixName,
|
|
77
|
+
unit_id: 1,
|
|
78
|
+
unit: {
|
|
79
|
+
id: 1,
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
mock.onPost(API.UNIT.CHIP_SCAN(1)).reply(200);
|
|
84
|
+
await act(async () => {
|
|
85
|
+
tree = await renderer.create(wrapComponent(route));
|
|
86
|
+
});
|
|
87
|
+
const instance = tree.root;
|
|
88
|
+
const safeAreaView = instance.findAllByType(SafeAreaView);
|
|
89
|
+
expect(safeAreaView).toHaveLength(1);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
test('create ConnectingProcess with devicePrefixName = ROBOT call api fail', async () => {
|
|
93
|
+
const scan_sensor_data = { imei: 'SENSOR-afasdfas' };
|
|
94
|
+
const devicePrefixName = 'ROBOT';
|
|
95
|
+
const gateway = { id: 1, name: 'gateway' };
|
|
96
|
+
const station = { id: 1, icon_kit: 'a', name: 'station' };
|
|
97
|
+
const route = {
|
|
98
|
+
params: {
|
|
99
|
+
scan_sensor_data,
|
|
100
|
+
gateway,
|
|
101
|
+
station,
|
|
102
|
+
devicePrefixName,
|
|
103
|
+
unit_id: 1,
|
|
104
|
+
unit: {
|
|
105
|
+
id: 1,
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
mock.onPost(API.UNIT.CHIP_SCAN(1)).reply(400);
|
|
110
|
+
await act(async () => {
|
|
111
|
+
tree = await renderer.create(wrapComponent(route));
|
|
112
|
+
});
|
|
113
|
+
const instance = tree.root;
|
|
114
|
+
const safeAreaView = instance.findAllByType(SafeAreaView);
|
|
115
|
+
expect(safeAreaView).toHaveLength(1);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
test('create ConnectingProcess with devicePrefixName = LITE call api success', async () => {
|
|
119
|
+
const scan_sensor_data = { imei: 'SENSOR-afasdfas' };
|
|
120
|
+
const devicePrefixName = 'LITE';
|
|
121
|
+
const gateway = { id: 1, name: 'gateway' };
|
|
122
|
+
const station = { id: 1, icon_kit: 'a', name: 'station' };
|
|
123
|
+
const route = {
|
|
124
|
+
params: {
|
|
125
|
+
scan_sensor_data,
|
|
126
|
+
gateway,
|
|
127
|
+
station,
|
|
128
|
+
devicePrefixName,
|
|
129
|
+
unit_id: 1,
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
mock.onPost(API.UNIT.ADD_GATEWAY(1)).reply(200);
|
|
133
|
+
await act(async () => {
|
|
134
|
+
tree = await renderer.create(wrapComponent(route));
|
|
135
|
+
});
|
|
136
|
+
const instance = tree.root;
|
|
137
|
+
const safeAreaView = instance.findAllByType(SafeAreaView);
|
|
138
|
+
expect(safeAreaView).toHaveLength(1);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
test('create ConnectingProcess with devicePrefixName = LITE call api fail', async () => {
|
|
142
|
+
const scan_sensor_data = { imei: 'SENSOR-afasdfas' };
|
|
143
|
+
const devicePrefixName = 'LITE';
|
|
144
|
+
const gateway = { id: 1, name: 'gateway' };
|
|
145
|
+
const station = { id: 1, icon_kit: 'a', name: 'station' };
|
|
146
|
+
const route = {
|
|
147
|
+
params: {
|
|
148
|
+
scan_sensor_data,
|
|
149
|
+
gateway,
|
|
150
|
+
station,
|
|
151
|
+
devicePrefixName,
|
|
152
|
+
unit_id: 1,
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
mock.onPost(API.UNIT.ADD_GATEWAY(1)).reply(400);
|
|
156
|
+
await act(async () => {
|
|
157
|
+
tree = await renderer.create(wrapComponent(route));
|
|
25
158
|
});
|
|
26
159
|
const instance = tree.root;
|
|
27
160
|
const safeAreaView = instance.findAllByType(SafeAreaView);
|
|
@@ -12,6 +12,7 @@ import styles from './styles';
|
|
|
12
12
|
import DeviceItem from './DeviceItem/DeviceItem';
|
|
13
13
|
import Connecting from '../Connecting';
|
|
14
14
|
import { useSCContextSelector } from '../../context';
|
|
15
|
+
import { ToastBottomHelper } from '../../utils/Utils';
|
|
15
16
|
|
|
16
17
|
const ConnectingProcess = ({ route }) => {
|
|
17
18
|
const { navigate, goBack } = useNavigation();
|
|
@@ -27,8 +28,7 @@ const ConnectingProcess = ({ route }) => {
|
|
|
27
28
|
devicePrefixName,
|
|
28
29
|
wifi_ssid,
|
|
29
30
|
wifi_pass,
|
|
30
|
-
|
|
31
|
-
} = route.params;
|
|
31
|
+
} = route.params || {};
|
|
32
32
|
const [isLoading, setIsLoading] = useState(true);
|
|
33
33
|
const [sensor, setSensor] = useState(null);
|
|
34
34
|
const user = useSCContextSelector((state) => state?.auth?.account?.user);
|
|
@@ -46,6 +46,7 @@ const ConnectingProcess = ({ route }) => {
|
|
|
46
46
|
if (success) {
|
|
47
47
|
setSensor(data);
|
|
48
48
|
} else {
|
|
49
|
+
ToastBottomHelper.error(JSON.stringify(data));
|
|
49
50
|
goBack();
|
|
50
51
|
}
|
|
51
52
|
}
|
|
@@ -63,19 +64,23 @@ const ConnectingProcess = ({ route }) => {
|
|
|
63
64
|
if (success) {
|
|
64
65
|
setSensor(data);
|
|
65
66
|
} else {
|
|
67
|
+
ToastBottomHelper.error(JSON.stringify(data));
|
|
66
68
|
goBack();
|
|
67
69
|
}
|
|
68
70
|
break;
|
|
69
71
|
}
|
|
70
72
|
case 'LITE': {
|
|
71
|
-
const { success } = await axiosPost(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
const { success, data } = await axiosPost(
|
|
74
|
+
API.UNIT.ADD_GATEWAY(unit_id),
|
|
75
|
+
{
|
|
76
|
+
imei: gateway?.imei,
|
|
77
|
+
chip_name: gateway?.model,
|
|
78
|
+
}
|
|
79
|
+
);
|
|
76
80
|
if (success) {
|
|
77
81
|
setSensor({ name: gateway?.model });
|
|
78
82
|
} else {
|
|
83
|
+
ToastBottomHelper.error(JSON.stringify(data));
|
|
79
84
|
goBack();
|
|
80
85
|
}
|
|
81
86
|
break;
|
|
@@ -95,7 +100,6 @@ const ConnectingProcess = ({ route }) => {
|
|
|
95
100
|
wifi_pass,
|
|
96
101
|
user?.phone_number,
|
|
97
102
|
unit_id,
|
|
98
|
-
chip_id,
|
|
99
103
|
]);
|
|
100
104
|
|
|
101
105
|
const ConnectingSuccess = useCallback(() => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { act, create } from 'react-test-renderer';
|
|
3
|
+
import MockAdapter from 'axios-mock-adapter';
|
|
3
4
|
|
|
4
5
|
import MyPinnedSharedUnit from '../index';
|
|
5
6
|
import { Text } from 'react-native';
|
|
@@ -9,9 +10,9 @@ import { mockSCStore } from '../../../../context/mockStore';
|
|
|
9
10
|
import { TESTID } from '../../../../configs/Constants';
|
|
10
11
|
import { API } from '../../../../configs';
|
|
11
12
|
import { TouchableOpacity } from 'react-native';
|
|
12
|
-
import
|
|
13
|
+
import api from '../../../../utils/Apis/axios';
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
const mock = new MockAdapter(api.axiosInstance);
|
|
15
16
|
|
|
16
17
|
const mockedNavigate = jest.fn();
|
|
17
18
|
jest.mock('@react-navigation/native', () => {
|
|
@@ -32,21 +33,14 @@ const wrapComponent = (route) => (
|
|
|
32
33
|
|
|
33
34
|
describe('Test MyPinnedSharedUnit', () => {
|
|
34
35
|
let tree;
|
|
35
|
-
afterEach(() => {
|
|
36
|
-
axios.get.mockClear();
|
|
37
|
-
});
|
|
38
36
|
|
|
39
37
|
test('create', async () => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
data: [{ id: 1 }],
|
|
43
|
-
};
|
|
44
|
-
axios.get.mockImplementation(async () => {
|
|
45
|
-
return response;
|
|
46
|
-
});
|
|
38
|
+
mock.onGet(API.UNIT.SHARED_UNITS()).reply(200, [{ id: 1 }]);
|
|
39
|
+
|
|
47
40
|
await act(async () => {
|
|
48
41
|
tree = await create(wrapComponent());
|
|
49
42
|
});
|
|
43
|
+
|
|
50
44
|
const instance = tree.root;
|
|
51
45
|
const texts = instance.findAllByType(Text);
|
|
52
46
|
expect(texts).toHaveLength(4);
|
|
@@ -65,6 +59,15 @@ describe('Test MyPinnedSharedUnit', () => {
|
|
|
65
59
|
goToAllSharedUnits.props.onPress();
|
|
66
60
|
});
|
|
67
61
|
expect(mockedNavigate).toHaveBeenCalled();
|
|
68
|
-
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test('render without item', async () => {
|
|
65
|
+
mock.onGet(API.UNIT.SHARED_UNITS()).reply(400, []);
|
|
66
|
+
await act(async () => {
|
|
67
|
+
tree = await create(wrapComponent());
|
|
68
|
+
});
|
|
69
|
+
const instance = tree.root;
|
|
70
|
+
const texts = instance.findAllByType(Text);
|
|
71
|
+
expect(texts).toHaveLength(4);
|
|
69
72
|
});
|
|
70
73
|
});
|
|
@@ -60,7 +60,7 @@ const MyPinnedSharedUnit = () => {
|
|
|
60
60
|
{sharedUnits &&
|
|
61
61
|
Boolean(sharedUnits.length) &&
|
|
62
62
|
sharedUnits
|
|
63
|
-
.filter((sharedUnit) => sharedUnit
|
|
63
|
+
.filter((sharedUnit) => sharedUnit?.is_pin)
|
|
64
64
|
.map((item, index) => (
|
|
65
65
|
<View key={item.id}>
|
|
66
66
|
<SharedUnit
|
|
@@ -4,9 +4,7 @@ import MyUnit from '..';
|
|
|
4
4
|
import { TESTID } from '../../../../configs/Constants';
|
|
5
5
|
import { SCProvider } from '../../../../context';
|
|
6
6
|
import { mockSCStore } from '../../../../context/mockStore';
|
|
7
|
-
import axios from 'axios';
|
|
8
7
|
|
|
9
|
-
jest.mock('axios');
|
|
10
8
|
const mockedNavigate = jest.fn();
|
|
11
9
|
const mockUseIsFocused = jest.fn();
|
|
12
10
|
const mockedDispatch = jest.fn();
|
|
@@ -36,9 +34,6 @@ const wrapComponent = () => (
|
|
|
36
34
|
|
|
37
35
|
describe('Test MyUnit', () => {
|
|
38
36
|
let tree;
|
|
39
|
-
beforeEach(() => {
|
|
40
|
-
axios.get.mockClear();
|
|
41
|
-
});
|
|
42
37
|
const getElement = (instance) => {
|
|
43
38
|
const goToDetail = instance.findAll(
|
|
44
39
|
(item) => item.props.testID === TESTID.MY_UNIT_GO_TO_DETAIL
|
|
@@ -29,7 +29,7 @@ const ConnectedViewHeader = memo(
|
|
|
29
29
|
const t = useTranslations();
|
|
30
30
|
const lastUpdatedStr = lastUpdated
|
|
31
31
|
? timeDifference(new Date(), lastUpdated)
|
|
32
|
-
:
|
|
32
|
+
: `5 ${t('seconds_ago')}`;
|
|
33
33
|
return (
|
|
34
34
|
<View style={styles.statusContainer}>
|
|
35
35
|
<View style={styles.connectStatus}>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TouchableWithoutFeedback } from 'react-native';
|
|
3
|
+
import renderer, { act } from 'react-test-renderer';
|
|
4
|
+
import ItemHanetDevice from './ItemHanetDevice';
|
|
5
|
+
import { SCProvider } from '../../../context';
|
|
6
|
+
import { mockSCStore } from '../../../context/mockStore';
|
|
7
|
+
|
|
8
|
+
const wrapComponent = (props) => (
|
|
9
|
+
<SCProvider initState={mockSCStore({})}>
|
|
10
|
+
<ItemHanetDevice {...props} />
|
|
11
|
+
</SCProvider>
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
const mockNavigate = jest.fn();
|
|
15
|
+
jest.mock('@react-navigation/native', () => {
|
|
16
|
+
return {
|
|
17
|
+
...jest.requireActual('@react-navigation/native'),
|
|
18
|
+
useNavigation: () => ({
|
|
19
|
+
navigate: mockNavigate,
|
|
20
|
+
}),
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe('Test ItemHanetDevice', () => {
|
|
25
|
+
let tree, props;
|
|
26
|
+
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
props = {
|
|
29
|
+
svgMain: 'icon',
|
|
30
|
+
title: 'title',
|
|
31
|
+
sensor: {},
|
|
32
|
+
unit: {},
|
|
33
|
+
station: {},
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test('render ItemHanetDevice', () => {
|
|
38
|
+
act(() => {
|
|
39
|
+
tree = renderer.create(wrapComponent(props));
|
|
40
|
+
});
|
|
41
|
+
const instance = tree.root;
|
|
42
|
+
const touches = instance.findAllByType(TouchableWithoutFeedback);
|
|
43
|
+
act(() => {
|
|
44
|
+
tree = touches[0].props.onPress();
|
|
45
|
+
});
|
|
46
|
+
expect(mockNavigate).toBeCalled();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('render ItemHanetDevice sensor has icon', () => {
|
|
50
|
+
props.sensor.icon_kit = 'icon';
|
|
51
|
+
act(() => {
|
|
52
|
+
tree = renderer.create(wrapComponent(props));
|
|
53
|
+
});
|
|
54
|
+
const instance = tree.root;
|
|
55
|
+
const touches = instance.findAllByType(TouchableWithoutFeedback);
|
|
56
|
+
expect(touches.length).toBeGreaterThan(0);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
@@ -151,12 +151,12 @@ const HistoryChart = memo(
|
|
|
151
151
|
if (configuration.config !== 'power_consumption') {
|
|
152
152
|
return null;
|
|
153
153
|
}
|
|
154
|
-
const { price } = chartConfig;
|
|
155
|
-
if (
|
|
154
|
+
const { price: chartPrice } = chartConfig;
|
|
155
|
+
if (chartPrice === '' || isNaN(chartPrice)) {
|
|
156
156
|
return null;
|
|
157
157
|
}
|
|
158
158
|
const sum = datas[0].data.reduce((a, b) => a + b.y, 0);
|
|
159
|
-
const roundedSum = sum *
|
|
159
|
+
const roundedSum = sum * chartPrice;
|
|
160
160
|
return roundedSum.toFixed();
|
|
161
161
|
}, [configuration, datas, chartConfig]);
|
|
162
162
|
|