misc: move a test
This commit is contained in:
parent
b4b292a696
commit
554d90467e
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue