misc: speed up backoffice submission tests

This commit is contained in:
Lauréline Guérin 2020-11-13 14:25:54 +01:00
parent da284799ab
commit daa3e23f61
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
1 changed files with 236 additions and 174 deletions

View File

@ -17,7 +17,7 @@ from wcs.wf.jump import JumpWorkflowStatusItem
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef
from .test_all import create_environment, create_superuser, create_user
from .test_all import create_superuser, create_user
def pytest_generate_tests(metafunc):
@ -64,7 +64,25 @@ def teardown_module(module):
def test_backoffice_submission(pub):
user = create_user(pub)
create_environment(pub)
datasource = {'type': 'formula', 'value': repr([('A', 'aa'), ('B', 'bb'), ('C', 'cc')])}
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings']),
fields.ItemField(
id='2', label='2nd field', type='item',
items=['foo', 'bar', 'baz'],
display_locations=['validation', 'summary', 'listings']),
fields.ItemField(
id='3', label='3rd field', type='item',
data_source=datasource, varname='foo'),
]
formdef.workflow_roles = {'_receiver': 1}
formdef.store()
app = login(get_app(pub))
resp = app.get('/backoffice/')
@ -156,9 +174,16 @@ def test_backoffice_submission(pub):
def test_backoffice_submission_with_tracking_code(pub):
user = create_user(pub)
create_environment(pub)
formdef = FormDef.get_by_urlname('form-title')
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings']),
]
formdef.workflow_roles = {'_receiver': 1}
formdef.backoffice_submission_roles = user.roles[:]
formdef.enable_tracking_codes = True
formdef.store()
@ -168,8 +193,6 @@ def test_backoffice_submission_with_tracking_code(pub):
resp = resp.click(formdef.name)
resp.form['f1'] = 'test submission'
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit')
assert 'Check values then click submit.' in resp.text
# final submit
@ -209,20 +232,16 @@ def test_backoffice_submission_with_tracking_code(pub):
def test_backoffice_submission_welco(pub, welco_url):
user = create_user(pub)
create_environment(pub)
app = login(get_app(pub))
resp = app.get('/backoffice/')
assert 'Submission' not in resp.text
app.get('/backoffice/submission/', status=403)
formdef = FormDef.get_by_urlname('form-title')
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = []
formdef.backoffice_submission_roles = user.roles[:]
formdef.store()
# if it's empty, redirect to welco
resp = app.get('/backoffice/')
assert 'Submission' in resp.text
app = login(get_app(pub))
resp = app.get('/backoffice/submission/')
assert resp.location == 'http://welco.example.net'
@ -234,8 +253,6 @@ def test_backoffice_submission_welco(pub, welco_url):
formdata.submission_agent_id = str(user.id)
formdata.store()
resp = app.get('/backoffice/')
assert 'Submission' in resp.text
resp = app.get('/backoffice/submission/')
assert 'Submission to complete' in resp.text
# check agent name is displayed next to pending submission
@ -244,11 +261,10 @@ def test_backoffice_submission_welco(pub, welco_url):
def test_backoffice_submission_initiated_from_welco(pub, welco_url):
user = create_user(pub)
create_environment(pub)
app = login(get_app(pub))
formdef = FormDef.get_by_urlname('form-title')
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.PageField(
id='0', label='1st PAGE', type='page',
@ -260,6 +276,8 @@ def test_backoffice_submission_initiated_from_welco(pub, welco_url):
formdef.backoffice_submission_roles = user.roles[:]
formdef.store()
app = login(get_app(pub))
def post_formdata():
signed_url = sign_url(
'http://example.net/api/formdefs/form-title/submit'
@ -301,11 +319,17 @@ def test_backoffice_submission_initiated_from_welco(pub, welco_url):
def test_backoffice_submission_with_return_url(pub):
user = create_user(pub)
create_environment(pub)
formdef = FormDef.get_by_urlname('form-title')
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings']),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.enable_tracking_codes = True
formdef.workflow_roles = {'_receiver': 1}
formdef.store()
app = login(get_app(pub))
@ -317,8 +341,6 @@ def test_backoffice_submission_with_return_url(pub):
resp = app.get('/backoffice/submission/form-title/?ReturnURL=https://example.org')
resp = resp.follow().follow()
resp.form['f1'] = 'test submission'
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit') # -> to validation
resp = resp.form.submit('submit') # -> to submit
assert resp.location.startswith('http://example.net/backoffice/management/form-title/')
@ -329,8 +351,6 @@ def test_backoffice_submission_with_return_url(pub):
resp = app.get('/backoffice/submission/form-title/?ReturnURL=https://example.org')
resp = resp.follow().follow()
resp.form['f1'] = 'test submission'
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit') # -> to validation
resp = resp.form.submit('submit') # -> to submit
assert resp.location == 'https://example.org'
@ -339,8 +359,6 @@ def test_backoffice_submission_with_return_url(pub):
resp = app.get('/backoffice/submission/form-title/?ReturnURL=https://example.org')
resp = resp.follow().follow()
resp.form['f1'] = 'test submission'
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit') # -> to validation
resp = resp.click('Delete this form')
resp = resp.form.submit('delete')
@ -349,15 +367,17 @@ def test_backoffice_submission_with_return_url(pub):
def test_backoffice_parallel_submission(pub):
user = create_user(pub)
create_environment(pub)
app = login(get_app(pub))
resp = app.get('/backoffice/')
app.get('/backoffice/submission/', status=403)
formdef = FormDef.get_by_urlname('form-title')
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings']),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.enable_tracking_codes = True
formdef.workflow_roles = {'_receiver': 1}
formdef.store()
formdata = formdef.data_class()()
@ -367,6 +387,7 @@ def test_backoffice_parallel_submission(pub):
formdata.submission_agent_id = str(user.id)
formdata.store()
app = login(get_app(pub))
resp = app.get('/backoffice/submission/')
assert 'Submission to complete' in resp.text
resp1 = app.get('/backoffice/submission/form-title/%s/' % formdata.id)
@ -377,14 +398,10 @@ def test_backoffice_parallel_submission(pub):
resp3 = resp3.follow()
resp1.form['f1'] = 'foo'
resp1.form['f2'] = 'bar'
resp1.form['f3'] = 'C'
resp1 = resp1.form.submit('submit') # to validation page
# also move the second form to the validation page
resp2.form['f1'] = 'bar'
resp2.form['f2'] = 'bar'
resp2.form['f3'] = 'C'
resp2 = resp2.form.submit('submit') # to validation page
resp1 = resp1.form.submit('submit') # final validation
@ -397,8 +414,6 @@ def test_backoffice_parallel_submission(pub):
# do the third form from the start
resp3.form['f1'] = 'baz'
resp3.form['f2'] = 'bar'
resp3.form['f3'] = 'C'
resp_autosave = app.post(
'/backoffice/submission/form-title/autosave',
@ -421,8 +436,8 @@ def test_backoffice_parallel_submission(pub):
def test_backoffice_submission_dispatch(pub):
user = create_user(pub)
create_environment(pub)
Workflow.wipe()
wf = Workflow(name='dispatch')
st1 = wf.add_status('Status1')
dispatch = DispatchWorkflowStatusItem()
@ -433,9 +448,17 @@ def test_backoffice_submission_dispatch(pub):
dispatch.parent = st1
wf.store()
formdef = FormDef.get_by_urlname('form-title')
formdef.workflow_id = wf.id
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings']),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.workflow_id = wf.id
formdef.workflow_roles = {'_receiver': 1}
formdef.store()
app = login(get_app(pub))
@ -443,8 +466,6 @@ def test_backoffice_submission_dispatch(pub):
resp = resp.click(formdef.name)
resp.form['f1'] = 'test submission'
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit') # to validation screen
resp = resp.form.submit('submit') # final submit
# should go to the formdata because the formdef is defined as is
@ -458,8 +479,6 @@ def test_backoffice_submission_dispatch(pub):
resp = resp.click(formdef.name)
resp.form['f1'] = 'test submission'
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit') # to validation screen
resp = resp.form.submit('submit') # final submit
# should NOT go to the formdata
@ -474,8 +493,6 @@ def test_backoffice_submission_dispatch(pub):
resp = resp.click(formdef.name)
resp.form['f1'] = 'test submission'
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit') # to validation screen
resp = resp.form.submit('submit') # final submit
# should go to the formdata because the formdata was dispatched to the
@ -485,23 +502,28 @@ def test_backoffice_submission_dispatch(pub):
def test_backoffice_submission_tracking_code(pub):
user = create_user(pub)
create_environment(pub)
app = login(get_app(pub))
formdef = FormDef.get_by_urlname('form-title')
formdef.enable_tracking_codes = True
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings']),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.enable_tracking_codes = True
formdef.store()
data_class = formdef.data_class()
data_class.wipe()
app = login(get_app(pub))
resp = app.get('/backoffice/submission/')
assert formdef.url_name in resp.text
resp = resp.click(formdef.name)
resp.form['f1'] = 'test submission'
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit')
assert 'Check values then click submit.' in resp.text
@ -510,7 +532,6 @@ def test_backoffice_submission_tracking_code(pub):
formdata_no = data_class.select()[0].id
assert data_class.get(formdata_no).data['1'] == 'test submission'
assert data_class.get(formdata_no).data['2'] == 'baz'
assert data_class.get(formdata_no).status == 'draft'
assert data_class.get(formdata_no).user is None
@ -524,23 +545,29 @@ def test_backoffice_submission_tracking_code(pub):
def test_backoffice_submission_drafts(pub):
user = create_user(pub)
create_environment(pub)
app = login(get_app(pub))
formdef = FormDef.get_by_urlname('form-title')
formdef.enable_tracking_codes = True
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings']),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.workflow_roles = {'_receiver': 1}
formdef.enable_tracking_codes = True
formdef.store()
data_class = formdef.data_class()
data_class.wipe()
app = login(get_app(pub))
resp = app.get('/backoffice/submission/')
assert formdef.url_name in resp.text
resp = resp.click(formdef.name)
resp.form['f1'] = 'test submission'
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit')
assert 'Check values then click submit.' in resp.text
@ -578,24 +605,29 @@ def test_backoffice_submission_drafts(pub):
def test_backoffice_submission_remove_drafts(pub):
user = create_user(pub)
create_environment(pub)
app = login(get_app(pub))
formdef = FormDef.get_by_urlname('form-title')
formdef.enable_tracking_codes = True
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings']),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.enable_tracking_codes = True
formdef.store()
data_class = formdef.data_class()
data_class.wipe()
pub.tracking_code_class.wipe()
app = login(get_app(pub))
resp = app.get('/backoffice/submission/')
assert formdef.url_name in resp.text
resp = resp.click(formdef.name)
resp.form['f1'] = 'test submission'
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit')
assert 'Check values then click submit.' in resp.text
@ -633,11 +665,10 @@ def test_backoffice_submission_remove_drafts(pub):
def test_backoffice_submission_live_condition(pub):
user = create_user(pub)
create_environment(pub)
formdef = FormDef.get_by_urlname('form-title')
formdef.backoffice_submission_roles = user.roles[:]
formdef.store()
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
type='string', id='1', label='Bar', size='40',
@ -647,6 +678,8 @@ def test_backoffice_submission_live_condition(pub):
required=True, varname='foo',
condition={'type': 'django', 'value': 'form_var_bar == "bye"'}),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.workflow_roles = {'_receiver': 1}
formdef.store()
app = login(get_app(pub))
@ -742,17 +775,22 @@ def test_backoffice_submission_conditional_jump_based_on_bo_field(pub):
def test_backoffice_submission_sections(pub):
user = create_user(pub)
create_environment(pub)
app = login(get_app(pub))
formdef = FormDef.get_by_urlname('form-title')
formdef.enable_tracking_codes = True
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings']),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.store()
data_class = formdef.data_class()
data_class.wipe()
app = login(get_app(pub))
resp = app.get('/backoffice/submission/')
assert 'Submission to complete' not in resp.text
assert 'Running submission' not in resp.text
@ -779,13 +817,19 @@ def test_backoffice_submission_sections(pub):
def test_backoffice_submission_prefill_user(pub):
user = create_user(pub)
create_environment(pub)
other_user = pub.user_class(name='other user')
other_user.email = 'other@example.net'
other_user.store()
formdef = FormDef.get_by_urlname('form-title')
formdef.fields[0].prefill = {'type': 'user', 'value': 'email'}
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings'],
prefill={'type': 'user', 'value': 'email'}),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.store()
@ -826,13 +870,19 @@ def test_backoffice_submission_prefill_user(pub):
def test_backoffice_submission_prefill_user_via_formula(pub):
user = create_user(pub)
create_environment(pub)
other_user = pub.user_class(name='other user')
other_user.email = 'other@example.net'
other_user.store()
formdef = FormDef.get_by_urlname('form-title')
formdef.fields[0].prefill = {'type': 'formula', 'value': 'form_user_email'}
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings'],
prefill={'type': 'formula', 'value': 'form_user_email'}),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.store()
@ -871,67 +921,70 @@ def test_backoffice_submission_prefill_user_via_formula(pub):
assert resp.form['f1'].value == ''
def test_backoffice_submission_prefill_user_multiple_pages(pub):
@pytest.mark.parametrize('enable_tracking_code', [True, False])
def test_backoffice_submission_prefill_user_multiple_pages(pub, enable_tracking_code):
user = create_user(pub)
create_environment(pub)
other_user = pub.user_class(name='other user')
other_user.email = 'other@example.net'
other_user.store()
for enable_tracking_code in (False, True):
formdef = FormDef.get_by_urlname('form-title')
formdef.fields = [
fields.PageField(id='0', label='1st page', type='page'),
fields.StringField(id='1', label='1st field', type='string', required=False),
fields.PageField(id='4', label='2nd page', type='page'),
fields.StringField(
id='5', label='field on 2nd page',
prefill={'type': 'user', 'value': 'email'}),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.enable_tracking_codes = enable_tracking_code
formdef.store()
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.PageField(id='0', label='1st page', type='page'),
fields.StringField(id='1', label='1st field', type='string', required=False),
fields.PageField(id='4', label='2nd page', type='page'),
fields.StringField(
id='5', label='field on 2nd page',
prefill={'type': 'user', 'value': 'email'}),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.enable_tracking_codes = enable_tracking_code
formdef.store()
formdef.data_class().wipe()
formdef.data_class().wipe()
formdata = formdef.data_class()()
formdata.backoffice_submission = True
formdata.status = 'draft'
formdata.data = {}
formdata.submission_channel = 'mail'
formdata.user_id = other_user.id
formdata.submission_context = {}
formdata.store()
formdata = formdef.data_class()()
formdata.backoffice_submission = True
formdata.status = 'draft'
formdata.data = {}
formdata.submission_channel = 'mail'
formdata.user_id = other_user.id
formdata.submission_context = {}
formdata.store()
formdata2 = formdef.data_class()()
formdata2.backoffice_submission = True
formdata2.status = 'draft'
formdata2.data = {}
formdata.submission_channel = 'mail'
formdata.user_id = None
formdata2.submission_context = {}
formdata2.store()
formdata2 = formdef.data_class()()
formdata2.backoffice_submission = True
formdata2.status = 'draft'
formdata2.data = {}
formdata2.submission_channel = 'mail'
formdata2.user_id = None
formdata2.submission_context = {}
formdata2.store()
app = login(get_app(pub))
resp = app.get('/backoffice/submission/form-title/')
resp = resp.form.submit('submit')
assert resp.form['f5'].value == ''
app = login(get_app(pub))
resp = app.get('/backoffice/submission/form-title/')
resp = resp.form.submit('submit')
assert resp.form['f5'].value == ''
# restore a draft
resp = app.get('/backoffice/submission/form-title/%s/' % formdata.id)
resp = resp.follow()
resp = resp.form.submit('submit')
# and check it got prefilled with the user from context
assert resp.form['f5'].value == 'other@example.net'
# restore a draft
resp = app.get('/backoffice/submission/form-title/%s/' % formdata.id)
resp = resp.follow()
resp = resp.form.submit('submit')
# and check it got prefilled with the user from context
assert resp.form['f5'].value == 'other@example.net'
# restore another, without user id
resp = app.get('/backoffice/submission/form-title/%s/' % formdata2.id)
resp = resp.follow()
resp = resp.form.submit('submit')
# and check it was not prefilled
assert resp.form['f5'].value == ''
# restore another, without user id
resp = app.get('/backoffice/submission/form-title/%s/' % formdata2.id)
resp = resp.follow()
resp = resp.form.submit('submit')
# and check it was not prefilled
assert resp.form['f5'].value == ''
# continue with additional tests when drafts are enabled, using autosave
if not enable_tracking_code:
return
# restore a draft
formdata.page_no = 0
@ -964,12 +1017,10 @@ def test_backoffice_submission_prefill_user_multiple_pages(pub):
def test_backoffice_submission_multiple_page_restore_on_validation(pub):
user = create_user(pub)
create_environment(pub)
other_user = pub.user_class(name='other user')
other_user.email = 'other@example.net'
other_user.store()
formdef = FormDef.get_by_urlname('form-title')
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.PageField(id='0', label='1st page', type='page'),
fields.StringField(id='1', label='1st field', type='string', required=False),
@ -1004,9 +1055,10 @@ def test_backoffice_submission_multiple_page_restore_on_validation(pub):
def test_backoffice_submission_substitution_vars(pub):
user = create_user(pub)
create_environment(pub)
formdef = FormDef.get_by_urlname('form-title')
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.PageField(id='0', label='1st page', type='page'),
fields.StringField(
@ -1059,18 +1111,20 @@ def test_backoffice_submission_substitution_vars(pub):
def test_backoffice_submission_manual_channel(pub):
user = create_user(pub)
create_environment(pub)
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings']),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.workflow_roles = {'_receiver': 1}
formdef.store()
app = login(get_app(pub))
resp = app.get('/backoffice/')
assert 'Submission' not in resp.text
app.get('/backoffice/submission/', status=403)
formdef = FormDef.get_by_urlname('form-title')
formdef.backoffice_submission_roles = user.roles[:]
formdef.store()
resp = app.get('/backoffice/')
assert 'Submission' in resp.text
resp = app.get('/backoffice/submission/')
assert formdef.url_name in resp.text
@ -1078,8 +1132,6 @@ def test_backoffice_submission_manual_channel(pub):
assert resp.form['submission_channel'].attrs['type'] == 'hidden'
resp.form['submission_channel'] = 'mail'
resp.form['f1'] = 'test submission'
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit')
assert 'Check values then click submit.' in resp.text
@ -1089,7 +1141,6 @@ def test_backoffice_submission_manual_channel(pub):
formdata_no = resp.location.split('/')[-2]
data_class = formdef.data_class()
assert data_class.get(formdata_no).data['1'] == 'test submission'
assert data_class.get(formdata_no).data['2'] == 'baz'
assert data_class.get(formdata_no).status == 'wf-new'
assert data_class.get(formdata_no).user is None
assert data_class.get(formdata_no).backoffice_submission is True
@ -1098,9 +1149,11 @@ def test_backoffice_submission_manual_channel(pub):
def test_backoffice_submission_no_manual_channel_with_welco(pub, welco_url):
user = create_user(pub)
create_environment(pub)
formdef = FormDef.get_by_urlname('form-title')
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = []
formdef.backoffice_submission_roles = user.roles[:]
formdef.store()
@ -1111,12 +1164,18 @@ def test_backoffice_submission_no_manual_channel_with_welco(pub, welco_url):
def test_backoffice_submission_with_nameid_and_channel(pub, local_user):
user = create_user(pub)
create_environment(pub)
formdef = FormDef.get_by_urlname('form-title')
formdef.fields[0].prefill = {'type': 'formula', 'value': 'form_user_email'}
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings'],
prefill={'type': 'formula', 'value': 'form_user_email'}),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.enable_tracking_codes = True
formdef.workflow_roles = {'_receiver': 1}
formdef.store()
app = login(get_app(pub))
@ -1137,8 +1196,6 @@ def test_backoffice_submission_with_nameid_and_channel(pub, local_user):
assert '<p>%s</p>' % local_user.get_display_name() in resp
assert resp.form['f1'].value == local_user.email # prefill with form_user_email
resp.form['f2'] = 'baz'
resp.form['f3'] = 'C'
resp = resp.form.submit('submit')
assert 'Check values then click submit.' in resp.text
# final submit
@ -1154,13 +1211,17 @@ def test_backoffice_submission_with_nameid_and_channel(pub, local_user):
def test_backoffice_submission_only_one_check(pub, local_user):
user = create_user(pub)
create_environment(pub)
formdef = FormDef.get_by_urlname('form-title')
formdef.fields = [formdef.fields[0]]
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.StringField(
id='1', label='1st field', type='string',
display_locations=['validation', 'summary', 'listings']),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.only_allow_one = True
formdef.enable_tracking_codes = True
formdef.store()
formdef.data_class().wipe()
@ -1195,25 +1256,26 @@ def test_backoffice_submission_only_one_check(pub, local_user):
def test_backoffice_submission_user_selection(pub):
user = create_user(pub)
create_environment(pub)
for i in range(10):
random_user = pub.user_class()
random_user.name = 'random user %s' % i
random_user.store()
app = login(get_app(pub))
formdef = FormDef.get_by_urlname('form-title')
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.PageField(id='0', label='1st page', type='page'),
fields.StringField(id='1', label='Field on 1st page', type='string'),
fields.PageField(id='2', label='2nd page', type='page'),
fields.StringField(id='3', label='Field on 2nd page', type='string'),
]
formdef.backoffice_submission_roles = user.roles[:]
formdef.workflow_roles = {'_receiver': 1}
formdef.store()
app = login(get_app(pub))
resp = app.get('/backoffice/submission/')
resp = resp.click(formdef.name)