Projet

Général

Profil

0005-add-first-test.patch

Benjamin Dauvergne, 28 novembre 2019 01:55

Télécharger (4,99 ko)

Voir les différences:

Subject: [PATCH 5/5] add first test

 tests/test_form_pages.py | 97 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 97 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
......
7105 7107

  
7106 7108
    resp = resp.form.submit('button_x2').follow()
7107 7109
    assert '<span class="status">Status2' in resp.text
7110

  
7111

  
7112
@pytest.fixture
7113
def create_formdata(pub):
7114
    class Fixture:
7115
        pub = pub
7116
        source_formdef = FormDef()
7117
        source_formdef.name = 'source form'
7118
        source_formdef.fields = [
7119
            fields.StringField(id='0', label='string', varname='toto_string'),
7120
            fields.FileField(id='1', label='file', type='file', varname='toto_file'),
7121
        ]
7122
        source_formdef.store()
7123

  
7124
        target_formdef = FormDef()
7125
        target_formdef.name = 'target form'
7126
        target_formdef.enable_tracking_codes = True
7127
        target_formdef.fields = [
7128
            fields.StringField(id='0', label='string', varname='foo_string'),
7129
            fields.FileField(id='1', label='file', type='file', varname='foo_file'),
7130
        ]
7131
        target_formdef.store()
7132
        wf = Workflow(name='create-formdata')
7133

  
7134
        st1 = wf.add_status('New')
7135
        st2 = wf.add_status('Resubmit')
7136

  
7137
        jump = ChoiceWorkflowStatusItem()
7138
        jump.id = '_resubmit'
7139
        jump.label = 'Resubmit'
7140
        jump.by = ['_submitter']
7141
        jump.status = st2.id
7142
        jump.parent = st1
7143
        st1.items.append(jump)
7144

  
7145
        create_formdata = CreateFormdataWorkflowStatusItem()
7146
        create_formdata.id = '_create_formdata'
7147
        create_formdata.formdef_slug = target_formdef.url_name
7148
        create_formdata.mappings = [
7149
            Mapping(varname='foo_string', expression='=form_var_toto_string'),
7150
            Mapping(varname='foo_file', expression='=form_var_toto_file_raw'),
7151
        ]
7152
        create_formdata.parent = st2
7153
        st2.items.append(create_formdata)
7154

  
7155
        redirect = RedirectToUrlWorkflowStatusItem()
7156
        redirect.id = '_redirect'
7157
        redirect.url = '{{ linked.url }}'
7158
        redirect.parent = st2
7159
        st2.items.append(redirect)
7160

  
7161
        jump = JumpOnSubmitWorkflowStatusItem()
7162
        jump.id = '_jump'
7163
        jump.status = st1.id
7164
        jump.parent = st2
7165
        st2.items.append(jump)
7166

  
7167
        wf.store()
7168
        source_formdef.workflow_id = wf.id
7169
        source_formdef.store()
7170
    return Fixture
7171

  
7172

  
7173
def test_create_formdata_anonymous(create_formdata):
7174
    create_formdata.source_formdef.data_class().wipe()
7175
    create_formdata.target_formdef.data_class().wipe()
7176

  
7177
    app = get_app(create_formdata.pub)
7178
    resp = app.get('/source-form/')
7179
    resp.form['f0'] = 'zob'
7180
    resp.form['f1$file'] = Upload('test.txt', b'foobar', 'text/plain')
7181
    resp = resp.form.submit('submit')  # -> validation
7182
    resp = resp.form.submit('submit')  # -> submission
7183
    resp = resp.follow()
7184
    assert create_formdata.target_formdef.data_class().count() == 0
7185
    resp = resp.form.submit('button_resubmit')
7186
    assert create_formdata.target_formdef.data_class().count() == 1
7187
    assert create_formdata.target_formdef.data_class().select()[0].data.get('0') == 'zob'
7188

  
7189
    assert create_formdata.target_formdef.data_class().select()[0].data.get('1').get_content() == b'foobar'
7190
    assert create_formdata.target_formdef.data_class().select()[0].status == 'draft'
7191
    assert create_formdata.target_formdef.data_class().select()[0].submission_context == {
7192
        'orig_formdata_id': create_formdata.source_formdef.data_class().select()[0].id,
7193
        'orig_formdef_id': create_formdata.source_formdef.id,
7194
    }
7195

  
7196
    resp = resp.follow()
7197
    resp = resp.follow()
7198
    assert 'zob' in resp
7199
    resp = resp.forms[1].submit('submit')  # -> validation
7200
    resp = resp.forms[1].submit('submit')  # -> submission
7201
    assert create_formdata.target_formdef.data_class().count() == 1
7202
    assert create_formdata.target_formdef.data_class().select()[0].data.get('1').get_content() == b'foobar'
7203
    assert create_formdata.target_formdef.data_class().select()[0].data.get('1').get_content() == b'foobar'
7204
    assert create_formdata.target_formdef.data_class().select()[0].status == 'wf-new'
7108
-