def test_calculation(self): """Test the mold indicator internal calculations.""" self.assertTrue(sensor.setup(self.hass, { 'sensor': { 'platform': 'mold_indicator', 'indoor_temp_sensor': 'test.indoortemp', 'outdoor_temp_sensor': 'test.outdoortemp', 'indoor_humidity_sensor': 'test.indoorhumidity', 'calibration_factor': 2.0 } })) moldind = self.hass.states.get('sensor.mold_indicator') assert moldind # assert dewpoint dewpoint = moldind.attributes.get(ATTR_DEWPOINT) assert dewpoint assert dewpoint > 9.25 assert dewpoint < 9.26 # assert temperature estimation esttemp = moldind.attributes.get(ATTR_CRITICAL_TEMP) assert esttemp assert esttemp > 14.9 assert esttemp < 15.1 # assert mold indicator value state = moldind.state assert state assert state == '68'
def test_custom_setup(self, betamax_session): with patch('homeassistant.components.sensor.yr.requests.Session', return_value=betamax_session): assert sensor.setup( self.hass, { 'sensor': { 'platform': 'yr', 'elevation': 0, 'monitored_conditions': { 'pressure', 'windDirection', 'humidity', 'fog', 'windSpeed' } } }) state = self.hass.states.get('sensor.yr_pressure') assert 'hPa', state.attributes.get('unit_of_measurement') state = self.hass.states.get('sensor.yr_wind_direction') assert '°', state.attributes.get('unit_of_measurement') state = self.hass.states.get('sensor.yr_humidity') assert '%', state.attributes.get('unit_of_measurement') state = self.hass.states.get('sensor.yr_fog') assert '%', state.attributes.get('unit_of_measurement') state = self.hass.states.get('sensor.yr_wind_speed') assert 'm/s', state.attributes.get('unit_of_measurement')
def test_sensor_changed(self): """Test the sensor_changed function.""" self.assertTrue(sensor.setup(self.hass, { 'sensor': { 'platform': 'mold_indicator', 'indoor_temp_sensor': 'test.indoortemp', 'outdoor_temp_sensor': 'test.outdoortemp', 'indoor_humidity_sensor': 'test.indoorhumidity', 'calibration_factor': 2.0 } })) self.hass.states.set('test.indoortemp', '30', {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}) self.hass.pool.block_till_done() assert self.hass.states.get('sensor.mold_indicator').state == '90' self.hass.states.set('test.outdoortemp', '25', {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}) self.hass.pool.block_till_done() assert self.hass.states.get('sensor.mold_indicator').state == '57' self.hass.states.set('test.indoorhumidity', '20', {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}) self.hass.pool.block_till_done() assert self.hass.states.get('sensor.mold_indicator').state == '23'
def test_custom_setup(self, betamax_session): with patch('homeassistant.components.sensor.yr.requests.Session', return_value=betamax_session): assert sensor.setup(self.hass, { 'sensor': { 'platform': 'yr', 'elevation': 0, 'monitored_conditions': { 'pressure', 'windDirection', 'humidity', 'fog', 'windSpeed' } } }) state = self.hass.states.get('sensor.yr_pressure') assert 'hPa', state.attributes.get('unit_of_measurement') state = self.hass.states.get('sensor.yr_wind_direction') assert '°', state.attributes.get('unit_of_measurement') state = self.hass.states.get('sensor.yr_humidity') assert '%', state.attributes.get('unit_of_measurement') state = self.hass.states.get('sensor.yr_fog') assert '%', state.attributes.get('unit_of_measurement') state = self.hass.states.get('sensor.yr_wind_speed') assert 'm/s', state.attributes.get('unit_of_measurement')
def test_sensor_changed(self): """Test the sensor_changed function.""" self.assertTrue( sensor.setup( self.hass, { 'sensor': { 'platform': 'mold_indicator', 'indoor_temp_sensor': 'test.indoortemp', 'outdoor_temp_sensor': 'test.outdoortemp', 'indoor_humidity_sensor': 'test.indoorhumidity', 'calibration_factor': 2.0 } })) self.hass.states.set('test.indoortemp', '30', {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}) self.hass.pool.block_till_done() assert self.hass.states.get('sensor.mold_indicator').state == '90' self.hass.states.set('test.outdoortemp', '25', {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}) self.hass.pool.block_till_done() assert self.hass.states.get('sensor.mold_indicator').state == '57' self.hass.states.set('test.indoorhumidity', '20', {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}) self.hass.pool.block_till_done() assert self.hass.states.get('sensor.mold_indicator').state == '23'
def test_invalidhum(self): """Test invalid sensor values.""" self.hass.states.set('test.indoortemp', '10', {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}) self.hass.states.set('test.outdoortemp', '10', {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}) self.hass.states.set('test.indoorhumidity', '0', {ATTR_UNIT_OF_MEASUREMENT: '%'}) self.assertTrue( sensor.setup( self.hass, { 'sensor': { 'platform': 'mold_indicator', 'indoor_temp_sensor': 'test.indoortemp', 'outdoor_temp_sensor': 'test.outdoortemp', 'indoor_humidity_sensor': 'test.indoorhumidity', 'calibration_factor': '2.0' } })) moldind = self.hass.states.get('sensor.mold_indicator') assert moldind # assert state assert moldind.state == '0'
def test_calculation(self): """Test the mold indicator internal calculations.""" self.assertTrue( sensor.setup( self.hass, { 'sensor': { 'platform': 'mold_indicator', 'indoor_temp_sensor': 'test.indoortemp', 'outdoor_temp_sensor': 'test.outdoortemp', 'indoor_humidity_sensor': 'test.indoorhumidity', 'calibration_factor': 2.0 } })) moldind = self.hass.states.get('sensor.mold_indicator') assert moldind # assert dewpoint dewpoint = moldind.attributes.get(ATTR_DEWPOINT) assert dewpoint assert dewpoint > 9.25 assert dewpoint < 9.26 # assert temperature estimation esttemp = moldind.attributes.get(ATTR_CRITICAL_TEMP) assert esttemp assert esttemp > 14.9 assert esttemp < 15.1 # assert mold indicator value state = moldind.state assert state assert state == '68'
def test_no_sensors_does_not_create(self): assert sensor.setup(self.hass, { 'sensor': { 'platform': 'template' } }) assert self.hass.states.all() == []
def test_setup_adds_proper_devices(self, mock_sensor, mock_client): ports = {i: mock.MagicMock(model=model) for i, model in enumerate(mfi.SENSOR_MODELS)} ports["bad"] = mock.MagicMock(model="notasensor") print(ports["bad"].model) mock_client.return_value.get_devices.return_value = [mock.MagicMock(ports=ports)] assert sensor.setup(self.hass, self.GOOD_CONFIG) for ident, port in ports.items(): if ident != "bad": mock_sensor.assert_any_call(port, self.hass) assert mock.call(ports["bad"], self.hass) not in mock_sensor.mock_calls
def test_invalid_sensor_does_not_create(self): assert sensor.setup(self.hass, { 'sensor': { 'platform': 'template', 'sensors': { 'test_template_sensor': 'invalid' } } }) assert self.hass.states.all() == []
def test_invalid_sensor_does_not_create(self): assert sensor.setup( self.hass, { 'sensor': { 'platform': 'template', 'sensors': { 'test_template_sensor': 'invalid' } } }) assert self.hass.states.all() == []
def test_setup_adds_proper_devices(self, mock_sensor, mock_client): ports = {i: mock.MagicMock(model=model) for i, model in enumerate(mfi.SENSOR_MODELS)} ports['bad'] = mock.MagicMock(model='notasensor') print(ports['bad'].model) mock_client.return_value.get_devices.return_value = \ [mock.MagicMock(ports=ports)] assert sensor.setup(self.hass, self.GOOD_CONFIG) for ident, port in ports.items(): if ident != 'bad': mock_sensor.assert_any_call(port, self.hass) assert mock.call(ports['bad'], self.hass) not in mock_sensor.mock_calls
def test_invalid_name_does_not_create(self): assert sensor.setup(self.hass, { 'sensor': { 'platform': 'template', 'sensors': { 'test INVALID sensor': { 'value_template': "{{ states.sensor.test_state.state }}" } } } }) assert self.hass.states.all() == []
def test_missing_template_does_not_create(self): assert sensor.setup(self.hass, { 'sensor': { 'platform': 'template', 'sensors': { 'test_template_sensor': { 'not_value_template': "{{ states.sensor.test_state.state }}" } } } }) assert self.hass.states.all() == []
def test_missing_template_does_not_create(self): assert sensor.setup( self.hass, { 'sensor': { 'platform': 'template', 'sensors': { 'test_template_sensor': { 'not_value_template': "{{ states.sensor.test_state.state }}" } } } }) assert self.hass.states.all() == []
def test_invalid_name_does_not_create(self): assert sensor.setup( self.hass, { 'sensor': { 'platform': 'template', 'sensors': { 'test INVALID sensor': { 'value_template': "{{ states.sensor.test_state.state }}" } } } }) assert self.hass.states.all() == []
def test_setup(self): """Test the mold indicator sensor setup.""" self.assertTrue(sensor.setup(self.hass, { 'sensor': { 'platform': 'mold_indicator', 'indoor_temp_sensor': 'test.indoortemp', 'outdoor_temp_sensor': 'test.outdoortemp', 'indoor_humidity_sensor': 'test.indoorhumidity', 'calibration_factor': 2.0 } })) moldind = self.hass.states.get('sensor.mold_indicator') assert moldind assert '%' == moldind.attributes.get('unit_of_measurement')
def test_template_attribute_missing(self): assert sensor.setup(self.hass, { 'sensor': { 'platform': 'template', 'sensors': { 'test_template_sensor': { 'value_template': "It {{ states.sensor.test_state.attributes.missing }}." } } } }) state = self.hass.states.get('sensor.test_template_sensor') assert state.state == 'error'
def setup_method(self, method): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() mock_mqtt_component(self.hass) self.assertTrue(sensor.setup(self.hass, { sensor.DOMAIN: { CONF_PLATFORM: 'mqtt_room', CONF_NAME: NAME, CONF_DEVICE_ID: DEVICE_ID, CONF_STATE_TOPIC: 'room_presence', CONF_QOS: DEFAULT_QOS, CONF_TIMEOUT: 5 }})) # Clear state between tests self.hass.states.set(SENSOR_STATE, None)
def test_setting_sensor_value_via_mqtt_json_message(self): self.assertTrue(sensor.setup(self.hass, { 'sensor': { 'platform': 'mqtt', 'name': 'test', 'state_topic': 'test-topic', 'unit_of_measurement': 'fav unit', 'state_format': 'json:val' } })) fire_mqtt_message(self.hass, 'test-topic', '{ "val": "100" }') self.hass.pool.block_till_done() state = self.hass.states.get('sensor.test') self.assertEqual('100', state.state)
def test_setting_sensor_value_via_mqtt_json_message(self): self.assertTrue(sensor.setup(self.hass, { 'sensor': { 'platform': 'mqtt', 'name': 'test', 'state_topic': 'test-topic', 'unit_of_measurement': 'fav unit', 'value_template': '{{ value_json.val }}' } })) fire_mqtt_message(self.hass, 'test-topic', '{ "val": "100" }') self.hass.pool.block_till_done() state = self.hass.states.get('sensor.test') self.assertEqual('100', state.state)
def test_template_attribute_missing(self): assert sensor.setup( self.hass, { 'sensor': { 'platform': 'template', 'sensors': { 'test_template_sensor': { 'value_template': "It {{ states.sensor.test_state.attributes.missing }}." } } } }) state = self.hass.states.get('sensor.test_template_sensor') assert state.state == 'error'
def test_template_syntax_error(self): assert sensor.setup( self.hass, { 'sensor': { 'platform': 'template', 'sensors': { 'test_template_sensor': { 'value_template': "{% if rubbish %}" } } } }) self.hass.states.set('sensor.test_state', 'Works') self.hass.pool.block_till_done() state = self.hass.states.get('sensor.test_template_sensor') assert state.state == 'error'
def test_template_syntax_error(self): assert sensor.setup(self.hass, { 'sensor': { 'platform': 'template', 'sensors': { 'test_template_sensor': { 'value_template': "{% if rubbish %}" } } } }) self.hass.states.set('sensor.test_state', 'Works') self.hass.pool.block_till_done() state = self.hass.states.get('sensor.test_template_sensor') assert state.state == 'error'
def test_setup(self): """Test the mold indicator sensor setup.""" self.assertTrue( sensor.setup( self.hass, { 'sensor': { 'platform': 'mold_indicator', 'indoor_temp_sensor': 'test.indoortemp', 'outdoor_temp_sensor': 'test.outdoortemp', 'indoor_humidity_sensor': 'test.indoorhumidity', 'calibration_factor': 2.0 } })) moldind = self.hass.states.get('sensor.mold_indicator') assert moldind assert '%' == moldind.attributes.get('unit_of_measurement')
def test_default_setup(self, betamax_session): now = datetime(2016, 1, 5, 1, tzinfo=dt_util.UTC) with patch('homeassistant.components.sensor.yr.requests.Session', return_value=betamax_session): with patch('homeassistant.components.sensor.yr.dt_util.utcnow', return_value=now): assert sensor.setup(self.hass, { 'sensor': { 'platform': 'yr', 'elevation': 0, } }) state = self.hass.states.get('sensor.yr_symbol') assert state.state.isnumeric() assert state.attributes.get('unit_of_measurement') is None
def test_default_setup(self, betamax_session): now = datetime(2016, 1, 5, 1, tzinfo=dt_util.UTC) with patch('homeassistant.components.sensor.yr.requests.Session', return_value=betamax_session): with patch('homeassistant.components.sensor.yr.dt_util.utcnow', return_value=now): assert sensor.setup( self.hass, {'sensor': { 'platform': 'yr', 'elevation': 0, }}) state = self.hass.states.get('sensor.yr_symbol') assert state.state.isnumeric() assert state.attributes.get('unit_of_measurement') is None
def setup_method(self, method): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() mock_mqtt_component(self.hass) self.assertTrue( sensor.setup( self.hass, { sensor.DOMAIN: { CONF_PLATFORM: 'mqtt_room', CONF_NAME: NAME, CONF_DEVICE_ID: DEVICE_ID, CONF_STATE_TOPIC: 'room_presence', CONF_QOS: DEFAULT_QOS, CONF_TIMEOUT: 5 } })) # Clear state between tests self.hass.states.set(SENSOR_STATE, None)
def test_template(self): assert sensor.setup(self.hass, { 'sensor': { 'platform': 'template', 'sensors': { 'test_template_sensor': { 'value_template': "{{ states.sensor.test_state.state }}" } } } }) state = self.hass.states.get('sensor.test_template_sensor') assert state.state == '' self.hass.states.set('sensor.test_state', 'Works') self.hass.pool.block_till_done() state = self.hass.states.get('sensor.test_template_sensor') assert state.state == 'Works'
def test_setting_sensor_value_via_mqtt_message(self): """Test the setting of the value via MQTT.""" self.assertTrue( sensor.setup( self.hass, { 'sensor': { 'platform': 'mqtt', 'name': 'test', 'state_topic': 'test-topic', 'unit_of_measurement': 'fav unit' } })) fire_mqtt_message(self.hass, 'test-topic', '100') self.hass.pool.block_till_done() state = self.hass.states.get('sensor.test') self.assertEqual('100', state.state) self.assertEqual('fav unit', state.attributes.get('unit_of_measurement'))
def test_custom_setup(self, betamax_session): """Test a custom setup.""" now = datetime(2016, 1, 5, 1, tzinfo=dt_util.UTC) with patch('homeassistant.components.sensor.yr.requests.Session', return_value=betamax_session): with patch('homeassistant.components.sensor.yr.dt_util.utcnow', return_value=now): assert sensor.setup(self.hass, { 'sensor': { 'platform': 'yr', 'elevation': 0, 'monitored_conditions': { 'pressure', 'windDirection', 'humidity', 'fog', 'windSpeed' } } }) state = self.hass.states.get('sensor.yr_pressure') assert 'hPa' == state.attributes.get('unit_of_measurement') assert '1025.1' == state.state state = self.hass.states.get('sensor.yr_wind_direction') assert '°' == state.attributes.get('unit_of_measurement') assert '81.8' == state.state state = self.hass.states.get('sensor.yr_humidity') assert '%' == state.attributes.get('unit_of_measurement') assert '79.6' == state.state state = self.hass.states.get('sensor.yr_fog') assert '%' == state.attributes.get('unit_of_measurement') assert '0.0' == state.state state = self.hass.states.get('sensor.yr_wind_speed') assert 'm/s', state.attributes.get('unit_of_measurement') assert '4.3' == state.state
def test_invalidhum(self): """Test invalid sensor values.""" self.hass.states.set('test.indoortemp', '10', {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}) self.hass.states.set('test.outdoortemp', '10', {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}) self.hass.states.set('test.indoorhumidity', '0', {ATTR_UNIT_OF_MEASUREMENT: '%'}) self.assertTrue(sensor.setup(self.hass, { 'sensor': { 'platform': 'mold_indicator', 'indoor_temp_sensor': 'test.indoortemp', 'outdoor_temp_sensor': 'test.outdoortemp', 'indoor_humidity_sensor': 'test.indoorhumidity', 'calibration_factor': 2.0 } })) moldind = self.hass.states.get('sensor.mold_indicator') assert moldind assert moldind.state == '0'
def test_no_sensors_does_not_create(self): """Test no sensors.""" assert sensor.setup(self.hass, {'sensor': {'platform': 'template'}}) assert self.hass.states.all() == []