tests: add tests for formdata get_submitter_email

This commit is contained in:
Frédéric Péters 2014-12-28 15:44:58 +01:00
parent 9ae34f4c8c
commit 3e6de7a813
2 changed files with 45 additions and 1 deletions

View File

@ -1,16 +1,19 @@
import shutil
from quixote import cleanup
from wcs.qommon.ident.password_accounts import PasswordAccount
from wcs.formdef import FormDef
from wcs.categories import Category
from wcs import fields
from utilities import get_app, login, create_temporary_pub
from utilities import get_app, login, create_temporary_pub, emails
def setup_module(module):
cleanup()
global pub
pub = create_temporary_pub()
pub.cfg['identification'] = {'methods': ['password']}
pub.write_cfg()
cat = Category(name='foobar')
cat.store()
@ -132,3 +135,26 @@ def test_form_multi_page():
assert formdef.data_class().count() == 1
data = formdef.data_class().get(1)
assert data.data == {'1': 'foo', '3': 'bar'}
def test_form_submit_with_user():
user = pub.user_class()
user.email = 'foo@localhost'
user.store()
account = PasswordAccount(id='foo')
account.set_password('foo')
account.user_id = user.id
account.store()
formdef = create_formdef()
formdef.data_class().wipe()
page = login(get_app(pub), username='foo', password='foo').get('/test/')
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')
assert next_page.status_int == 302
next_page = next_page.follow()
assert 'The form has been recorded' in next_page.body
assert formdef.data_class().count() == 1
# check the user received a copy by email
assert emails.emails.get('New form (test)')
assert emails.emails.get('New form (test)')['kwargs']['email_rcpt'] == ['foo@localhost']

View File

@ -101,3 +101,21 @@ def test_file_field():
assert substvars.get('form_var_foo') == 'test.txt'
assert substvars.get('form_var_foo_url').endswith('/foobar/1/download?f=0')
assert isinstance(substvars.get('form_var_foo_raw'), Upload)
def test_get_submitter():
formdef.data_class().wipe()
formdef.fields = [fields.StringField(id='0', label='email', varname='foo',
prefill={'type': 'user', 'value': 'email'})]
formdef.store()
formdata = formdef.data_class()()
assert formdef.get_submitter_email(formdata) is None
formdata.data = {'0': 'foo@localhost'}
assert formdef.get_submitter_email(formdata) == 'foo@localhost'
user = pub.user_class()
user.email = 'bar@localhost'
user.store()
formdata.user_id = user.id
assert formdef.get_submitter_email(formdata) == 'bar@localhost'