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
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
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
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
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
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
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
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()