Projet

Général

Profil

0006-add-first-test.patch

Benjamin Dauvergne, 23 janvier 2020 12:39

Télécharger (5,08 ko)

Voir les différences:

Subject: [PATCH 6/7] add first test

 tests/test_form_pages.py | 100 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 100 insertions(+)
tests/test_form_pages.py
42 42
from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
43 43
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
44 44
from wcs.wf.resubmit import ResubmitWorkflowStatusItem
45
from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
46
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
45 47
from wcs.categories import Category
46 48
from wcs.roles import Role, logged_users_role
47 49
from wcs.tracking_code import TrackingCode
......
7339 7341
    resp.forms[0]['f1'] = '2'
7340 7342
    resp = resp.forms[0].submit('submit')
7341 7343
    assert 'style="display: none"' in comment.search(resp.forms[0].text).group(0)
7344

  
7345

  
7346
@pytest.fixture
7347
def create_formdata(pub):
7348
    class Fixture:
7349
        pub = pub
7350

  
7351
        FormDef.wipe()
7352

  
7353
        source_formdef = FormDef()
7354
        source_formdef.name = 'source form'
7355
        source_formdef.fields = [
7356
            fields.StringField(id='0', label='string', varname='toto_string'),
7357
            fields.FileField(id='1', label='file', type='file', varname='toto_file'),
7358
        ]
7359
        source_formdef.store()
7360

  
7361
        target_formdef = FormDef()
7362
        target_formdef.name = 'target form'
7363
        target_formdef.enable_tracking_codes = True
7364
        target_formdef.fields = [
7365
            fields.StringField(id='0', label='string', varname='foo_string'),
7366
            fields.FileField(id='1', label='file', type='file', varname='foo_file'),
7367
        ]
7368
        target_formdef.store()
7369
        wf = Workflow(name='create-formdata')
7370

  
7371
        st1 = wf.add_status('New')
7372
        st2 = wf.add_status('Resubmit')
7373

  
7374
        jump = ChoiceWorkflowStatusItem()
7375
        jump.id = '_resubmit'
7376
        jump.label = 'Resubmit'
7377
        jump.by = ['_submitter']
7378
        jump.status = st2.id
7379
        jump.parent = st1
7380
        st1.items.append(jump)
7381

  
7382
        create_formdata = CreateFormdataWorkflowStatusItem()
7383
        create_formdata.id = '_create_formdata'
7384
        create_formdata.formdef_slug = target_formdef.url_name
7385
        create_formdata.mappings = [
7386
            Mapping(varname='foo_string', expression='=form_var_toto_string'),
7387
            Mapping(varname='foo_file', expression='=form_var_toto_file_raw'),
7388
        ]
7389
        create_formdata.parent = st2
7390
        st2.items.append(create_formdata)
7391

  
7392
        redirect = RedirectToUrlWorkflowStatusItem()
7393
        redirect.id = '_redirect'
7394
        redirect.url = '{{ linked.url }}'
7395
        redirect.parent = st2
7396
        st2.items.append(redirect)
7397

  
7398
        jump = JumpOnSubmitWorkflowStatusItem()
7399
        jump.id = '_jump'
7400
        jump.status = st1.id
7401
        jump.parent = st2
7402
        st2.items.append(jump)
7403

  
7404
        wf.store()
7405
        source_formdef.workflow_id = wf.id
7406
        source_formdef.store()
7407
    return Fixture
7408

  
7409

  
7410
def test_create_formdata_anonymous(create_formdata):
7411
    create_formdata.source_formdef.data_class().wipe()
7412
    create_formdata.target_formdef.data_class().wipe()
7413

  
7414
    app = get_app(create_formdata.pub)
7415
    resp = app.get('/source-form/')
7416
    resp.form['f0'] = 'zob'
7417
    resp.form['f1$file'] = Upload('test.txt', b'foobar', 'text/plain')
7418
    resp = resp.form.submit('submit')  # -> validation
7419
    resp = resp.form.submit('submit')  # -> submission
7420
    resp = resp.follow()
7421
    assert create_formdata.target_formdef.data_class().count() == 0
7422
    resp = resp.form.submit('button_resubmit')
7423
    assert create_formdata.target_formdef.data_class().count() == 1
7424
    assert create_formdata.target_formdef.data_class().select()[0].data.get('0') == 'zob'
7425

  
7426
    assert create_formdata.target_formdef.data_class().select()[0].data.get('1').get_content() == b'foobar'
7427
    assert create_formdata.target_formdef.data_class().select()[0].status == 'draft'
7428
    assert create_formdata.target_formdef.data_class().select()[0].submission_context == {
7429
        'orig_formdata_id': str(create_formdata.source_formdef.data_class().select()[0].id),
7430
        'orig_formdef_id': str(create_formdata.source_formdef.id),
7431
    }
7432

  
7433
    resp = resp.follow()
7434
    resp = resp.follow()
7435
    assert 'zob' in resp
7436
    resp = resp.forms[1].submit('submit')  # -> validation
7437
    resp = resp.forms[1].submit('submit')  # -> submission
7438
    assert create_formdata.target_formdef.data_class().count() == 1
7439
    assert create_formdata.target_formdef.data_class().select()[0].data.get('1').get_content() == b'foobar'
7440
    assert create_formdata.target_formdef.data_class().select()[0].data.get('1').get_content() == b'foobar'
7441
    assert create_formdata.target_formdef.data_class().select()[0].status == 'wf-new'
7342
-