From 07b5ee477c0a8b987512939315fe600ee6317b89 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 23 Jan 2020 14:33:41 +0100 Subject: [PATCH 10/10] tests: add create_formdata test on XML export/import (#33186) --- tests/test_workflow_import.py | 65 ++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/tests/test_workflow_import.py b/tests/test_workflow_import.py index 27374fee..c0c2522a 100644 --- a/tests/test_workflow_import.py +++ b/tests/test_workflow_import.py @@ -9,17 +9,21 @@ from django.utils.six import BytesIO from quixote import cleanup from wcs import publisher -from wcs.workflows import (Workflow, CommentableWorkflowStatusItem, - WorkflowCriticalityLevel, WorkflowBackofficeFieldsFormDef, - SendmailWorkflowStatusItem, SendSMSWorkflowStatusItem, - WorkflowImportError) +from wcs.formdef import FormDef +from wcs.workflows import ( + Workflow, CommentableWorkflowStatusItem, WorkflowCriticalityLevel, + WorkflowBackofficeFieldsFormDef, SendmailWorkflowStatusItem, + SendSMSWorkflowStatusItem, WorkflowImportError, ChoiceWorkflowStatusItem, + JumpOnSubmitWorkflowStatusItem) from wcs.wf.wscall import WebserviceCallStatusItem from wcs.wf.dispatch import DispatchWorkflowStatusItem from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem from wcs.wf.profile import UpdateUserProfileStatusItem from wcs.wf.backoffice_fields import SetBackofficeFieldsWorkflowStatusItem +from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem +from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping from wcs.roles import Role -from wcs.fields import StringField +from wcs.fields import StringField, FileField from wcs.qommon.misc import indent_xml as indent @@ -681,3 +685,54 @@ def test_action_condition(pub): sendmail.condition = {'type': 'python', 'value': 'True'} wf2 = assert_import_export_works(wf) + + +def test_create_formdata(pub): + target_formdef = FormDef() + target_formdef.name = 'target form' + target_formdef.fields = [ + StringField(id='0', label='string', varname='foo_string'), + FileField(id='1', label='file', type='file', varname='foo_file'), + ] + target_formdef.store() + + 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(varname='foo_string', expression='=form_var_toto_string'), + Mapping(varname='foo_file', expression='=form_var_toto_file_raw'), + ] + create_formdata.parent = st2 + st2.items.append(create_formdata) + + redirect = RedirectToUrlWorkflowStatusItem() + redirect.id = '_redirect' + redirect.url = '{{ linked.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() + + wf2 = assert_import_export_works(wf, include_id=True) + assert isinstance(wf2.get_status('2').items[0], CreateFormdataWorkflowStatusItem) + assert wf2.get_status('2').items[0] == wf.get_status('2').items[0] -- 2.24.0