tests: add basic testing of "display form" workflow action

This commit is contained in:
Frédéric Péters 2015-05-19 10:59:14 +02:00
parent 85427a2669
commit 971787de53
1 changed files with 66 additions and 1 deletions

View File

@ -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'}