6303 |
6303 |
assert formdata.data['3'] == 'a'
|
6304 |
6304 |
assert formdata.data['3_display'] == 'b'
|
6305 |
6305 |
|
|
6306 |
def test_field_live_select_content_on_workflow_form(pub, http_requests):
|
|
6307 |
create_user(pub)
|
|
6308 |
wf = Workflow(name='wf-title')
|
|
6309 |
st1 = wf.add_status('Status1', 'st1')
|
|
6310 |
|
|
6311 |
# form displayed into the workflow
|
|
6312 |
display_form = FormWorkflowStatusItem()
|
|
6313 |
display_form.id = '_x'
|
|
6314 |
display_form.by = ['_submitter']
|
|
6315 |
display_form.varname = 'xxx'
|
|
6316 |
display_form.formdef = WorkflowFormFieldsFormDef(item=display_form)
|
|
6317 |
display_form.formdef.fields = [
|
|
6318 |
fields.StringField(type='string', id='1', label='Bar', size='40',
|
|
6319 |
required=True, varname='bar'),
|
|
6320 |
fields.StringField(type='string', id='2', label='Bar2', size='40',
|
|
6321 |
required=True, varname='bar2'),
|
|
6322 |
fields.ItemField(type='item', id='3', label='Foo',
|
|
6323 |
required=False, varname='foo',
|
|
6324 |
data_source={
|
|
6325 |
'type': 'json',
|
|
6326 |
'value': '{% if xxx_var_bar2 %}http://remote.example.net/json-list?plop={{xxx_var_bar2}}{% endif %}'
|
|
6327 |
}),
|
|
6328 |
]
|
|
6329 |
st1.items.append(display_form)
|
|
6330 |
display_form.parent = st1
|
|
6331 |
wf.store()
|
|
6332 |
|
|
6333 |
# initial empty form
|
|
6334 |
formdef = create_formdef()
|
|
6335 |
formdef.fields = []
|
|
6336 |
formdef.confirmation = False
|
|
6337 |
formdef.workflow_id = wf.id
|
|
6338 |
formdef.store()
|
|
6339 |
formdef.data_class().wipe()
|
|
6340 |
|
|
6341 |
app = get_app(pub)
|
|
6342 |
resp = login(app, username='foo', password='foo').get('/test/')
|
|
6343 |
assert 'Forms - test' in resp.text
|
|
6344 |
|
|
6345 |
resp = resp.form.submit('submit').follow()
|
|
6346 |
assert 'The form has been recorded' in resp.text
|
|
6347 |
|
|
6348 |
assert 'f1' in resp.form.fields
|
|
6349 |
assert 'f2' in resp.form.fields
|
|
6350 |
assert resp.html.find('div', {'data-field-id': '2'}).attrs['data-live-source'] == 'true'
|
|
6351 |
assert resp.html.find('div', {'data-field-id': '3'}).find('select')
|
|
6352 |
resp.form['f1'] = 'hello'
|
|
6353 |
live_resp = app.post('/test/1/live', params=resp.form.submit_fields())
|
|
6354 |
assert live_resp.json['result']['1']['visible']
|
|
6355 |
assert live_resp.json['result']['2']['visible']
|
|
6356 |
assert live_resp.json['result']['3']['visible']
|
|
6357 |
assert not 'items' in live_resp.json['result']['3']
|
|
6358 |
resp.form['f2'] = 'plop'
|
|
6359 |
live_resp = app.post('/test/1/live?modified_field_id=2', params=resp.form.submit_fields())
|
|
6360 |
assert live_resp.json['result']['1']['visible']
|
|
6361 |
assert live_resp.json['result']['2']['visible']
|
|
6362 |
assert live_resp.json['result']['3']['visible']
|
|
6363 |
assert 'items' in live_resp.json['result']['3']
|
|
6364 |
assert len(live_resp.json['result']['3']['items']) > 0
|
|
6365 |
|
|
6366 |
resp.form['f3'].options = []
|
|
6367 |
for item in live_resp.json['result']['3']['items']:
|
|
6368 |
# simulate javascript filling the <select>
|
|
6369 |
resp.form['f3'].options.append((item['id'], False, item['text']))
|
|
6370 |
resp.form['f3'] = 'a'
|
|
6371 |
|
|
6372 |
resp = resp.form.submit('submit')
|
|
6373 |
assert 'invalid value selected' not in resp
|
|
6374 |
resp = resp.follow()
|
|
6375 |
formdata = formdef.data_class().select()[0]
|
|
6376 |
assert formdata.workflow_data['xxx_var_bar'] == 'hello'
|
|
6377 |
assert formdata.workflow_data['xxx_var_bar2'] == 'plop'
|
|
6378 |
assert formdata.workflow_data['xxx_var_foo_raw'] == 'a'
|
|
6379 |
assert formdata.workflow_data['xxx_var_foo'] == 'b'
|
|
6380 |
|
6306 |
6381 |
def test_field_live_comment_content(pub, http_requests):
|
6307 |
6382 |
FormDef.wipe()
|
6308 |
6383 |
formdef = FormDef()
|
6309 |
|
-
|