Exemplo n.º 1
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'
Exemplo n.º 2
0
    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')
Exemplo n.º 3
0
    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'
Exemplo n.º 4
0
    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')
Exemplo n.º 5
0
    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'
Exemplo n.º 6
0
    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'
Exemplo n.º 7
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'
Exemplo n.º 8
0
 def test_no_sensors_does_not_create(self):
     assert sensor.setup(self.hass, {
         'sensor': {
             'platform': 'template'
         }
     })
     assert self.hass.states.all() == []
Exemplo n.º 9
0
 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
Exemplo n.º 10
0
 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() == []
Exemplo n.º 11
0
 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() == []
Exemplo n.º 12
0
 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
Exemplo n.º 13
0
 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() == []
Exemplo n.º 14
0
 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() == []
Exemplo n.º 15
0
 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() == []
Exemplo n.º 16
0
 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() == []
Exemplo n.º 17
0
    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')
Exemplo n.º 18
0
    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'
Exemplo n.º 19
0
    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)
Exemplo n.º 20
0
    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)
Exemplo n.º 21
0
    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)
Exemplo n.º 22
0
    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'
Exemplo n.º 23
0
    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'
Exemplo n.º 24
0
    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'
Exemplo n.º 25
0
    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')
Exemplo n.º 26
0
    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
Exemplo n.º 27
0
    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
Exemplo n.º 28
0
    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)
Exemplo n.º 29
0
    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'
Exemplo n.º 30
0
    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'))
Exemplo n.º 31
0
    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
Exemplo n.º 32
0
    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'
Exemplo n.º 33
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() == []