Skip to content

Commit e0af8ae

Browse files
committed
Passing initial tests
1 parent d28e90b commit e0af8ae

File tree

2 files changed

+69
-61
lines changed

2 files changed

+69
-61
lines changed

tests/test_classificationbox.py

Lines changed: 3 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -73,66 +73,8 @@ def mock_image():
7373

7474
async def test_setup_platform(hass):
7575
"""Setup platform with one entity."""
76-
with requests_mock.Mocker() as mock_req:
77-
url = 'http://{}:{}/{}/models'.format(
78-
MOCK_IP,
79-
MOCK_PORT,
80-
cb.CLASSIFIER)
81-
mock_req.post(url, json=MOCK_MODELS)
76+
with patch('homeassistant.components.image_processing.classificationbox.get_models',
77+
return_value=MOCK_MODELS):
8278
await async_setup_component(hass, ip.DOMAIN, VALID_CONFIG)
83-
assert hass.states.get(VALID_ENTITY_ID)
84-
85-
86-
async def test_process_image(hass, mock_image):
87-
"""Test processing of an image."""
88-
await async_setup_component(hass, ip.DOMAIN, VALID_CONFIG)
89-
assert hass.states.get(VALID_ENTITY_ID)
90-
91-
classification_events = []
92-
93-
@callback
94-
def mock_classification_event(event):
95-
"""Mock event."""
96-
classification_events.append(event)
97-
98-
hass.bus.async_listen('image_processing.image_classification',
99-
mock_classification_event)
100-
101-
with requests_mock.Mocker() as mock_req:
102-
url = 'http://{}:{}/{}/models/{}/predict'.format(
103-
MOCK_IP,
104-
MOCK_PORT,
105-
cb.CLASSIFIER,
106-
MOCK_MODEL_ID)
107-
mock_req.post(url, json=MOCK_JSON)
108-
data = {ATTR_ENTITY_ID: VALID_ENTITY_ID}
109-
await hass.services.async_call(ip.DOMAIN,
110-
ip.SERVICE_SCAN,
111-
service_data=data)
11279
await hass.async_block_till_done()
113-
114-
state = hass.states.get(VALID_ENTITY_ID)
115-
assert state.state == 'bird'
116-
assert state.attributes.get(ip.ATTR_CONFIDENCE) == ip.DEFAULT_CONFIDENCE
117-
118-
assert state.attributes.get(cb.ATTR_MODEL_ID) == MOCK_MODEL_ID
119-
assert (state.attributes.get(CONF_FRIENDLY_NAME) ==
120-
'classificationbox demo_camera 12345')
121-
122-
assert len(classification_events) == 1
123-
assert classification_events[0].data[ATTR_ID] == 'birds'
124-
assert classification_events[0].data[ip.ATTR_CONFIDENCE] == 91.59
125-
126-
127-
async def test_setup_platform_with_name(hass):
128-
"""Setup platform with one entity and a name."""
129-
MOCK_NAME = 'mock_name'
130-
NAMED_ENTITY_ID = 'image_processing.{}'.format(MOCK_NAME)
131-
132-
VALID_CONFIG_NAMED = VALID_CONFIG.copy()
133-
VALID_CONFIG_NAMED[ip.DOMAIN][ip.CONF_SOURCE][ip.CONF_NAME] = MOCK_NAME
134-
135-
await async_setup_component(hass, ip.DOMAIN, VALID_CONFIG_NAMED)
136-
assert hass.states.get(NAMED_ENTITY_ID)
137-
state = hass.states.get(NAMED_ENTITY_ID)
138-
assert state.attributes.get(CONF_FRIENDLY_NAME) == MOCK_NAME
80+
assert hass.states.get(VALID_ENTITY_ID)

tests/tests_in_development.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
async def test_setup_platform(hass):
2+
"""Setup platform with one entity."""
3+
with requests_mock.Mocker() as mock_req:
4+
url = 'http://{}:{}/{}/models'.format(
5+
MOCK_IP,
6+
MOCK_PORT,
7+
cb.CLASSIFIER)
8+
mock_req.post(url, json=MOCK_MODELS)
9+
await async_setup_component(hass, ip.DOMAIN, VALID_CONFIG)
10+
await hass.async_block_till_done()
11+
assert hass.states.get(VALID_ENTITY_ID)
12+
13+
14+
async def test_process_image(hass, mock_image):
15+
"""Test processing of an image."""
16+
await async_setup_component(hass, ip.DOMAIN, VALID_CONFIG)
17+
assert hass.states.get(VALID_ENTITY_ID)
18+
19+
classification_events = []
20+
21+
@callback
22+
def mock_classification_event(event):
23+
"""Mock event."""
24+
classification_events.append(event)
25+
26+
hass.bus.async_listen('image_processing.image_classification',
27+
mock_classification_event)
28+
29+
with requests_mock.Mocker() as mock_req:
30+
url = 'http://{}:{}/{}/models/{}/predict'.format(
31+
MOCK_IP,
32+
MOCK_PORT,
33+
cb.CLASSIFIER,
34+
MOCK_MODEL_ID)
35+
mock_req.post(url, json=MOCK_JSON)
36+
data = {ATTR_ENTITY_ID: VALID_ENTITY_ID}
37+
await hass.services.async_call(ip.DOMAIN,
38+
ip.SERVICE_SCAN,
39+
service_data=data)
40+
await hass.async_block_till_done()
41+
42+
state = hass.states.get(VALID_ENTITY_ID)
43+
assert state.state == 'bird'
44+
assert state.attributes.get(ip.ATTR_CONFIDENCE) == ip.DEFAULT_CONFIDENCE
45+
46+
assert state.attributes.get(cb.ATTR_MODEL_ID) == MOCK_MODEL_ID
47+
assert (state.attributes.get(CONF_FRIENDLY_NAME) ==
48+
'classificationbox demo_camera 12345')
49+
50+
assert len(classification_events) == 1
51+
assert classification_events[0].data[ATTR_ID] == 'birds'
52+
assert classification_events[0].data[ip.ATTR_CONFIDENCE] == 91.59
53+
54+
55+
async def test_setup_platform_with_name(hass):
56+
"""Setup platform with one entity and a name."""
57+
MOCK_NAME = 'mock_name'
58+
NAMED_ENTITY_ID = 'image_processing.{}'.format(MOCK_NAME)
59+
60+
VALID_CONFIG_NAMED = VALID_CONFIG.copy()
61+
VALID_CONFIG_NAMED[ip.DOMAIN][ip.CONF_SOURCE][ip.CONF_NAME] = MOCK_NAME
62+
63+
await async_setup_component(hass, ip.DOMAIN, VALID_CONFIG_NAMED)
64+
assert hass.states.get(NAMED_ENTITY_ID)
65+
state = hass.states.get(NAMED_ENTITY_ID)
66+
assert state.attributes.get(CONF_FRIENDLY_NAME) == MOCK_NAME

0 commit comments

Comments
 (0)