1407 |
1407 |
resp = resp.form.submit('submit') # -> validation page
|
1408 |
1408 |
assert 'Check values then click submit.' in resp
|
1409 |
1409 |
assert '<p>%s</p>' % random_user.name in resp
|
|
1410 |
|
|
1411 |
|
|
1412 |
def test_backoffice_submission_user_selection_then_live(pub):
|
|
1413 |
user = create_user(pub)
|
|
1414 |
|
|
1415 |
for i in range(10):
|
|
1416 |
random_user = pub.user_class()
|
|
1417 |
random_user.name = 'random user %s' % i
|
|
1418 |
random_user.email = 'test%s@invalid' % i
|
|
1419 |
random_user.store()
|
|
1420 |
|
|
1421 |
FormDef.wipe()
|
|
1422 |
formdef = FormDef()
|
|
1423 |
formdef.name = 'form title'
|
|
1424 |
formdef.fields = [
|
|
1425 |
fields.PageField(id='0', label='1st page', type='page'),
|
|
1426 |
fields.StringField(id='1', label='Field on 1st page', type='string'),
|
|
1427 |
fields.PageField(id='2', label='2nd page', type='page'),
|
|
1428 |
fields.StringField(id='3', label='Field on 2nd page', type='string',
|
|
1429 |
varname='plop',
|
|
1430 |
prefill={'type': 'user', 'value': 'email'}),
|
|
1431 |
fields.StringField(id='4', label='2nd field on 2nd page', type='string',
|
|
1432 |
prefill={'type': 'string', 'value': '{{form_user_email}}', 'locked': True}),
|
|
1433 |
fields.StringField(id='5', label='field with condition', type='string',
|
|
1434 |
condition={'type': 'django', 'value': 'form_var_plop == "bye"'}),
|
|
1435 |
]
|
|
1436 |
formdef.backoffice_submission_roles = user.roles[:]
|
|
1437 |
formdef.workflow_roles = {'_receiver': 1}
|
|
1438 |
formdef.store()
|
|
1439 |
|
|
1440 |
app = login(get_app(pub))
|
|
1441 |
resp = app.get('/backoffice/submission/')
|
|
1442 |
resp = resp.click(formdef.name)
|
|
1443 |
|
|
1444 |
assert resp.form['submission_channel'].attrs['type'] == 'hidden'
|
|
1445 |
assert resp.pyquery('.submit-user-selection')
|
|
1446 |
resp.form['user_id'] = str(random_user.id) # happens via javascript
|
|
1447 |
resp.form['f1'] = 'test submission'
|
|
1448 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
1449 |
assert resp.form['f3'].value == random_user.email
|
|
1450 |
assert resp.form['f4'].value == random_user.email
|
|
1451 |
|
|
1452 |
live_url = resp.html.find('form').attrs['data-live-url']
|
|
1453 |
live_resp = app.post(live_url, params=resp.form.submit_fields())
|
|
1454 |
assert live_resp.json['result']['4']['content'] == random_user.email
|
|
1455 |
|
|
1456 |
resp.form['f4'] = 'altered value' # alter value
|
|
1457 |
|
|
1458 |
resp = resp.form.submit('submit') # -> validation page
|
|
1459 |
assert 'Check values then click submit.' in resp
|
|
1460 |
assert 'altered value' not in resp
|