diff --git a/tests/test_workflows.py b/tests/test_workflows.py index 7f129eca0..df76471cb 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -5,14 +5,17 @@ import time from quixote import cleanup, get_response from wcs.qommon.http_request import HTTPRequest +from qommon.form import * from wcs.formdef import FormDef from wcs import sessions +from wcs.fields import StringField, DateField from wcs.roles import Role from wcs.workflows import (Workflow, WorkflowStatusItem, SendmailWorkflowStatusItem, SendSMSWorkflowStatusItem) from wcs.wf.anonymise import AnonymiseWorkflowStatusItem from wcs.wf.dispatch import DispatchWorkflowStatusItem +from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef from wcs.wf.jump import JumpWorkflowStatusItem, _apply_timeouts from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem from wcs.wf.remove import RemoveWorkflowStatusItem @@ -26,6 +29,8 @@ def setup_module(module): cleanup() global pub, req pub = create_temporary_pub() + pub.cfg['language'] = {'language': 'en'} + pub.write_cfg() req = HTTPRequest(None, {'SERVER_NAME': 'example.net', 'SCRIPT_NAME': ''}) req.response.filter = {} req.user = None @@ -41,7 +46,16 @@ def pytest_generate_tests(metafunc): @pytest.fixture def two_pubs(request): - return create_temporary_pub(sql_mode=(request.param == 'sql')) + pub = create_temporary_pub(sql_mode=(request.param == 'sql')) + pub.cfg['language'] = {'language': 'en'} + pub.write_cfg() + req = HTTPRequest(None, {'SERVER_NAME': 'example.net', 'SCRIPT_NAME': ''}) + req.response.filter = {} + req.user = None + pub._set_request(req) + req.session = sessions.BasicSession(id=1) + + return pub def test_jump_nothing(): FormDef.wipe() @@ -508,3 +522,54 @@ def test_sms(): item.perform(formdata) # nothing assert sms_mocking.sms[-1]['destinations'] == ['000'] assert sms_mocking.sms[-1]['text'] == 'XXX' + + +def test_display_form(two_pubs): + formdef = FormDef() + formdef.name = 'baz' + formdef.fields = [] + formdef.store() + + formdata = formdef.data_class()() + formdata.just_created() + formdata.store() + + wf = Workflow(name='status') + st1 = wf.add_status('Status1', 'st1') + + display_form = FormWorkflowStatusItem() + display_form.id = '_x' + display_form.varname = 'xxx' + display_form.formdef = WorkflowFormFieldsFormDef(item=display_form) + display_form.formdef.fields.append(StringField(id='1', label='Test', + type='string')) + display_form.formdef.fields.append(DateField(id='2', label='Date', + type='date', varname='date')) + st1.items.append(display_form) + display_form.parent = st1 + + form = Form(action='#') + display_form.fill_form(form, formdata, None) + assert form.widgets[0].title == 'Test' + assert form.widgets[1].title == 'Date' + + two_pubs.get_request().form = {'f1': 'Foobar', 'f2': '2015-05-12', 'submit': 'submit'} + display_form.submit_form(form, formdata, None, None) + + assert formdata.get_substitution_variables()['xxx_var_date'] == '2015-05-12' + + two_pubs.cfg['language'] = {'language': 'fr'} + formdata = formdef.data_class()() + formdata.just_created() + formdata.store() + + form = Form(action='#') + display_form.fill_form(form, formdata, None) + two_pubs.get_request().form = {'f1': 'Foobar', 'f2': '12/05/2015', 'submit': 'submit'} + display_form.submit_form(form, formdata, None, None) + assert formdata.get_substitution_variables()['xxx_var_date'] == '12/05/2015' + + assert formdata.get_substitution_variables()['xxx_var_date_raw'] == \ + time.strptime('2015-05-12', '%Y-%m-%d') + + pub.cfg['language'] = {'language': 'en'}