From 8a1c049dff525d62ae1d756ee89d49f8b91632d5 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 31 Jan 2023 12:18:06 +0100 Subject: [PATCH] testdef: use field.set_value in test run (#73444) --- tests/test_testdef.py | 58 +++++++++++++++++++++++++++++++++++++++++++ wcs/testdef.py | 2 +- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/tests/test_testdef.py b/tests/test_testdef.py index a2147db33..64e0b4136 100644 --- a/tests/test_testdef.py +++ b/tests/test_testdef.py @@ -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' diff --git a/wcs/testdef.py b/wcs/testdef.py index 101fa8f96..75fe036a9 100644 --- a/wcs/testdef.py +++ b/wcs/testdef.py @@ -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()