Projet

Général

Profil

0005-tests-add-basic-testing-of-display-form-workflow-act.patch

Frédéric Péters, 19 mai 2015 11:15

Télécharger (4,13 ko)

Voir les différences:

Subject: [PATCH 5/5] tests: add basic testing of "display form" workflow
 action

 tests/test_workflows.py | 67 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 66 insertions(+), 1 deletion(-)
tests/test_workflows.py
5 5

  
6 6
from quixote import cleanup, get_response
7 7
from wcs.qommon.http_request import HTTPRequest
8
from qommon.form import *
8 9

  
9 10
from wcs.formdef import FormDef
10 11
from wcs import sessions
12
from wcs.fields import StringField, DateField
11 13
from wcs.roles import Role
12 14
from wcs.workflows import (Workflow, WorkflowStatusItem,
13 15
        SendmailWorkflowStatusItem, SendSMSWorkflowStatusItem)
14 16
from wcs.wf.anonymise import AnonymiseWorkflowStatusItem
15 17
from wcs.wf.dispatch import DispatchWorkflowStatusItem
18
from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
16 19
from wcs.wf.jump import JumpWorkflowStatusItem, _apply_timeouts
17 20
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
18 21
from wcs.wf.remove import RemoveWorkflowStatusItem
......
26 29
    cleanup()
27 30
    global pub, req
28 31
    pub = create_temporary_pub()
32
    pub.cfg['language'] = {'language': 'en'}
33
    pub.write_cfg()
29 34
    req = HTTPRequest(None, {'SERVER_NAME': 'example.net', 'SCRIPT_NAME': ''})
30 35
    req.response.filter = {}
31 36
    req.user = None
......
41 46

  
42 47
@pytest.fixture
43 48
def two_pubs(request):
44
    return create_temporary_pub(sql_mode=(request.param == 'sql'))
49
    pub = create_temporary_pub(sql_mode=(request.param == 'sql'))
50
    pub.cfg['language'] = {'language': 'en'}
51
    pub.write_cfg()
52
    req = HTTPRequest(None, {'SERVER_NAME': 'example.net', 'SCRIPT_NAME': ''})
53
    req.response.filter = {}
54
    req.user = None
55
    pub._set_request(req)
56
    req.session = sessions.BasicSession(id=1)
57

  
58
    return pub
45 59

  
46 60
def test_jump_nothing():
47 61
    FormDef.wipe()
......
508 522
    item.perform(formdata) # nothing
509 523
    assert sms_mocking.sms[-1]['destinations'] == ['000']
510 524
    assert sms_mocking.sms[-1]['text'] == 'XXX'
525

  
526

  
527
def test_display_form(two_pubs):
528
    formdef = FormDef()
529
    formdef.name = 'baz'
530
    formdef.fields = []
531
    formdef.store()
532

  
533
    formdata = formdef.data_class()()
534
    formdata.just_created()
535
    formdata.store()
536

  
537
    wf = Workflow(name='status')
538
    st1 = wf.add_status('Status1', 'st1')
539

  
540
    display_form = FormWorkflowStatusItem()
541
    display_form.id = '_x'
542
    display_form.varname = 'xxx'
543
    display_form.formdef = WorkflowFormFieldsFormDef(item=display_form)
544
    display_form.formdef.fields.append(StringField(id='1', label='Test',
545
        type='string'))
546
    display_form.formdef.fields.append(DateField(id='2', label='Date',
547
        type='date', varname='date'))
548
    st1.items.append(display_form)
549
    display_form.parent = st1
550

  
551
    form = Form(action='#')
552
    display_form.fill_form(form, formdata, None)
553
    assert form.widgets[0].title == 'Test'
554
    assert form.widgets[1].title == 'Date'
555

  
556
    two_pubs.get_request().form = {'f1': 'Foobar', 'f2': '2015-05-12', 'submit': 'submit'}
557
    display_form.submit_form(form, formdata, None, None)
558

  
559
    assert formdata.get_substitution_variables()['xxx_var_date'] == '2015-05-12'
560

  
561
    two_pubs.cfg['language'] = {'language': 'fr'}
562
    formdata = formdef.data_class()()
563
    formdata.just_created()
564
    formdata.store()
565

  
566
    form = Form(action='#')
567
    display_form.fill_form(form, formdata, None)
568
    two_pubs.get_request().form = {'f1': 'Foobar', 'f2': '12/05/2015', 'submit': 'submit'}
569
    display_form.submit_form(form, formdata, None, None)
570
    assert formdata.get_substitution_variables()['xxx_var_date'] == '12/05/2015'
571

  
572
    assert formdata.get_substitution_variables()['xxx_var_date_raw'] == \
573
            time.strptime('2015-05-12', '%Y-%m-%d')
574

  
575
    pub.cfg['language'] = {'language': 'en'}
511
-