async def test_read_no_password(self, mock_warn, mock_aioresponse): # noqa: F811 """Test read_body without password.""" mock_aioresponse.post( f"{self.base_url}/dyn/getDashValues.json", payload={ "result": { "0199-xxxxx385": { "6800_08822000": { "1": [ { "validVals": [9401, 9402, 9403, 9404, 9405], "val": [{"tag": 9402}], } ] }, } } }, ) session = aiohttp.ClientSession() sma = SMA(session, self.host) sensors = Sensors(device_type_sensor) assert await sma.read(sensors) assert sensors["6800_08822000"].value == "Sunny Boy 3.6" assert mock_warn.call_count == 0
async def init_integration(hass, mock_config_entry): """Create a fake SMA Config Entry.""" mock_config_entry.add_to_hass(hass) with patch("pysma.SMA.read"), patch("pysma.SMA.get_sensors", return_value=Sensors( sensor_map[DEVCLASS_INVERTER])): await hass.config_entries.async_setup(mock_config_entry.entry_id) await hass.async_block_till_done() return mock_config_entry
def test_default_jmes(self, mock_warn): """Ensure default sensors are ok.""" sens = Sensors(sensor_map[DEVCLASS_INVERTER]) for sen in sens: sen.extract_value(SB_1_5) assert mock_warn.called
def test_type_error(self, mock_warn): """Ensure TypeError on not isinstance.""" sen = Sensors() with pytest.raises(TypeError): sen.add("This is not a Sensor")
def test_default_no_duplicates(self, mock_warn): """Ensure warning on duplicates.""" sen = Sensors(sensor_map[DEVCLASS_INVERTER]) assert len(sen) > 20 assert len(sen) < 50 assert mock_warn.call_count == 0 # Add duplicate frequency news = Sensor("key1", "frequency", "") sen.add(news) assert mock_warn.call_count == 1 assert sen[news.name] == news # Add duplicate freq, key should not be raised sen.add(Sensor("6100_00465700", "frequency", "")) assert mock_warn.call_count == 2 # Add duplicate freq key only sen.add(Sensor("6100_00465700", "f001", "")) assert mock_warn.call_count == 3 # Test different key_idx only sen.add(Sensor("key1_0", "frequency_0", "")) assert mock_warn.call_count == 3 sen.add(Sensor("key1_1", "frequency_1", "")) assert mock_warn.call_count == 3