tests: add check for advanced structured form option usage
This commit is contained in:
parent
7c5ded1980
commit
38ec86215e
|
@ -34,7 +34,8 @@ from wcs.formdef import FormDef
|
|||
from wcs.workflows import (Workflow, EditableWorkflowStatusItem,
|
||||
DisplayMessageWorkflowStatusItem, WorkflowBackofficeFieldsFormDef,
|
||||
ChoiceWorkflowStatusItem, JumpOnSubmitWorkflowStatusItem,
|
||||
SendmailWorkflowStatusItem, CommentableWorkflowStatusItem)
|
||||
SendmailWorkflowStatusItem, CommentableWorkflowStatusItem,
|
||||
WorkflowVariablesFieldsFormDef)
|
||||
from wcs.wf.backoffice_fields import SetBackofficeFieldsWorkflowStatusItem
|
||||
from wcs.wf.export_to_model import ExportToModel, transform_to_pdf
|
||||
from wcs.wf.jump import JumpWorkflowStatusItem
|
||||
|
@ -7987,3 +7988,71 @@ def test_form_honeypot(pub):
|
|||
resp.forms[0]['f00'] = 'honey?'
|
||||
resp = resp.forms[0].submit('submit')
|
||||
assert 'Honey pot should be left untouched.' in resp
|
||||
|
||||
|
||||
def test_structured_workflow_options(pub):
|
||||
create_user_and_admin(pub)
|
||||
|
||||
workflow = Workflow(name='test')
|
||||
workflow.variables_formdef = WorkflowVariablesFieldsFormDef(workflow=workflow)
|
||||
data_source = {
|
||||
'type': 'formula',
|
||||
'value': repr([
|
||||
{'id': '1', 'text': 'un', 'more': 'foo'},
|
||||
{'id': '2', 'text': 'deux', 'more': 'bar'}
|
||||
])
|
||||
}
|
||||
workflow.variables_formdef.fields = [
|
||||
fields.StringField(id='1', label='Test', type='string', varname='foo'),
|
||||
fields.ItemField(id='2', label='Test List', type='item', varname='bar',
|
||||
data_source=data_source),
|
||||
fields.ItemsField(id='3', label='Test Multi', type='items', varname='baz',
|
||||
data_source=data_source),
|
||||
]
|
||||
st1 = workflow.add_status('Status1', 'st1')
|
||||
workflow.store()
|
||||
|
||||
formdef = create_formdef()
|
||||
formdef.fields = [
|
||||
fields.ItemField(id='1', label='Test List', type='item', varname='bar',
|
||||
data_source={'type': 'formula', 'value': 'form_option_baz_structured'}),
|
||||
]
|
||||
formdef.store()
|
||||
formdef.workflow_id = workflow.id
|
||||
formdef.store()
|
||||
|
||||
formdef.data_class().wipe()
|
||||
|
||||
# configure workflow options
|
||||
resp = login(get_app(pub), username='admin', password='admin').get(
|
||||
'/backoffice/forms/%s/' % formdef.id)
|
||||
resp = resp.click('Options')
|
||||
resp.form['f1'].value = 'plop'
|
||||
resp.form['f2'].value = '1'
|
||||
resp.form['f3$element1'].checked = True
|
||||
resp = resp.form.submit('submit')
|
||||
|
||||
formdef = FormDef.get(formdef.id)
|
||||
assert formdef.workflow_options == {
|
||||
'foo': 'plop',
|
||||
'bar': '1',
|
||||
'bar_display': 'un',
|
||||
'bar_structured': {'id': '1', 'more': 'foo', 'text': 'un'},
|
||||
'baz': ['1'],
|
||||
'baz_display': 'un',
|
||||
'baz_structured': [{'id': '1', 'more': 'foo', 'text': 'un'}],
|
||||
}
|
||||
|
||||
app = login(get_app(pub), username='foo', password='foo')
|
||||
resp = app.get('/test/')
|
||||
assert resp.form['f1'].options == [('1', False, 'un')]
|
||||
resp = resp.form.submit('submit') # form page
|
||||
resp = resp.form.submit('submit') # confirmation page
|
||||
resp = resp.follow()
|
||||
|
||||
formdata = formdef.data_class().select()[0]
|
||||
assert formdata.data == {
|
||||
'1': '1',
|
||||
'1_display': 'un',
|
||||
'1_structured': {'id': '1', 'text': 'un', 'more': 'foo'},
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue