@@ -106,12 +106,51 @@ 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_missing_keys_when_autofill_and_component_optional (self ):
129
+ component : AddressNLComponent = {
130
+ "key" : "addressNl" ,
131
+ "type" : "addressNL" ,
132
+ "label" : "AddressNL missing keys" ,
133
+ "deriveAddress" : True ,
134
+ "validate" : {"required" : False },
135
+ }
136
+
137
+ data = {
138
+ "addressNl" : {
139
+ "houseLetter" : "A" ,
140
+ }
141
+ }
142
+
143
+ is_valid , _ = validate_formio_data (component , data )
144
+
145
+ self .assertTrue (is_valid )
146
+
147
+ def test_missing_keys_when_component_required (self ):
148
+ component : AddressNLComponent = {
149
+ "key" : "addressNl" ,
150
+ "type" : "addressNL" ,
151
+ "label" : "AddressNL missing keys" ,
152
+ "deriveAddress" : True ,
153
+ "validate" : {"required" : True },
115
154
}
116
155
117
156
invalid_values = {
@@ -124,10 +163,14 @@ def test_missing_keys(self):
124
163
125
164
postcode_error = extract_error (errors ["addressNl" ], "postcode" )
126
165
house_number_error = extract_error (errors ["addressNl" ], "houseNumber" )
166
+ street_name_error = extract_error (errors ["addressNl" ], "streetName" )
167
+ city_error = extract_error (errors ["addressNl" ], "city" )
127
168
128
169
self .assertFalse (is_valid )
129
170
self .assertEqual (postcode_error .code , "required" )
130
171
self .assertEqual (house_number_error .code , "required" )
172
+ self .assertEqual (street_name_error .code , "required" )
173
+ self .assertEqual (city_error .code , "required" )
131
174
132
175
def test_plugin_validator (self ):
133
176
with replace_validators_registry () as register :
@@ -138,7 +181,7 @@ def test_plugin_validator(self):
138
181
"type" : "addressNL" ,
139
182
"label" : "AddressNL plugin validator" ,
140
183
"deriveAddress" : False ,
141
- "validate" : {"plugins" : ["postcode_validator" ]},
184
+ "validate" : {"required" : False , " plugins" : ["postcode_validator" ]},
142
185
}
143
186
144
187
with self .subTest ("valid value" ):
@@ -150,6 +193,8 @@ def test_plugin_validator(self):
150
193
"houseNumber" : "3" ,
151
194
"houseLetter" : "A" ,
152
195
"houseNumberAddition" : "" ,
196
+ "streetName" : "Keizersgracht" ,
197
+ "city" : "Amsterdam" ,
153
198
}
154
199
},
155
200
)
@@ -176,7 +221,7 @@ def test_addressNL_field_secret_success(self):
176
221
"key" : "addressNl" ,
177
222
"type" : "addressNL" ,
178
223
"label" : "AddressNL secret success" ,
179
- "deriveAddress" : False ,
224
+ "deriveAddress" : True ,
180
225
}
181
226
182
227
message = "1015CJ/117/Amsterdam/Keizersgracht"
@@ -190,6 +235,7 @@ def test_addressNL_field_secret_success(self):
190
235
"city" : "Amsterdam" ,
191
236
"streetName" : "Keizersgracht" ,
192
237
"secretStreetCity" : secret ,
238
+ "autoPopulated" : True ,
193
239
}
194
240
}
195
241
@@ -214,6 +260,7 @@ def test_addressNL_field_secret_failure(self):
214
260
"city" : "Amsterdam" ,
215
261
"streetName" : "Keizersgracht" ,
216
262
"secretStreetCity" : "invalid secret" ,
263
+ "autoPopulated" : True ,
217
264
}
218
265
}
219
266
@@ -224,6 +271,32 @@ def test_addressNL_field_secret_failure(self):
224
271
self .assertFalse (is_valid )
225
272
self .assertEqual (secret_error .code , "invalid" )
226
273
274
+ def test_addressNL_field_secret_not_used_when_manual_address (self ):
275
+ component : AddressNLComponent = {
276
+ "key" : "addressNl" ,
277
+ "type" : "addressNL" ,
278
+ "label" : "AddressNL secret failure" ,
279
+ "deriveAddress" : True ,
280
+ "validate" : {"required" : False },
281
+ }
282
+
283
+ data = {
284
+ "addressNl" : {
285
+ "postcode" : "1015CJ" ,
286
+ "houseNumber" : "117" ,
287
+ "houseLetter" : "" ,
288
+ "houseNumberAddition" : "" ,
289
+ "city" : "Amsterdam" ,
290
+ "streetName" : "Keizersgracht" ,
291
+ "secretStreetCity" : "a secret" ,
292
+ "autoPopulated" : False ,
293
+ }
294
+ }
295
+
296
+ is_valid , _ = validate_formio_data (component , data )
297
+
298
+ self .assertTrue (is_valid )
299
+
227
300
def test_addressNL_field_missing_city (self ):
228
301
component : AddressNLComponent = {
229
302
"key" : "addressNl" ,
0 commit comments