Projet

Général

Profil

0011-tests-add-create_formdata-admin-page-tests-33186.patch

Benjamin Dauvergne, 23 janvier 2020 15:42

Télécharger (4,6 ko)

Voir les différences:

Subject: [PATCH 11/11] tests: add create_formdata admin page tests (#33186)

 tests/test_admin_pages.py | 91 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 88 insertions(+), 3 deletions(-)
tests/test_admin_pages.py
38 38
from wcs.data_sources import NamedDataSource
39 39
from wcs.wscalls import NamedWsCall
40 40
from wcs.roles import Role
41
from wcs.workflows import (Workflow, DisplayMessageWorkflowStatusItem,
42
        WorkflowCriticalityLevel, WorkflowBackofficeFieldsFormDef,
43
        CommentableWorkflowStatusItem)
41
from wcs.workflows import (
42
    Workflow, DisplayMessageWorkflowStatusItem, WorkflowCriticalityLevel,
43
    WorkflowBackofficeFieldsFormDef, CommentableWorkflowStatusItem,
44
    ChoiceWorkflowStatusItem, JumpOnSubmitWorkflowStatusItem)
44 45
from wcs.wf.export_to_model import ExportToModel
45 46
from wcs.wf.jump import JumpWorkflowStatusItem
46 47
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
47 48
from wcs.wf.wscall import WebserviceCallStatusItem
49
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
50
from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
48 51
from wcs.formdef import FormDef
49 52
from wcs.carddef import CardDef
50 53
from wcs import fields
......
5571 5574
    assert resp.location == 'http://example.net/backoffice/cards/1/workflow-status-remapping?new=%s' % '_carddef_default'
5572 5575
    resp = resp.follow()
5573 5576
    resp = resp.form.submit('submit').follow()
5577

  
5578

  
5579
def test_create_formdata(pub):
5580
    create_superuser(pub)
5581
    create_role()
5582

  
5583
    FormDef.wipe()
5584
    target_formdef = FormDef()
5585
    target_formdef.name = 'target form'
5586
    target_formdef.enable_tracking_codes = True
5587
    target_formdef.fields = [
5588
        fields.StringField(id='0', label='string', varname='foo_string'),
5589
        fields.FileField(id='1', label='file', type='file', varname='foo_file'),
5590
    ]
5591
    target_formdef.store()
5592

  
5593
    Workflow.wipe()
5594
    wf = Workflow(name='create-formdata')
5595

  
5596
    st1 = wf.add_status('New')
5597
    st2 = wf.add_status('Resubmit')
5598

  
5599
    jump = ChoiceWorkflowStatusItem()
5600
    jump.id = '_resubmit'
5601
    jump.label = 'Resubmit'
5602
    jump.by = ['_submitter']
5603
    jump.status = st2.id
5604
    jump.parent = st1
5605
    st1.items.append(jump)
5606

  
5607
    create_formdata = CreateFormdataWorkflowStatusItem()
5608
    create_formdata.label = 'resubmit as new formdata'
5609
    create_formdata.varname = 'resubmitted'
5610
    create_formdata.id = '_create_formdata'
5611
    create_formdata.formdef_slug = target_formdef.url_name
5612
    create_formdata.mappings = [
5613
        Mapping(varname='foo_string', expression='=form_var_toto_string'),
5614
        Mapping(varname='foo_file', expression='=form_var_toto_file_raw'),
5615
    ]
5616
    create_formdata.parent = st2
5617
    st2.items.append(create_formdata)
5618

  
5619
    redirect = RedirectToUrlWorkflowStatusItem()
5620
    redirect.id = '_redirect'
5621
    redirect.url = '{{ linked.url }}'
5622
    redirect.parent = st2
5623
    st2.items.append(redirect)
5624

  
5625
    jump = JumpOnSubmitWorkflowStatusItem()
5626
    jump.id = '_jump'
5627
    jump.status = st1.id
5628
    jump.parent = st2
5629
    st2.items.append(jump)
5630

  
5631
    wf.store()
5632

  
5633
    app = login(get_app(pub))
5634
    resp = app.get('/backoffice/workflows/%s/status/%s/' % (wf.id, st2.id))
5635
    pq = resp.pyquery.remove_namespaces()
5636
    assert pq('option[value="New formdata"]').text() == 'New formdata'
5637
    assert 'resubmit as new formdata - resubmitted' in resp
5638

  
5639
    resp = resp.click('Edit', href='items/_create_formdata/', )
5640
    resp.form.set('label', 'really resubmit')
5641
    resp = resp.form.submit(name='submit')
5642
    resp = resp.follow()
5643

  
5644
    # checks that nothing changed after submit
5645
    wf2 = Workflow.select()[0]
5646
    item = wf2.get_status('2').items[0]
5647
    assert item.label == 'really resubmit'
5648
    assert isinstance(item, CreateFormdataWorkflowStatusItem)
5649
    assert item != wf.get_status('2').items[0]
5650
    wf.get_status('2').items[0].label = 'really resubmit'
5651
    assert item == wf.get_status('2').items[0]
5652

  
5653
    # duplicate
5654
    resp = app.get('/backoffice/workflows/%s/status/%s/items/_create_formdata/' % (wf.id, st2.id))
5655
    resp.form.set('mappings$element1$varname', 'foo_string')
5656
    resp = resp.form.submit(name='submit')
5657
    pq = resp.pyquery.remove_namespaces()
5658
    assert pq('.error').text() == 'Some destination fields are duplicated'
5574
-