@@ -106,12 +106,88 @@ def test_addressNL_field_regex_pattern_success(self):
106
106
107
107
self .assertTrue (is_valid )
108
108
109
- def test_missing_keys (self ):
109
+ def test_missing_keys_when_component_optional (self ):
110
110
component : AddressNLComponent = {
111
111
"key" : "addressNl" ,
112
112
"type" : "addressNL" ,
113
113
"label" : "AddressNL missing keys" ,
114
114
"deriveAddress" : False ,
115
+ "validate" : {"required" : False },
116
+ }
117
+
118
+ data = {
119
+ "addressNl" : {
120
+ "houseLetter" : "A" ,
121
+ }
122
+ }
123
+
124
+ is_valid , _ = validate_formio_data (component , data )
125
+
126
+ self .assertTrue (is_valid )
127
+
128
+ def test_postcode_housenumber_combination (self ):
129
+ component : AddressNLComponent = {
130
+ "key" : "addressNl" ,
131
+ "type" : "addressNL" ,
132
+ "label" : "AddressNL missing keys" ,
133
+ "deriveAddress" : False ,
134
+ "validate" : {"required" : False },
135
+ }
136
+
137
+ with self .subTest ("valid postcode and missing housenumber" ):
138
+ data = {
139
+ "addressNl" : {
140
+ "postcode" : "1234AA" ,
141
+ }
142
+ }
143
+
144
+ is_valid , errors = validate_formio_data (component , data )
145
+
146
+ combination_error = extract_error (errors ["addressNl" ], "non_field_errors" )
147
+
148
+ self .assertFalse (is_valid )
149
+ self .assertEqual (combination_error .code , "required" )
150
+
151
+ with self .subTest ("missing postcode and valid housenumber" ):
152
+ data = {
153
+ "addressNl" : {
154
+ "houseNumber" : "2" ,
155
+ }
156
+ }
157
+
158
+ is_valid , errors = validate_formio_data (component , data )
159
+
160
+ combination_error = extract_error (errors ["addressNl" ], "non_field_errors" )
161
+
162
+ self .assertFalse (is_valid )
163
+ self .assertEqual (combination_error .code , "required" )
164
+
165
+ def test_missing_keys_when_autofill_and_component_optional (self ):
166
+ component : AddressNLComponent = {
167
+ "key" : "addressNl" ,
168
+ "type" : "addressNL" ,
169
+ "label" : "AddressNL missing keys" ,
170
+ "deriveAddress" : True ,
171
+ "validate" : {"required" : False },
172
+ }
173
+
174
+ data = {
175
+ "addressNl" : {
176
+ "houseLetter" : "A" ,
177
+ }
178
+ }
179
+
180
+ is_valid , _ = validate_formio_data (component , data )
181
+
182
+ self .assertTrue (is_valid )
183
+
184
+ def test_missing_keys_when_component_required (self ):
185
+ component : AddressNLComponent = {
186
+ "key" : "addressNl" ,
187
+ "type" : "addressNL" ,
188
+ "label" : "AddressNL missing keys" ,
189
+ "deriveAddress" : True ,
190
+ "validate" : {"required" : True },
115
191
}
116
192
117
193
invalid_values = {
@@ -124,10 +200,14 @@ def test_missing_keys(self):
124
200
125
201
postcode_error = extract_error (errors ["addressNl" ], "postcode" )
126
202
house_number_error = extract_error (errors ["addressNl" ], "houseNumber" )
203
+ street_name_error = extract_error (errors ["addressNl" ], "streetName" )
204
+ city_error = extract_error (errors ["addressNl" ], "city" )
127
205
128
206
self .assertFalse (is_valid )
129
207
self .assertEqual (postcode_error .code , "required" )
130
208
self .assertEqual (house_number_error .code , "required" )
209
+ self .assertEqual (street_name_error .code , "required" )
210
+ self .assertEqual (city_error .code , "required" )
131
211
132
212
def test_plugin_validator (self ):
133
213
with replace_validators_registry () as register :
@@ -138,7 +218,7 @@ def test_plugin_validator(self):
138
218
"type" : "addressNL" ,
139
219
"label" : "AddressNL plugin validator" ,
140
220
"deriveAddress" : False ,
141
- "validate" : {"plugins" : ["postcode_validator" ]},
221
+ "validate" : {"required" : False , " plugins" : ["postcode_validator" ]},
142
222
}
143
223
144
224
with self .subTest ("valid value" ):
@@ -150,6 +230,8 @@ def test_plugin_validator(self):
150
230
"houseNumber" : "3" ,
151
231
"houseLetter" : "A" ,
152
232
"houseNumberAddition" : "" ,
233
+ "streetName" : "Keizersgracht" ,
234
+ "city" : "Amsterdam" ,
153
235
}
154
236
},
155
237
)
@@ -176,7 +258,7 @@ def test_addressNL_field_secret_success(self):
176
258
"key" : "addressNl" ,
177
259
"type" : "addressNL" ,
178
260
"label" : "AddressNL secret success" ,
179
- "deriveAddress" : False ,
261
+ "deriveAddress" : True ,
180
262
}
181
263
182
264
message = "1015CJ/117/Amsterdam/Keizersgracht"
@@ -190,6 +272,7 @@ def test_addressNL_field_secret_success(self):
190
272
"city" : "Amsterdam" ,
191
273
"streetName" : "Keizersgracht" ,
192
274
"secretStreetCity" : secret ,
275
+ "autoPopulated" : True ,
193
276
}
194
277
}
195
278
@@ -214,6 +297,7 @@ def test_addressNL_field_secret_failure(self):
214
297
"city" : "Amsterdam" ,
215
298
"streetName" : "Keizersgracht" ,
216
299
"secretStreetCity" : "invalid secret" ,
300
+ "autoPopulated" : True ,
217
301
}
218
302
}
219
303
@@ -224,6 +308,32 @@ def test_addressNL_field_secret_failure(self):
224
308
self .assertFalse (is_valid )
225
309
self .assertEqual (secret_error .code , "invalid" )
226
310
311
+ def test_addressNL_field_secret_not_used_when_manual_address (self ):
312
+ component : AddressNLComponent = {
313
+ "key" : "addressNl" ,
314
+ "type" : "addressNL" ,
315
+ "label" : "AddressNL secret failure" ,
316
+ "deriveAddress" : True ,
317
+ "validate" : {"required" : False },
318
+ }
319
+
320
+ data = {
321
+ "addressNl" : {
322
+ "postcode" : "1015CJ" ,
323
+ "houseNumber" : "117" ,
324
+ "houseLetter" : "" ,
325
+ "houseNumberAddition" : "" ,
326
+ "city" : "Amsterdam" ,
327
+ "streetName" : "Keizersgracht" ,
328
+ "secretStreetCity" : "a secret" ,
329
+ "autoPopulated" : False ,
330
+ }
331
+ }
332
+
333
+ is_valid , _ = validate_formio_data (component , data )
334
+
335
+ self .assertTrue (is_valid )
336
+
227
337
def test_addressNL_field_missing_city (self ):
228
338
component : AddressNLComponent = {
229
339
"key" : "addressNl" ,
0 commit comments