misc: move a test

This commit is contained in:
Lauréline Guérin 2021-02-08 09:59:52 +01:00
parent b4b292a696
commit 554d90467e
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 113 additions and 115 deletions

View File

@ -7,11 +7,6 @@ import pytest
from wcs.qommon.ident.password_accounts import PasswordAccount
from wcs.qommon.http_request import HTTPRequest
from wcs.roles import Role
from wcs.workflows import Workflow, ChoiceWorkflowStatusItem, JumpOnSubmitWorkflowStatusItem
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
from wcs.formdef import FormDef
from wcs import fields
from utilities import get_app, login, create_temporary_pub, clean_temporary_pub
@ -188,7 +183,7 @@ def test_studio_home(pub):
pub.cfg['admin-permissions'] = {}
for part in ('forms', 'cards', 'workflows'):
# check section link are not displayed if user has no access right
pub.cfg['admin-permissions'].update({part: ['x']}) # block access
pub.cfg['admin-permissions'].update({part: ['x']}) # block access
pub.write_cfg()
if part != 'workflows':
resp = app.get('/backoffice/studio/')
@ -208,112 +203,3 @@ def test_studio_workflows(pub):
assert 'status/recorded/' in resp.text
assert 'status/deleted/' in resp.text
assert 'This is the default workflow,' in resp.text
def test_create_formdata(pub):
create_superuser(pub)
create_role()
FormDef.wipe()
target_formdef = FormDef()
target_formdef.name = 'target form'
target_formdef.enable_tracking_codes = True
target_formdef.fields = [
fields.StringField(id='0', label='string', varname='foo_string'),
fields.FileField(id='1', label='file', type='file', varname='foo_file'),
]
target_formdef.store()
Workflow.wipe()
wf = Workflow(name='create-formdata')
st1 = wf.add_status('New')
st2 = wf.add_status('Resubmit')
jump = ChoiceWorkflowStatusItem()
jump.id = '_resubmit'
jump.label = 'Resubmit'
jump.by = ['_submitter']
jump.status = st2.id
jump.parent = st1
st1.items.append(jump)
create_formdata = CreateFormdataWorkflowStatusItem()
create_formdata.id = '_create_formdata'
create_formdata.formdef_slug = target_formdef.url_name
create_formdata.mappings = [
Mapping(field_id='0', expression='=form_var_toto_string'),
Mapping(field_id='1', expression='=form_var_toto_file_raw'),
]
create_formdata.parent = st2
st2.items.append(create_formdata)
redirect = RedirectToUrlWorkflowStatusItem()
redirect.id = '_redirect'
redirect.url = '{{ form_links_resubmitted.form_url }}'
redirect.parent = st2
st2.items.append(redirect)
jump = JumpOnSubmitWorkflowStatusItem()
jump.id = '_jump'
jump.status = st1.id
jump.parent = st2
st2.items.append(jump)
wf.store()
app = login(get_app(pub))
resp = app.get('/backoffice/workflows/%s/status/%s/' % (wf.id, st2.id))
pq = resp.pyquery.remove_namespaces()
assert pq('option[value="New Form Creation"]').text() == 'New Form Creation'
assert pq('#itemId__create_formdata a')[0].text == 'New Form Creation (target form)'
resp = resp.click(
'Edit',
href='items/_create_formdata/',
)
resp.form.set('varname', 'resubmitted')
resp = resp.form.submit(name='submit')
resp = resp.follow()
# checks that nothing changed after submit
wf2 = Workflow.select()[0]
item = wf2.get_status('2').items[0]
assert item.varname == 'resubmitted'
assert isinstance(item, CreateFormdataWorkflowStatusItem)
wf.get_status('2').items[0].label = 'really resubmit'
# duplicate
resp = app.get('/backoffice/workflows/%s/status/%s/items/_create_formdata/' % (wf.id, st2.id))
resp.form.set('mappings$element1$field_id', '0')
resp = resp.form.submit(name='submit')
pq = resp.pyquery.remove_namespaces()
assert pq('.error').text() == 'Some destination fields are duplicated'
# check setting map_fields_by_varname on new action
resp = app.get('/backoffice/workflows/%s/status/%s/' % (wf.id, st2.id))
resp.forms['new-action-form']['action-formdata-action'] = 'New Form Creation'
resp = resp.forms['new-action-form'].submit()
resp = resp.follow()
resp = resp.click(r'New Form Creation \(not configured\)')
resp.form['formdef_slug'] = 'target-form' # set target form
resp = resp.form.submit('submit')
assert 'Please define new mappings' in resp
assert resp.form['map_fields_by_varname'].checked is False
resp.form['map_fields_by_varname'].checked = True
resp = resp.form.submit('submit')
resp = resp.follow()
wf = Workflow.get(wf.id)
st2 = wf.possible_status[-1]
assert wf.possible_status[-1].items[-1].map_fields_by_varname is True
assert wf.possible_status[-1].items[-1].mappings is None
assert wf.possible_status[-1].items[-1].formdef_slug == 'target-form'
resp = app.get('/backoffice/workflows/%s/status/%s/items/%s/' % (wf.id, st2.id, st2.items[-1].id))
resp.form['formdef_slug'] = '' # unset target form
resp.form.submit('submit')
wf = Workflow.get(wf.id)
assert wf.possible_status[-1].items[-1].formdef_slug is None
assert wf.possible_status[-1].items[-1].map_fields_by_varname is True
resp = app.get('/backoffice/workflows/%s/status/%s/items/%s/' % (wf.id, st2.id, st2.items[-1].id))
resp.form['formdef_slug'] = 'target-form' # reset target form
resp.form.submit('submit') # no error

