0003-fields-detect-and-report-more-invalid-map-values-575.patch
tests/test_fields.py | ||
---|---|---|
396 | 396 |
keys = substvars.get_flat_keys() |
397 | 397 |
assert 'form_var_map_lon' not in keys |
398 | 398 | |
399 |
# set invalid value, it is ignored |
|
400 |
with pytest.raises(fields.SetValueError): |
|
401 |
formdef.fields[0].set_value(formdata.data, 'XXX;YYY') |
|
402 | ||
403 |
# set invalid value without using set_value() |
|
404 |
formdata.data['5'] = 'XXX;YYY' |
|
405 |
substvars = CompatibilityNamesDict() |
|
406 |
substvars.update(formdata.get_substitution_variables()) |
|
407 |
keys = substvars.get_flat_keys() |
|
408 |
assert 'form_var_map_lon' not in keys |
|
409 | ||
399 | 410 | |
400 | 411 |
def test_item_render(): |
401 | 412 |
items_kwargs = [] |
tests/workflow/test_all.py | ||
---|---|---|
4571 | 4571 |
assert logged_error.formdata_id == str(formdata.id) |
4572 | 4572 |
assert logged_error.exception_class == 'SetValueError' |
4573 | 4573 |
assert logged_error.exception_message == "invalid coordinates 'invalid value' (missing ;)" |
4574 |
two_pubs.loggederror_class.wipe() |
|
4575 | ||
4576 |
item.fields = [{'field_id': 'bo1', 'value': 'XXX;YYY'}] |
|
4577 |
item.perform(formdata) |
|
4578 |
formdata = formdef.data_class().get(formdata.id) |
|
4579 |
if two_pubs.is_using_postgresql(): |
|
4580 |
assert two_pubs.loggederror_class.count() == 1 |
|
4581 |
logged_error = two_pubs.loggederror_class.select()[0] |
|
4582 |
assert logged_error.summary == "Failed to set Map field (bo1), error: invalid coordinates 'XXX;YYY'" |
|
4583 |
assert logged_error.formdata_id == str(formdata.id) |
|
4584 |
assert logged_error.exception_class == 'SetValueError' |
|
4585 |
assert logged_error.exception_message == "invalid coordinates 'XXX;YYY'" |
|
4586 |
two_pubs.loggederror_class.wipe() |
|
4574 | 4587 | |
4575 | 4588 | |
4576 | 4589 |
def test_set_backoffice_field_decimal(http_requests, two_pubs): |
wcs/fields.py | ||
---|---|---|
3159 | 3159 |
def set_value(self, data, value, raise_on_error=False): |
3160 | 3160 |
if value == '': |
3161 | 3161 |
value = None |
3162 |
if value and ';' not in value: |
|
3162 |
elif value and ';' not in value:
|
|
3163 | 3163 |
raise SetValueError('invalid coordinates %r (missing ;)' % value) |
3164 |
elif value: |
|
3165 |
try: |
|
3166 |
dummy, dummy = (float(x) for x in value.split(';')) |
|
3167 |
except ValueError: |
|
3168 |
# will catch both "too many values to unpack" and invalid float values |
|
3169 |
raise SetValueError('invalid coordinates %r' % value) |
|
3164 | 3170 |
super().set_value(data, value) |
3165 | 3171 | |
3166 | 3172 | |
3167 |
- |