tests: add basic testing of "display form" workflow action
This commit is contained in:
parent
85427a2669
commit
971787de53
|
@ -5,14 +5,17 @@ import time
|
||||||
|
|
||||||
from quixote import cleanup, get_response
|
from quixote import cleanup, get_response
|
||||||
from wcs.qommon.http_request import HTTPRequest
|
from wcs.qommon.http_request import HTTPRequest
|
||||||
|
from qommon.form import *
|
||||||
|
|
||||||
from wcs.formdef import FormDef
|
from wcs.formdef import FormDef
|
||||||
from wcs import sessions
|
from wcs import sessions
|
||||||
|
from wcs.fields import StringField, DateField
|
||||||
from wcs.roles import Role
|
from wcs.roles import Role
|
||||||
from wcs.workflows import (Workflow, WorkflowStatusItem,
|
from wcs.workflows import (Workflow, WorkflowStatusItem,
|
||||||
SendmailWorkflowStatusItem, SendSMSWorkflowStatusItem)
|
SendmailWorkflowStatusItem, SendSMSWorkflowStatusItem)
|
||||||
from wcs.wf.anonymise import AnonymiseWorkflowStatusItem
|
from wcs.wf.anonymise import AnonymiseWorkflowStatusItem
|
||||||
from wcs.wf.dispatch import DispatchWorkflowStatusItem
|
from wcs.wf.dispatch import DispatchWorkflowStatusItem
|
||||||
|
from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
|
||||||
from wcs.wf.jump import JumpWorkflowStatusItem, _apply_timeouts
|
from wcs.wf.jump import JumpWorkflowStatusItem, _apply_timeouts
|
||||||
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
|
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
|
||||||
from wcs.wf.remove import RemoveWorkflowStatusItem
|
from wcs.wf.remove import RemoveWorkflowStatusItem
|
||||||
|
@ -26,6 +29,8 @@ def setup_module(module):
|
||||||
cleanup()
|
cleanup()
|
||||||
global pub, req
|
global pub, req
|
||||||
pub = create_temporary_pub()
|
pub = create_temporary_pub()
|
||||||
|
pub.cfg['language'] = {'language': 'en'}
|
||||||
|
pub.write_cfg()
|
||||||
req = HTTPRequest(None, {'SERVER_NAME': 'example.net', 'SCRIPT_NAME': ''})
|
req = HTTPRequest(None, {'SERVER_NAME': 'example.net', 'SCRIPT_NAME': ''})
|
||||||
req.response.filter = {}
|
req.response.filter = {}
|
||||||
req.user = None
|
req.user = None
|
||||||
|
@ -41,7 +46,16 @@ def pytest_generate_tests(metafunc):
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def two_pubs(request):
|
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():
|
def test_jump_nothing():
|
||||||
FormDef.wipe()
|
FormDef.wipe()
|
||||||
|
@ -508,3 +522,54 @@ def test_sms():
|
||||||
item.perform(formdata) # nothing
|
item.perform(formdata) # nothing
|
||||||
assert sms_mocking.sms[-1]['destinations'] == ['000']
|
assert sms_mocking.sms[-1]['destinations'] == ['000']
|
||||||
assert sms_mocking.sms[-1]['text'] == 'XXX'
|
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'}
|
||||||
|
|
Loading…
Reference in New Issue