View File

@ -23,10 +23,13 @@ from wcs.workflows import (
WorkflowBackofficeFieldsFormDef,
CommentableWorkflowStatusItem,
ChoiceWorkflowStatusItem,
JumpOnSubmitWorkflowStatusItem,
)
from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
from wcs.wf.dispatch import DispatchWorkflowStatusItem
from wcs.wf.export_to_model import ExportToModel
from wcs.wf.jump import JumpWorkflowStatusItem
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
from wcs.wf.wscall import WebserviceCallStatusItem
from wcs.carddef import CardDef
@ -1746,6 +1749,115 @@ def test_workflows_global_actions_external_workflow_action(pub):
resp = resp.click(href=re.compile(r'^items/1/$'), index=0)
def test_workflows_create_formdata(pub):
create_superuser(pub)
create_role()
FormDef.wipe()
target_formdef = FormDef()
target_formdef.name = 'target form'
target_formdef.enable_tracking_codes = True
target_formdef.fields = [
fields.StringField(id='0', label='string', varname='foo_string'),
fields.FileField(id='1', label='file', type='file', varname='foo_file'),
]
target_formdef.store()
Workflow.wipe()
wf = Workflow(name='create-formdata')
st1 = wf.add_status('New')
st2 = wf.add_status('Resubmit')
jump = ChoiceWorkflowStatusItem()
jump.id = '_resubmit'
jump.label = 'Resubmit'
jump.by = ['_submitter']
jump.status = st2.id
jump.parent = st1
st1.items.append(jump)
create_formdata = CreateFormdataWorkflowStatusItem()
create_formdata.id = '_create_formdata'
create_formdata.formdef_slug = target_formdef.url_name
create_formdata.mappings = [
Mapping(field_id='0', expression='=form_var_toto_string'),
Mapping(field_id='1', expression='=form_var_toto_file_raw'),
]
create_formdata.parent = st2
st2.items.append(create_formdata)
redirect = RedirectToUrlWorkflowStatusItem()
redirect.id = '_redirect'
redirect.url = '{{ form_links_resubmitted.form_url }}'
redirect.parent = st2
st2.items.append(redirect)
jump = JumpOnSubmitWorkflowStatusItem()
jump.id = '_jump'
jump.status = st1.id
jump.parent = st2
st2.items.append(jump)
wf.store()
app = login(get_app(pub))
resp = app.get('/backoffice/workflows/%s/status/%s/' % (wf.id, st2.id))
pq = resp.pyquery.remove_namespaces()
assert pq('option[value="New Form Creation"]').text() == 'New Form Creation'
assert pq('#itemId__create_formdata a')[0].text == 'New Form Creation (target form)'
resp = resp.click(
'Edit',
href='items/_create_formdata/',
)
resp.form.set('varname', 'resubmitted')
resp = resp.form.submit(name='submit')
resp = resp.follow()
# checks that nothing changed after submit
wf2 = Workflow.select()[0]
item = wf2.get_status('2').items[0]
assert item.varname == 'resubmitted'
assert isinstance(item, CreateFormdataWorkflowStatusItem)
wf.get_status('2').items[0].label = 'really resubmit'
# duplicate
resp = app.get('/backoffice/workflows/%s/status/%s/items/_create_formdata/' % (wf.id, st2.id))
resp.form.set('mappings$element1$field_id', '0')
resp = resp.form.submit(name='submit')
pq = resp.pyquery.remove_namespaces()
assert pq('.error').text() == 'Some destination fields are duplicated'
# check setting map_fields_by_varname on new action
resp = app.get('/backoffice/workflows/%s/status/%s/' % (wf.id, st2.id))
resp.forms['new-action-form']['action-formdata-action'] = 'New Form Creation'
resp = resp.forms['new-action-form'].submit()
resp = resp.follow()
resp = resp.click(r'New Form Creation \(not configured\)')
resp.form['formdef_slug'] = 'target-form' # set target form
resp = resp.form.submit('submit')
assert 'Please define new mappings' in resp
assert resp.form['map_fields_by_varname'].checked is False
resp.form['map_fields_by_varname'].checked = True
resp = resp.form.submit('submit')
resp = resp.follow()
wf = Workflow.get(wf.id)
st2 = wf.possible_status[-1]
assert wf.possible_status[-1].items[-1].map_fields_by_varname is True
assert wf.possible_status[-1].items[-1].mappings is None
assert wf.possible_status[-1].items[-1].formdef_slug == 'target-form'
resp = app.get('/backoffice/workflows/%s/status/%s/items/%s/' % (wf.id, st2.id, st2.items[-1].id))
resp.form['formdef_slug'] = '' # unset target form
resp.form.submit('submit')
wf = Workflow.get(wf.id)
assert wf.possible_status[-1].items[-1].formdef_slug is None
assert wf.possible_status[-1].items[-1].map_fields_by_varname is True
resp = app.get('/backoffice/workflows/%s/status/%s/items/%s/' % (wf.id, st2.id, st2.items[-1].id))
resp.form['formdef_slug'] = 'target-form' # reset target form
resp.form.submit('submit') # no error
def test_workflows_edit_carddata_action(pub):
create_superuser(pub)
Workflow.wipe()