15 |
15 |
from wcs.roles import Role
|
16 |
16 |
from wcs.formdef import FormDef
|
17 |
17 |
from wcs.categories import Category
|
|
18 |
from wcs.data_sources import NamedDataSource
|
18 |
19 |
from wcs import fields
|
19 |
20 |
from wcs.api import sign_url
|
20 |
21 |
|
... | ... | |
391 |
392 |
|
392 |
393 |
|
393 |
394 |
def test_formdata(local_user):
|
|
395 |
NamedDataSource.wipe()
|
|
396 |
data_source = NamedDataSource(name='foobar')
|
|
397 |
data_source.data_source = {'type': 'formula',
|
|
398 |
'value': repr(
|
|
399 |
[{'id': '1', 'text': 'foo', 'more': 'XXX'},
|
|
400 |
{'id': '2', 'text': 'bar', 'more': 'YYY'}])}
|
|
401 |
data_source.store()
|
|
402 |
|
394 |
403 |
Role.wipe()
|
395 |
404 |
role = Role(name='test')
|
396 |
405 |
role.store()
|
... | ... | |
401 |
410 |
fields.StringField(id='0', label='foobar', varname='foobar'),
|
402 |
411 |
fields.StringField(id='1', label='foobar2'),
|
403 |
412 |
fields.DateField(id='2', label='foobar3', varname='date'),
|
404 |
|
fields.FileField(id='3', label='foobar4', varname='file'),]
|
|
413 |
fields.FileField(id='3', label='foobar4', varname='file'),
|
|
414 |
fields.ItemField(id='4', label='foobar5', varname='item',
|
|
415 |
data_source={'type': 'foobar'}),
|
|
416 |
]
|
405 |
417 |
formdef.workflow_roles = {'_receiver': role.id}
|
406 |
418 |
formdef.store()
|
|
419 |
item_field = formdef.fields[4]
|
407 |
420 |
|
408 |
421 |
formdata = formdef.data_class()()
|
409 |
422 |
date = time.strptime('2014-01-20', '%Y-%m-%d')
|
410 |
423 |
upload = PicklableUpload('test.txt', 'text/plain', 'ascii')
|
411 |
424 |
upload.receive(['base64me'])
|
412 |
|
formdata.data = {'0': 'foo@localhost', '1': 'xxx', '2': date, '3': upload}
|
|
425 |
formdata.data = {
|
|
426 |
'0': 'foo@localhost',
|
|
427 |
'1': 'xxx',
|
|
428 |
'2': date,
|
|
429 |
'3': upload,
|
|
430 |
'4': '1',
|
|
431 |
}
|
|
432 |
formdata.data['4_display'] = item_field.store_display_value(
|
|
433 |
formdata.data, item_field.id)
|
|
434 |
formdata.data['4_structured'] = item_field.store_structured_value(
|
|
435 |
formdata.data, item_field.id)
|
413 |
436 |
formdata.user_id = local_user.id
|
414 |
437 |
formdata.just_created()
|
415 |
438 |
formdata.store()
|
... | ... | |
427 |
450 |
resp2 = get_app(pub).get(sign_uri('/test/%s/' % formdata.id, user=local_user))
|
428 |
451 |
assert resp.json == resp2.json
|
429 |
452 |
assert 'last_update_time' in resp.json
|
430 |
|
assert len(resp.json['fields']) == 3 # foobar2 has no varname, not in json
|
|
453 |
assert len(resp.json['fields']) == 6
|
|
454 |
assert 'foobar' in resp.json['fields']
|
|
455 |
assert 'foobar2' not in resp.json['fields'] # foobar2 has no varname, not in json
|
431 |
456 |
assert resp.json['user']['name'] == local_user.name
|
432 |
457 |
assert resp.json['fields']['foobar'] == 'foo@localhost'
|
433 |
458 |
assert resp.json['fields']['date'] == '2014-01-20'
|
434 |
459 |
assert resp.json['fields']['file']['content'] == 'YmFzZTY0bWU=' # base64('base64me')
|
435 |
460 |
assert resp.json['fields']['file']['filename'] == 'test.txt'
|
436 |
461 |
assert resp.json['fields']['file']['content_type'] == 'text/plain'
|
|
462 |
assert resp.json['fields']['item'] == 'foo'
|
|
463 |
assert resp.json['fields']['item_raw'] == '1'
|
|
464 |
assert resp.json['fields']['item_structured'] == {'id': '1', 'text': 'foo', 'more': 'XXX'}
|
437 |
465 |
|
438 |
466 |
def test_user_forms(local_user):
|
439 |
467 |
FormDef.wipe()
|