예제 #1
0
    def test_outdoor_outlet_onoff(self, caplog, api_mock):
        """Test Outdoor Outlet Device On/Off Methods"""
        self.mock_api.return_value = ({"code": 0}, 200)
        outdoor_outlet = VeSyncOutdoorPlug(DEV_LIST_DETAIL, self.vesync_obj)
        head = helpers.req_headers(self.vesync_obj)
        body = helpers.req_body(self.vesync_obj, 'devicestatus')

        body['status'] = 'on'
        body['uuid'] = outdoor_outlet.uuid
        body['switchNo'] = outdoor_outlet.sub_device_no
        on = outdoor_outlet.turn_on()
        self.mock_api.assert_called_with(
            '/outdoorsocket15a/v1/device/devicestatus',
            'put',
            headers=head,
            json=body)
        assert on
        off = outdoor_outlet.turn_off()
        body['status'] = 'off'
        self.mock_api.assert_called_with(
            '/outdoorsocket15a/v1/device/devicestatus',
            'put',
            headers=head,
            json=body)
        assert off
예제 #2
0
 def test_outdoor_details_fail(self, caplog, api_mock):
     """Test outdoor outlet get_details response."""
     self.mock_api.return_value = BAD_OUTDOOR_LIST
     outdoor_outlet = VeSyncOutdoorPlug(DEV_LIST_DETAIL, self.vesync_obj)
     outdoor_outlet.get_details()
     assert len(caplog.records) == 1
     assert 'details' in caplog.text
예제 #3
0
 def test_outdoor_outlet_no_details(self, caplog, api_mock):
     """Test outdoor outlet details return with no details and code=0"""
     bad_outdoor_details = {"code": 0, "deviceStatus": "on"}
     self.mock_api.return_value = (bad_outdoor_details, 200)
     outdoor_outlet = VeSyncOutdoorPlug(DEV_LIST_DETAIL, self.vesync_obj)
     outdoor_outlet.get_details()
     assert len(caplog.records) == 2
예제 #4
0
 def test_outdoor_details(self, api_mock):
     """Tests retrieving outdoor outlet details."""
     self.mock_api.return_value = CORRECT_OUTDOOR_DETAILS
     outdoor_outlet = VeSyncOutdoorPlug(DEV_LIST_DETAIL, self.vesync_obj)
     outdoor_outlet.get_details()
     dev_details = outdoor_outlet.details
     assert outdoor_outlet.device_status == 'on'
     assert isinstance(outdoor_outlet, VeSyncOutdoorPlug)
     assert dev_details['active_time'] == 1
예제 #5
0
    def test_display_func(self, caplog, api_mock):
        """Test display function outputs text."""
        self.vesync_obj.outlets.append(
            VeSyncOutdoorPlug(json_vals.LIST_CONF_OUTDOOR_1, self.vesync_obj))
        self.vesync_obj.outlets.append(
            VeSyncOutlet10A(json_vals.LIST_CONF_10AUS, self.vesync_obj))
        self.vesync_obj.outlets.append(
            VeSyncOutlet15A(json_vals.LIST_CONF_15A, self.vesync_obj))
        self.vesync_obj.outlets.append(
            VeSyncOutlet7A(json_vals.LIST_CONF_7A, self.vesync_obj))
        self.vesync_obj.switches.append(
            VeSyncWallSwitch(json_vals.LIST_CONF_WS, self.vesync_obj))
        self.vesync_obj.fans.append(
            VeSyncAir131(json_vals.LIST_CONF_AIR, self.vesync_obj))
        self.vesync_obj.bulbs.append(
            VeSyncBulbESL100(json_vals.LIST_CONF_ESL100, self.vesync_obj))

        dev_list = [
            self.vesync_obj.outlets, self.vesync_obj.switches,
            self.vesync_obj.fans, self.vesync_obj.bulbs
        ]

        for device in chain(*dev_list):
            device.display()

        assert len(caplog.records) == 0
예제 #6
0
 def test_outdoor_outlet_yearly(self, api_mock):
     """Test outdoor outlet get_yearly_energy"""
     self.mock_api.return_value = ENERGY_HISTORY
     outdoor_outlet = VeSyncOutdoorPlug(DEV_LIST_DETAIL, self.vesync_obj)
     outdoor_outlet.get_yearly_energy()
     body = helpers.req_body(self.vesync_obj, 'energy_year')
     body['uuid'] = outdoor_outlet.uuid
     self.mock_api.assert_called_with(
         '/outdoorsocket15a/v1/device/energyyear',
         'post',
         headers=helpers.req_headers(self.vesync_obj),
         json=body)
     energy_dict = outdoor_outlet.energy['year']
     assert energy_dict['energy_consumption_of_today'] == 1
     assert energy_dict['cost_per_kwh'] == 1
     assert energy_dict['max_energy'] == 1
     assert energy_dict['total_energy'] == 1
     assert energy_dict['data'] == [1, 1]
     assert outdoor_outlet.yearly_energy_total == 1
예제 #7
0
 def test_history_fail(self, caplog, api_mock):
     """Test outdoor outlet energy failure."""
     bad_history = {'code': 1}
     self.mock_api.return_value = (bad_history, 200)
     outdoor_outlet = VeSyncOutdoorPlug(DEV_LIST_DETAIL, self.vesync_obj)
     outdoor_outlet.update_energy()
     assert len(caplog.records) == 1
     assert 'weekly' in caplog.text
     caplog.clear()
     outdoor_outlet.get_monthly_energy()
     assert len(caplog.records) == 1
     assert 'monthly' in caplog.text
     caplog.clear()
     outdoor_outlet.get_yearly_energy()
     assert len(caplog.records) == 1
     assert 'yearly' in caplog.text
예제 #8
0
 def test_outdoor_outlet_onoff_fail(self, api_mock):
     """Test outdoor outlet On/Off Fail with Code>0."""
     self.mock_api.return_value = ({'code': 1}, 400)
     outdoor_outlet = VeSyncOutdoorPlug(DEV_LIST_DETAIL, self.vesync_obj)
     assert not outdoor_outlet.turn_on()
     assert not outdoor_outlet.turn_off()