@@ -106,12 +106,13 @@ 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 },
115
116
}
116
117
117
118
invalid_values = {
@@ -129,6 +130,53 @@ def test_missing_keys(self):
129
130
self .assertEqual (postcode_error .code , "required" )
130
131
self .assertEqual (house_number_error .code , "required" )
131
132
133
+ def test_missing_keys_when_autofill_and_component_optional (self ):
134
+ component : AddressNLComponent = {
135
+ "key" : "addressNl" ,
136
+ "type" : "addressNL" ,
137
+ "label" : "AddressNL missing keys" ,
138
+ "deriveAddress" : True ,
139
+ "validate" : {"required" : False },
140
+ }
141
+
142
+ invalid_values = {
143
+ "addressNl" : {
144
+ "houseLetter" : "A" ,
145
+ }
146
+ }
147
+
148
+ is_valid , _ = validate_formio_data (component , invalid_values )
149
+
150
+ self .assertTrue (is_valid )
151
+
152
+ def test_missing_keys_when_component_required (self ):
153
+ component : AddressNLComponent = {
154
+ "key" : "addressNl" ,
155
+ "type" : "addressNL" ,
156
+ "label" : "AddressNL missing keys" ,
157
+ "deriveAddress" : True ,
158
+ "validate" : {"required" : True },
159
+ }
160
+
161
+ invalid_values = {
162
+ "addressNl" : {
163
+ "houseLetter" : "A" ,
164
+ }
165
+ }
166
+
167
+ is_valid , errors = validate_formio_data (component , invalid_values )
168
+
169
+ postcode_error = extract_error (errors ["addressNl" ], "postcode" )
170
+ house_number_error = extract_error (errors ["addressNl" ], "houseNumber" )
171
+ street_name_error = extract_error (errors ["addressNl" ], "streetName" )
172
+ city_error = extract_error (errors ["addressNl" ], "city" )
173
+
174
+ self .assertFalse (is_valid )
175
+ self .assertEqual (postcode_error .code , "required" )
176
+ self .assertEqual (house_number_error .code , "required" )
177
+ self .assertEqual (street_name_error .code , "required" )
178
+ self .assertEqual (city_error .code , "required" )
179
+
132
180
def test_plugin_validator (self ):
133
181
with replace_validators_registry () as register :
134
182
register ("postcode_validator" )(PostcodeValidator )
@@ -150,6 +198,8 @@ def test_plugin_validator(self):
150
198
"houseNumber" : "3" ,
151
199
"houseLetter" : "A" ,
152
200
"houseNumberAddition" : "" ,
201
+ "streetName" : "Keizersgracht" ,
202
+ "city" : "Amsterdam" ,
153
203
}
154
204
},
155
205
)
@@ -176,7 +226,7 @@ def test_addressNL_field_secret_success(self):
176
226
"key" : "addressNl" ,
177
227
"type" : "addressNL" ,
178
228
"label" : "AddressNL secret success" ,
179
- "deriveAddress" : False ,
229
+ "deriveAddress" : True ,
180
230
}
181
231
182
232
message = "1015CJ/117/Amsterdam/Keizersgracht"
@@ -190,6 +240,7 @@ def test_addressNL_field_secret_success(self):
190
240
"city" : "Amsterdam" ,
191
241
"streetName" : "Keizersgracht" ,
192
242
"secretStreetCity" : secret ,
243
+ "autoPopulated" : True ,
193
244
}
194
245
}
195
246
@@ -214,6 +265,7 @@ def test_addressNL_field_secret_failure(self):
214
265
"city" : "Amsterdam" ,
215
266
"streetName" : "Keizersgracht" ,
216
267
"secretStreetCity" : "invalid secret" ,
268
+ "autoPopulated" : True ,
217
269
}
218
270
}
219
271
@@ -224,6 +276,32 @@ def test_addressNL_field_secret_failure(self):
224
276
self .assertFalse (is_valid )
225
277
self .assertEqual (secret_error .code , "invalid" )
226
278
279
+ def test_addressNL_field_secret_not_used_when_manual_address (self ):
280
+ component : AddressNLComponent = {
281
+ "key" : "addressNl" ,
282
+ "type" : "addressNL" ,
283
+ "label" : "AddressNL secret failure" ,
284
+ "deriveAddress" : True ,
285
+ "validate" : {"required" : False },
286
+ }
287
+
288
+ data = {
289
+ "addressNl" : {
290
+ "postcode" : "1015CJ" ,
291
+ "houseNumber" : "117" ,
292
+ "houseLetter" : "" ,
293
+ "houseNumberAddition" : "" ,
294
+ "city" : "Amsterdam" ,
295
+ "streetName" : "Keizersgracht" ,
296
+ "secretStreetCity" : "a secret" ,
297
+ "autoPopulated" : False ,
298
+ }
299
+ }
300
+
301
+ is_valid , _ = validate_formio_data (component , data )
302
+
303
+ self .assertTrue (is_valid )
304
+
227
305
def test_addressNL_field_missing_city (self ):
228
306
component : AddressNLComponent = {
229
307
"key" : "addressNl" ,
0 commit comments