tests: wipe data_class() after a first http request, to get things initialized

This commit is contained in:
Frédéric Péters 2015-03-02 18:27:22 +01:00
parent a3977d1715
commit 646310f1cf
1 changed files with 13 additions and 10 deletions

View File

@ -104,10 +104,10 @@ def test_form_submit(pub):
def test_form_submit_no_confirmation(pub):
formdef = create_formdef()
formdef.data_class().wipe()
formdef.confirmation = False
formdef.store()
page = get_app(pub).get('/test/')
formdef.data_class().wipe()
next_page = page.forms[0].submit('submit')
assert next_page.status_int == 302
next_page = next_page.follow()
@ -116,10 +116,10 @@ def test_form_submit_no_confirmation(pub):
def test_form_string_field_submit(pub):
formdef = create_formdef()
formdef.data_class().wipe()
formdef.fields = [fields.StringField(id='0', label='string')]
formdef.store()
page = get_app(pub).get('/test/')
formdef.data_class().wipe()
next_page = page.forms[0].submit('submit') # but the field is required
assert '<div class="error">required field</div>' in next_page.body
next_page.forms[0]['f0'] = 'foobar'
@ -136,13 +136,13 @@ def test_form_string_field_submit(pub):
def test_form_multi_page(pub):
formdef = create_formdef()
formdef.data_class().wipe()
formdef.fields = [fields.PageField(id='0', label='1st page', type='page'),
fields.StringField(id='1', label='string'),
fields.PageField(id='2', label='2nd page', type='page'),
fields.StringField(id='3', label='string 2')]
formdef.store()
page = get_app(pub).get('/test/')
formdef.data_class().wipe()
page.forms[0]['f1'] = 'foo'
assert page.forms[0].fields['submit'][0].value_if_submitted() == 'Next'
next_page = page.forms[0].submit('submit')
@ -161,13 +161,13 @@ def test_form_multi_page(pub):
def test_form_multi_page_condition(pub):
formdef = create_formdef()
formdef.data_class().wipe()
formdef.fields = [fields.PageField(id='0', label='1st page', type='page'),
fields.StringField(id='1', label='string'),
fields.PageField(id='2', label='2nd page', type='page', condition='False'),
fields.StringField(id='3', label='string 2')]
formdef.store()
resp = get_app(pub).get('/test/')
formdef.data_class().wipe()
resp.forms[0]['f1'] = 'foo'
resp = resp.forms[0].submit('submit') # should go straight to validation
assert 'Check values then click submit.' in resp.body
@ -178,8 +178,8 @@ def test_form_multi_page_condition(pub):
def test_form_submit_with_user(pub):
create_user(pub)
formdef = create_formdef()
formdef.data_class().wipe()
page = login(get_app(pub), username='foo', password='foo').get('/test/')
formdef.data_class().wipe()
next_page = page.forms[0].submit('submit')
assert 'Check values then click submit.' in next_page.body
next_page = next_page.forms[0].submit('submit')
@ -194,6 +194,7 @@ def test_form_submit_with_user(pub):
def test_form_visit_existing(pub):
user = create_user(pub)
formdef = create_formdef()
page = login(get_app(pub), username='foo', password='foo').get('/test/')
formdef.data_class().wipe()
formdata = formdef.data_class()()
@ -254,11 +255,11 @@ def test_form_no_tracking_code(pub):
def test_form_tracking_code(pub):
formdef = create_formdef()
formdef.data_class().wipe()
formdef.fields = [fields.StringField(id='0', label='string')]
formdef.enable_tracking_codes = True
formdef.store()
resp = get_app(pub).get('/test/')
formdef.data_class().wipe()
assert '<h3>Tracking code</h3>' in resp.body
resp.forms[0]['f0'] = 'foobar'
resp = resp.forms[0].submit('submit')
@ -322,12 +323,12 @@ def test_form_tracking_code(pub):
def test_form_tracking_code_as_user(pub):
user = create_user(pub)
formdef = create_formdef()
formdef.data_class().wipe()
formdef.fields = [fields.StringField(id='0', label='string')]
formdef.enable_tracking_codes = True
formdef.store()
resp = login(get_app(pub), username='foo', password='foo').get('/test/')
formdef.data_class().wipe()
assert '<h3>Tracking code</h3>' in resp.body
resp.forms[0]['f0'] = 'foobar'
resp = resp.forms[0].submit('submit')
@ -419,7 +420,6 @@ def test_form_tracking_code_email(pub):
def test_form_invalid_tracking_code(pub):
formdef = create_formdef()
formdef.data_class().wipe()
formdef.fields = [fields.StringField(id='0', label='string')]
formdef.enable_tracking_codes = True
formdef.store()
@ -432,16 +432,19 @@ def test_form_invalid_tracking_code(pub):
formdef2.enable_tracking_codes = True
formdef2.store()
resp = get_app(pub).get('/')
formdata = formdef.data_class()()
formdata.data = {'0': 'foobar'}
formdata.store()
# check we can go back to it
formdef.data_class().wipe()
code = pub.tracking_code_class()
code.formdata = formdata
code.store()
# check we can go back to it
resp = get_app(pub).get('/')
resp.forms[0]['code'] = code.id
resp = resp.forms[0].submit()
assert resp.location == 'http://example.net/code/%s/load' % code.id