6412 |
6412 |
assert formdata.data['3'] == 'a'
|
6413 |
6413 |
assert formdata.data['3_display'] == 'b'
|
6414 |
6414 |
|
|
6415 |
def test_field_live_select_content_on_workflow_form(pub, http_requests):
|
|
6416 |
create_user(pub)
|
|
6417 |
wf = Workflow(name='wf-title')
|
|
6418 |
st1 = wf.add_status('Status1', 'st1')
|
|
6419 |
|
|
6420 |
# form displayed into the workflow
|
|
6421 |
display_form = FormWorkflowStatusItem()
|
|
6422 |
display_form.id = '_x'
|
|
6423 |
display_form.by = ['_submitter']
|
|
6424 |
display_form.varname = 'xxx'
|
|
6425 |
display_form.formdef = WorkflowFormFieldsFormDef(item=display_form)
|
|
6426 |
display_form.formdef.fields = [
|
|
6427 |
fields.StringField(type='string', id='1', label='Bar', size='40',
|
|
6428 |
required=True, varname='bar'),
|
|
6429 |
fields.StringField(type='string', id='2', label='Bar2', size='40',
|
|
6430 |
required=True, varname='bar2'),
|
|
6431 |
fields.ItemField(type='item', id='3', label='Foo',
|
|
6432 |
required=False, varname='foo',
|
|
6433 |
data_source={
|
|
6434 |
'type': 'json',
|
|
6435 |
'value': '{% if xxx_var_bar2 %}http://remote.example.net/json-list?plop={{xxx_var_bar2}}{% endif %}'
|
|
6436 |
}),
|
|
6437 |
]
|
|
6438 |
st1.items.append(display_form)
|
|
6439 |
display_form.parent = st1
|
|
6440 |
wf.store()
|
|
6441 |
|
|
6442 |
# initial empty form
|
|
6443 |
formdef = create_formdef()
|
|
6444 |
formdef.fields = []
|
|
6445 |
formdef.confirmation = False
|
|
6446 |
formdef.workflow_id = wf.id
|
|
6447 |
formdef.store()
|
|
6448 |
formdef.data_class().wipe()
|
|
6449 |
|
|
6450 |
app = get_app(pub)
|
|
6451 |
resp = login(app, username='foo', password='foo').get('/test/')
|
|
6452 |
assert 'Forms - test' in resp.text
|
|
6453 |
|
|
6454 |
resp = resp.form.submit('submit').follow()
|
|
6455 |
assert 'The form has been recorded' in resp.text
|
|
6456 |
|
|
6457 |
assert 'data-live-url' in resp.html.find('form').attrs
|
|
6458 |
assert 'f1' in resp.form.fields
|
|
6459 |
assert 'f2' in resp.form.fields
|
|
6460 |
assert resp.html.find('div', {'data-field-id': '2'}).attrs['data-live-source'] == 'true'
|
|
6461 |
assert resp.html.find('div', {'data-field-id': '3'}).find('select')
|
|
6462 |
resp = resp.form.submit('submit') # submit with error, to check <form> attributes
|
|
6463 |
assert 'data-live-url' in resp.html.find('form').attrs
|
|
6464 |
assert 'f1' in resp.form.fields
|
|
6465 |
assert 'f2' in resp.form.fields
|
|
6466 |
assert resp.html.find('div', {'data-field-id': '2'}).attrs['data-live-source'] == 'true'
|
|
6467 |
assert resp.html.find('div', {'data-field-id': '3'}).find('select')
|
|
6468 |
resp.form['f1'] = 'hello'
|
|
6469 |
live_resp = app.post('/test/1/live', params=resp.form.submit_fields())
|
|
6470 |
assert live_resp.json['result']['1']['visible']
|
|
6471 |
assert live_resp.json['result']['2']['visible']
|
|
6472 |
assert live_resp.json['result']['3']['visible']
|
|
6473 |
assert not 'items' in live_resp.json['result']['3']
|
|
6474 |
resp.form['f2'] = 'plop'
|
|
6475 |
live_resp = app.post('/test/1/live?modified_field_id=2', params=resp.form.submit_fields())
|
|
6476 |
assert live_resp.json['result']['1']['visible']
|
|
6477 |
assert live_resp.json['result']['2']['visible']
|
|
6478 |
assert live_resp.json['result']['3']['visible']
|
|
6479 |
assert 'items' in live_resp.json['result']['3']
|
|
6480 |
assert len(live_resp.json['result']['3']['items']) > 0
|
|
6481 |
|
|
6482 |
resp.form['f3'].options = []
|
|
6483 |
for item in live_resp.json['result']['3']['items']:
|
|
6484 |
# simulate javascript filling the <select>
|
|
6485 |
resp.form['f3'].options.append((item['id'], False, item['text']))
|
|
6486 |
resp.form['f3'] = 'a'
|
|
6487 |
|
|
6488 |
resp = resp.form.submit('submit')
|
|
6489 |
assert 'invalid value selected' not in resp
|
|
6490 |
resp = resp.follow()
|
|
6491 |
formdata = formdef.data_class().select()[0]
|
|
6492 |
assert formdata.workflow_data['xxx_var_bar'] == 'hello'
|
|
6493 |
assert formdata.workflow_data['xxx_var_bar2'] == 'plop'
|
|
6494 |
assert formdata.workflow_data['xxx_var_foo_raw'] == 'a'
|
|
6495 |
assert formdata.workflow_data['xxx_var_foo'] == 'b'
|
|
6496 |
|
6415 |
6497 |
def test_field_live_comment_content(pub, http_requests):
|
6416 |
6498 |
FormDef.wipe()
|
6417 |
6499 |
formdef = FormDef()
|
6418 |
|
-
|