testdef: use field.set_value in test run (#73444)

This commit is contained in:
Valentin Deniaud 2023-01-31 12:18:06 +01:00 committed by Gitea
parent 8bfc31bc00
commit 8a1c049dff
2 changed files with 59 additions and 1 deletions

View File

@ -1,4 +1,5 @@
import datetime
import json
import time
import pytest
@ -270,6 +271,63 @@ def test_validation_item_field(pub):
assert str(excinfo.value) == 'Invalid value "xxx" for field "Test": invalid value selected.'
def test_item_field_display_value(pub):
formdef = FormDef()
formdef.name = 'test title'
formdef.fields = [
fields.PageField(
id='0',
label='1st page',
type='page',
post_conditions=[
{'condition': {'type': 'django', 'value': 'form_var_item == "foo"'}, 'error_message': ''}
],
),
fields.ItemField(id='1', label='Test', type='item', items=['foo', 'bar', 'baz'], varname='item'),
]
formdef.store()
formdata = formdef.data_class()()
formdata.just_created()
formdata.receipt_time = datetime.datetime(2021, 1, 1, 0, 0).timetuple()
formdata.data['1'] = 'foo'
testdef = TestDef.create_from_formdata(formdef, formdata)
testdef.run(formdef)
def test_item_field_structured_value(pub):
data_source = {
'type': 'jsonvalue',
'value': json.dumps(
[{'id': '1', 'text': 'un', 'more': 'foo'}, {'id': '2', 'text': 'deux', 'more': 'bar'}]
),
}
formdef = FormDef()
formdef.name = 'test title'
formdef.fields = [
fields.PageField(
id='0',
label='1st page',
type='page',
post_conditions=[
{'condition': {'type': 'django', 'value': 'form_var_item_more == "bar"'}, 'error_message': ''}
],
),
fields.ItemField(id='1', label='Test', type='item', varname='item', data_source=data_source),
]
formdef.store()
formdata = formdef.data_class()()
formdata.just_created()
formdata.receipt_time = datetime.datetime(2021, 1, 1, 0, 0).timetuple()
formdata.data['1'] = '2'
testdef = TestDef.create_from_formdata(formdef, formdata)
testdef.run(formdef)
def test_validation_items_field(pub):
formdef = FormDef()
formdef.name = 'test title'

View File

@ -185,7 +185,7 @@ class TestDef(sql.TestDef):
value = self.data['fields'].get(field.id)
value = field.from_json_value(value)
self.run_widget_validation(field, value)
formdata.data[field.id] = value
field.set_value(formdata.data, value)
get_publisher().substitutions.invalidate_cache()