122 lines
3.9 KiB
Python
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'
|