tests: check item prefill with custom id (#88024)

This commit is contained in:
Frédéric Péters 2024-03-11 22:53:39 +01:00
parent 977cdb0019
commit f6e228b438
1 changed files with 101 additions and 0 deletions

View File

@ -631,6 +631,107 @@ def test_form_page_item_with_variable_data_source_prefill(pub):
assert not resp.pyquery('#form_error_f2').text()
def test_form_page_item_with_card_with_custom_id_prefill(pub):
create_user(pub)
CardDef.wipe()
carddef = CardDef()
carddef.name = 'Test'
carddef.fields = [
fields.StringField(id='0', label='blah', varname='blah'),
]
carddef.digest_templates = {'default': '{{ form_var_blah|upper }}'}
carddef.id_template = '{{ form_var_blah }}'
carddef.store()
carddef.data_class().wipe()
carddata1 = carddef.data_class()()
carddata1.data = {'0': 'bar'}
carddata1.just_created()
carddata1.store()
carddata2 = carddef.data_class()()
carddata2.data = {'0': 'foo'}
carddata2.just_created()
carddata2.store()
formdef = create_formdef()
formdef.data_class().wipe()
formdef.fields = [
fields.ItemField(
id='2',
label='item',
varname='item',
required=False,
data_source={'type': 'carddef:test'},
prefill={'type': 'string', 'value': 'foo'},
),
]
formdef.store()
resp = get_app(pub).get('/test/')
assert [x.attrib['value'] for x in resp.pyquery('#form_f2 option')] == ['bar', 'foo']
assert resp.form['f2'].value == 'foo'
assert not resp.pyquery('#form_error_f2').text()
def test_form_page_block_with_item_with_card_with_custom_id_prefill(pub):
create_user(pub)
CardDef.wipe()
carddef = CardDef()
carddef.name = 'Test'
carddef.fields = [
fields.StringField(id='0', label='blah', varname='blah'),
]
carddef.digest_templates = {'default': 'card {{ form_var_blah }}'}
carddef.id_template = '{{ form_var_blah }}'
carddef.store()
carddef.data_class().wipe()
carddata1 = carddef.data_class()()
carddata1.data = {'0': 'bar'}
carddata1.just_created()
carddata1.store()
carddata2 = carddef.data_class()()
carddata2.data = {'0': 'foo'}
carddata2.just_created()
carddata2.store()
BlockDef.wipe()
block = BlockDef()
block.name = 'foobar'
block.fields = [
fields.ItemField(
id='123',
label='item',
varname='item',
required=False,
data_source={'type': 'carddef:test'},
),
]
block.store()
formdef = create_formdef()
formdef.data_class().wipe()
formdef.fields = [
fields.BlockField(
id='2',
label='test',
block_slug='foobar',
varname='foobar',
prefill={'type': 'string', 'value': '{% block_value item="foo" %}'},
),
]
formdef.store()
resp = get_app(pub).get('/test/')
assert [x.attrib['value'] for x in resp.pyquery('#form_f2__element0__f123 option')] == ['bar', 'foo']
assert resp.form['f2$element0$f123'].value == 'foo'
assert not resp.pyquery('.widget-with-error')
def test_form_page_item_with_computed_field_variable_data_source_prefill(pub):
create_user(pub)
formdef = create_formdef()