wcs/tests/test_formdata.py

122 lines
3.9 KiB
Python

import sys
import shutil
from quixote import cleanup
from quixote.http_request import Upload
from wcs.qommon.http_request import HTTPRequest
from wcs import fields, formdef
from wcs.formdef import FormDef
from utilities import create_temporary_pub
def setup_module(module):
cleanup()
global pub, formdef
pub = create_temporary_pub()
formdef = FormDef()
formdef.name = 'foobar'
formdef.url_name = 'foobar'
formdef.fields = []
formdef.store()
def teardown_module(module):
shutil.rmtree(pub.APP_DIR)
def test_basic():
formdata = formdef.data_class()()
substvars = formdata.get_substitution_variables()
assert substvars.get('form_status') == 'Unknown'
assert substvars.get('form_name') == 'foobar'
def test_saved():
formdef.data_class().wipe()
formdata = formdef.data_class()()
formdata.store()
substvars = formdata.get_substitution_variables()
assert substvars.get('form_number') == '1'
assert substvars.get('form_number_raw') == '1'
assert substvars.get('form_url').endswith('/foobar/1/')
assert substvars.get('form_url_backoffice').endswith('/backoffice/foobar/1/')
assert substvars.get('form_status_url').endswith('/foobar/1/status')
def test_display_id():
formdef.data_class().wipe()
formdata = formdef.data_class()()
formdata.id_display = 'bar'
formdata.store()
substvars = formdata.get_substitution_variables()
assert substvars.get('form_number') == 'bar'
assert substvars.get('form_number_raw') == '1'
def test_just_created():
formdef.data_class().wipe()
formdata = formdef.data_class()()
formdata.just_created()
formdata.store()
substvars = formdata.get_substitution_variables()
assert substvars.get('form_status') == 'Just Submitted'
assert substvars.get('form_status_is_endpoint') == False
assert substvars.get('form_receipt_date')
assert substvars.get('form_receipt_time')
assert substvars.get('form_evolution')
def test_field():
formdef.data_class().wipe()
formdef.fields = [fields.StringField(id='0', label='string')]
formdef.store()
formdata = formdef.data_class()()
substvars = formdata.get_substitution_variables()
assert substvars.get('form_f0') == ''
formdata.data = {'0': 'test'}
substvars = formdata.get_substitution_variables()
assert substvars.get('form_f0') == 'test'
assert substvars.get('form_field_string') == 'test'
def test_field_varname():
formdef.data_class().wipe()
formdef.fields = [fields.StringField(id='0', label='string', varname='foo')]
formdef.store()
formdata = formdef.data_class()()
formdata.data = {'0': 'test'}
substvars = formdata.get_substitution_variables()
assert substvars.get('form_f0') == 'test'
assert substvars.get('form_var_foo') == 'test'
def test_file_field():
formdef.data_class().wipe()
formdef.fields = [fields.FileField(id='0', label='file', varname='foo')]
formdef.store()
formdata = formdef.data_class()()
upload = Upload('test.txt', 'text/plain', 'ascii')
upload.receive(['first line', 'second line'])
formdata.data = {'0': upload}
formdata.id = 1
substvars = formdata.get_substitution_variables()
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'