3
3
from homeassistant .components .buienradar .const import (
4
4
CONF_CAMERA ,
5
5
CONF_COUNTRY ,
6
+ CONF_DIMENSION ,
6
7
CONF_SENSOR ,
7
8
CONF_WEATHER ,
8
9
DOMAIN ,
9
10
)
10
- from homeassistant .const import CONF_LATITUDE , CONF_LONGITUDE , CONF_NAME
11
+ from homeassistant .const import CONF_DOMAIN , CONF_LATITUDE , CONF_LONGITUDE , CONF_NAME
12
+
13
+ from tests .async_mock import patch
14
+ from tests .common import MockConfigEntry
11
15
12
16
TEST_LATITUDE = 51.65
13
17
TEST_LONGITUDE = 5.7
19
23
TEST_TIMEFRAME = 60
20
24
21
25
22
- async def test_config_flow_setup_all (hass ):
23
- """
24
- Test flow manually initialized by user.
25
-
26
- Setup all platforms.
27
- """
26
+ async def test_config_flow_setup_camera (hass ):
27
+ """Test setup of camera."""
28
28
result = await hass .config_entries .flow .async_init (
29
29
DOMAIN , context = {"source" : config_entries .SOURCE_USER }
30
30
)
@@ -35,36 +35,35 @@ async def test_config_flow_setup_all(hass):
35
35
36
36
result = await hass .config_entries .flow .async_configure (
37
37
result ["flow_id" ],
38
- {
39
- CONF_NAME : TEST_NAME ,
40
- CONF_LATITUDE : TEST_LATITUDE ,
41
- CONF_LONGITUDE : TEST_LONGITUDE ,
42
- CONF_CAMERA : True ,
43
- CONF_COUNTRY : "NL" ,
44
- },
38
+ {CONF_DOMAIN : "Camera" },
45
39
)
46
40
41
+ assert result ["type" ] == "form"
42
+ assert result ["step_id" ] == "camera"
43
+ assert result ["errors" ] == {}
44
+
45
+ with patch (
46
+ "homeassistant.components.buienradar.async_setup_entry" , return_value = True
47
+ ):
48
+ result = await hass .config_entries .flow .async_configure (
49
+ result ["flow_id" ],
50
+ {CONF_NAME : TEST_NAME , CONF_DIMENSION : 512 , CONF_COUNTRY : "NL" },
51
+ )
52
+
47
53
assert result ["type" ] == "create_entry"
48
54
assert result ["title" ] == TEST_NAME
49
55
assert result ["data" ] == {
50
56
CONF_NAME : TEST_NAME ,
51
- CONF_LATITUDE : TEST_LATITUDE ,
52
- CONF_LONGITUDE : TEST_LONGITUDE ,
53
- CONF_WEATHER : True ,
54
- CONF_CAMERA : True ,
55
- CONF_SENSOR : True ,
57
+ CONF_DIMENSION : 512 ,
56
58
CONF_COUNTRY : "NL" ,
59
+ CONF_WEATHER : False ,
60
+ CONF_CAMERA : True ,
61
+ CONF_SENSOR : False ,
57
62
}
58
63
59
- await hass .async_block_till_done ()
60
64
61
-
62
- async def test_config_flow_setup_without_camera (hass ):
63
- """
64
- Test flow manually initialized by user.
65
-
66
- Setup camera platform
67
- """
65
+ async def test_config_flow_setup_weather (hass ):
66
+ """Test setup of weather."""
68
67
result = await hass .config_entries .flow .async_init (
69
68
DOMAIN , context = {"source" : config_entries .SOURCE_USER }
70
69
)
@@ -75,15 +74,25 @@ async def test_config_flow_setup_without_camera(hass):
75
74
76
75
result = await hass .config_entries .flow .async_configure (
77
76
result ["flow_id" ],
78
- {
79
- CONF_NAME : TEST_NAME ,
80
- CONF_LATITUDE : TEST_LATITUDE ,
81
- CONF_LONGITUDE : TEST_LONGITUDE ,
82
- CONF_CAMERA : False ,
83
- CONF_COUNTRY : "NL" ,
84
- },
77
+ {CONF_DOMAIN : "Weather" },
85
78
)
86
79
80
+ assert result ["type" ] == "form"
81
+ assert result ["step_id" ] == "weather"
82
+ assert result ["errors" ] == {}
83
+
84
+ with patch (
85
+ "homeassistant.components.buienradar.async_setup_entry" , return_value = True
86
+ ):
87
+ result = await hass .config_entries .flow .async_configure (
88
+ result ["flow_id" ],
89
+ {
90
+ CONF_NAME : TEST_NAME ,
91
+ CONF_LATITUDE : TEST_LATITUDE ,
92
+ CONF_LONGITUDE : TEST_LONGITUDE ,
93
+ },
94
+ )
95
+
87
96
assert result ["type" ] == "create_entry"
88
97
assert result ["title" ] == TEST_NAME
89
98
assert result ["data" ] == {
@@ -93,18 +102,68 @@ async def test_config_flow_setup_without_camera(hass):
93
102
CONF_WEATHER : True ,
94
103
CONF_CAMERA : False ,
95
104
CONF_SENSOR : True ,
96
- CONF_COUNTRY : "NL" ,
97
105
}
98
106
99
- await hass .async_block_till_done ()
100
107
108
+ async def test_config_flow_already_configured_camera (hass ):
109
+ """Test already configured."""
110
+ entry = MockConfigEntry (
111
+ domain = DOMAIN ,
112
+ data = {
113
+ CONF_NAME : TEST_NAME ,
114
+ CONF_DIMENSION : 512 ,
115
+ CONF_COUNTRY : "NL" ,
116
+ CONF_WEATHER : False ,
117
+ CONF_CAMERA : True ,
118
+ CONF_SENSOR : False ,
119
+ },
120
+ unique_id = DOMAIN ,
121
+ )
122
+ entry .add_to_hass (hass )
101
123
102
- async def test_config_flow_already_configured (hass ):
103
- """
104
- Test flow manually initialized by user.
124
+ result = await hass .config_entries .flow .async_init (
125
+ DOMAIN , context = {"source" : config_entries .SOURCE_USER }
126
+ )
127
+
128
+ assert result ["type" ] == "form"
129
+ assert result ["step_id" ] == "user"
130
+ assert result ["errors" ] == {}
131
+
132
+ result = await hass .config_entries .flow .async_configure (
133
+ result ["flow_id" ],
134
+ {CONF_DOMAIN : "Camera" },
135
+ )
136
+
137
+ assert result ["type" ] == "form"
138
+ assert result ["step_id" ] == "camera"
139
+ assert result ["errors" ] == {}
140
+
141
+ result = await hass .config_entries .flow .async_configure (
142
+ result ["flow_id" ],
143
+ {CONF_NAME : TEST_NAME , CONF_DIMENSION : 512 , CONF_COUNTRY : "NL" },
144
+ )
145
+
146
+ assert result ["type" ] == "form"
147
+ assert result ["step_id" ] == "camera"
148
+ assert result ["errors" ] == {"base" : "already_configured" }
149
+
150
+
151
+ async def test_config_flow_already_configured_weather (hass ):
152
+ """Test already configured."""
153
+ entry = MockConfigEntry (
154
+ domain = DOMAIN ,
155
+ data = {
156
+ CONF_NAME : TEST_NAME ,
157
+ CONF_LATITUDE : TEST_LATITUDE ,
158
+ CONF_LONGITUDE : TEST_LONGITUDE ,
159
+ CONF_WEATHER : True ,
160
+ CONF_CAMERA : False ,
161
+ CONF_SENSOR : True ,
162
+ },
163
+ unique_id = DOMAIN ,
164
+ )
165
+ entry .add_to_hass (hass )
105
166
106
- Setup all platforms.
107
- """
108
167
result = await hass .config_entries .flow .async_init (
109
168
DOMAIN , context = {"source" : config_entries .SOURCE_USER }
110
169
)
@@ -113,50 +172,118 @@ async def test_config_flow_already_configured(hass):
113
172
assert result ["step_id" ] == "user"
114
173
assert result ["errors" ] == {}
115
174
175
+ result = await hass .config_entries .flow .async_configure (
176
+ result ["flow_id" ],
177
+ {CONF_DOMAIN : "Weather" },
178
+ )
179
+
180
+ assert result ["type" ] == "form"
181
+ assert result ["step_id" ] == "weather"
182
+ assert result ["errors" ] == {}
183
+
116
184
result = await hass .config_entries .flow .async_configure (
117
185
result ["flow_id" ],
118
186
{
119
187
CONF_NAME : TEST_NAME ,
120
188
CONF_LATITUDE : TEST_LATITUDE ,
121
189
CONF_LONGITUDE : TEST_LONGITUDE ,
190
+ },
191
+ )
192
+
193
+ assert result ["type" ] == "form"
194
+ assert result ["step_id" ] == "weather"
195
+ assert result ["errors" ] == {"base" : "already_configured" }
196
+
197
+
198
+ async def test_import_camera (hass ):
199
+ """Test import of camera."""
200
+
201
+ with patch (
202
+ "homeassistant.components.buienradar.async_setup_entry" , return_value = True
203
+ ):
204
+ result = await hass .config_entries .flow .async_init (
205
+ DOMAIN ,
206
+ context = {"source" : config_entries .SOURCE_IMPORT },
207
+ data = {
208
+ CONF_NAME : TEST_NAME ,
209
+ CONF_DIMENSION : TEST_DIMENSION ,
210
+ CONF_COUNTRY : TEST_COUNTRY ,
211
+ CONF_CAMERA : True ,
212
+ CONF_SENSOR : False ,
213
+ CONF_WEATHER : False ,
214
+ },
215
+ )
216
+
217
+ assert result ["type" ] == "create_entry"
218
+ assert result ["title" ] == TEST_NAME
219
+ assert result ["data" ] == {
220
+ CONF_NAME : TEST_NAME ,
221
+ CONF_DIMENSION : 512 ,
222
+ CONF_COUNTRY : "NL" ,
223
+ CONF_WEATHER : False ,
224
+ CONF_CAMERA : True ,
225
+ CONF_SENSOR : False ,
226
+ }
227
+
228
+ result = await hass .config_entries .flow .async_init (
229
+ DOMAIN ,
230
+ context = {"source" : config_entries .SOURCE_IMPORT },
231
+ data = {
232
+ CONF_NAME : TEST_NAME ,
233
+ CONF_DIMENSION : TEST_DIMENSION ,
234
+ CONF_COUNTRY : TEST_COUNTRY ,
122
235
CONF_CAMERA : True ,
123
- CONF_COUNTRY : "NL" ,
236
+ CONF_SENSOR : False ,
237
+ CONF_WEATHER : False ,
124
238
},
125
239
)
126
240
241
+ assert result ["type" ] == "abort"
242
+ assert result ["reason" ] == "already_configured"
243
+
244
+
245
+ async def test_import_weather (hass ):
246
+ """Test import of camera."""
247
+
248
+ with patch (
249
+ "homeassistant.components.buienradar.async_setup_entry" , return_value = True
250
+ ):
251
+ result = await hass .config_entries .flow .async_init (
252
+ DOMAIN ,
253
+ context = {"source" : config_entries .SOURCE_IMPORT },
254
+ data = {
255
+ CONF_NAME : TEST_NAME ,
256
+ CONF_LATITUDE : TEST_LATITUDE ,
257
+ CONF_LONGITUDE : TEST_LONGITUDE ,
258
+ CONF_CAMERA : False ,
259
+ CONF_SENSOR : True ,
260
+ CONF_WEATHER : True ,
261
+ },
262
+ )
263
+
127
264
assert result ["type" ] == "create_entry"
128
265
assert result ["title" ] == TEST_NAME
129
266
assert result ["data" ] == {
130
267
CONF_NAME : TEST_NAME ,
131
268
CONF_LATITUDE : TEST_LATITUDE ,
132
269
CONF_LONGITUDE : TEST_LONGITUDE ,
133
270
CONF_WEATHER : True ,
134
- CONF_CAMERA : True ,
271
+ CONF_CAMERA : False ,
135
272
CONF_SENSOR : True ,
136
- CONF_COUNTRY : "NL" ,
137
273
}
138
274
139
- await hass .async_block_till_done ()
140
-
141
275
result = await hass .config_entries .flow .async_init (
142
- DOMAIN , context = {"source" : config_entries .SOURCE_USER }
143
- )
144
-
145
- assert result ["type" ] == "form"
146
- assert result ["step_id" ] == "user"
147
- assert result ["errors" ] == {}
148
-
149
- result = await hass .config_entries .flow .async_configure (
150
- result ["flow_id" ],
151
- {
276
+ DOMAIN ,
277
+ context = {"source" : config_entries .SOURCE_IMPORT },
278
+ data = {
152
279
CONF_NAME : TEST_NAME ,
153
280
CONF_LATITUDE : TEST_LATITUDE ,
154
281
CONF_LONGITUDE : TEST_LONGITUDE ,
155
- CONF_CAMERA : True ,
156
- CONF_COUNTRY : "NL" ,
282
+ CONF_CAMERA : False ,
283
+ CONF_SENSOR : True ,
284
+ CONF_WEATHER : True ,
157
285
},
158
286
)
159
287
160
- assert result ["type" ] == "form"
161
- assert result ["step_id" ] == "user"
162
- assert result ["errors" ] == {CONF_NAME : "name_exists" }
288
+ assert result ["type" ] == "abort"
289
+ assert result ["reason" ] == "already_configured"
0 commit comments