[Image_Processing][Breaking Change] Cleanup Base face class add support for microsoft face detect (#5802)

* [Image_Processing] Cleanup Base face class add support for microsoft face detect

* fix lint

* add unittest for micosoft detect

* fix test
This commit is contained in:
Pascal Vizeli 2017-02-08 18:19:40 +01:00 committed by Paulus Schoutsen
parent 3f82ef64a1
commit 881d53339b
9 changed files with 400 additions and 54 deletions

View file

@ -110,7 +110,7 @@ class TestImageProcessing(object):
class TestImageProcessingAlpr(object):
"""Test class for image processing."""
"""Test class for alpr image processing."""
def setup_method(self):
"""Setup things to be run when tests are started."""
@ -142,7 +142,7 @@ class TestImageProcessingAlpr(object):
"""Mock event."""
self.alpr_events.append(event)
self.hass.bus.listen('found_plate', mock_alpr_event)
self.hass.bus.listen('image_processing.found_plate', mock_alpr_event)
def teardown_method(self):
"""Stop everything that was started."""
@ -211,8 +211,8 @@ class TestImageProcessingAlpr(object):
assert event_data[0]['entity_id'] == 'image_processing.demo_alpr'
class TestImageProcessingFaceIdentify(object):
"""Test class for image processing."""
class TestImageProcessingFace(object):
"""Test class for face image processing."""
def setup_method(self):
"""Setup things to be run when tests are started."""
@ -228,7 +228,7 @@ class TestImageProcessingFaceIdentify(object):
}
with patch('homeassistant.components.image_processing.demo.'
'DemoImageProcessingFaceIdentify.should_poll',
'DemoImageProcessingFace.should_poll',
new_callable=PropertyMock(return_value=False)):
setup_component(self.hass, ip.DOMAIN, config)
@ -244,7 +244,7 @@ class TestImageProcessingFaceIdentify(object):
"""Mock event."""
self.face_events.append(event)
self.hass.bus.listen('identify_face', mock_face_event)
self.hass.bus.listen('image_processing.detect_face', mock_face_event)
def teardown_method(self):
"""Stop everything that was started."""
@ -254,10 +254,10 @@ class TestImageProcessingFaceIdentify(object):
"""Setup and scan a picture and test faces from event."""
aioclient_mock.get(self.url, content=b'image')
ip.scan(self.hass, entity_id='image_processing.demo_face_identify')
ip.scan(self.hass, entity_id='image_processing.demo_face')
self.hass.block_till_done()
state = self.hass.states.get('image_processing.demo_face_identify')
state = self.hass.states.get('image_processing.demo_face')
assert len(self.face_events) == 2
assert state.state == 'Hans'
@ -268,5 +268,31 @@ class TestImageProcessingFaceIdentify(object):
assert len(event_data) == 1
assert event_data[0]['name'] == 'Hans'
assert event_data[0]['confidence'] == 98.34
assert event_data[0]['gender'] == 'male'
assert event_data[0]['entity_id'] == \
'image_processing.demo_face_identify'
'image_processing.demo_face'
@patch('homeassistant.components.image_processing.demo.'
'DemoImageProcessingFace.confidence',
new_callable=PropertyMock(return_value=None))
def test_face_event_call_no_confidence(self, mock_confi, aioclient_mock):
"""Setup and scan a picture and test faces from event."""
aioclient_mock.get(self.url, content=b'image')
ip.scan(self.hass, entity_id='image_processing.demo_face')
self.hass.block_till_done()
state = self.hass.states.get('image_processing.demo_face')
assert len(self.face_events) == 3
assert state.state == '4'
assert state.attributes['total_faces'] == 4
event_data = [event.data for event in self.face_events if
event.data.get('name') == 'Hans']
assert len(event_data) == 1
assert event_data[0]['name'] == 'Hans'
assert event_data[0]['confidence'] == 98.34
assert event_data[0]['gender'] == 'male'
assert event_data[0]['entity_id'] == \
'image_processing.demo_face'