misc: speed up backoffice submission tests
This commit is contained in:
parent
da284799ab
commit
daa3e23f61
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue