tests: add test on empty item and create formdata (#42743)
This commit is contained in:
parent
e5848aa78a
commit
3fa7e7391c
|
@ -7705,18 +7705,20 @@ def create_formdata(pub):
|
|||
|
||||
FormDef.wipe()
|
||||
|
||||
data = [
|
||||
{'id': '1', 'text': 'un', 'more': 'foo'},
|
||||
{'id': '2', 'text': 'deux', 'more': 'bar'},
|
||||
]
|
||||
ds = {
|
||||
'type': 'formula',
|
||||
'value': repr([
|
||||
{'id': '1', 'text': 'un', 'more': 'foo'},
|
||||
{'id': '2', 'text': 'deux', 'more': 'bar'}]),
|
||||
'value': repr(data),
|
||||
}
|
||||
source_formdef = FormDef()
|
||||
source_formdef.name = 'source form'
|
||||
source_formdef.fields = [
|
||||
fields.StringField(id='0', label='string', varname='toto_string'),
|
||||
fields.FileField(id='1', label='file', type='file', varname='toto_file'),
|
||||
fields.ItemField(id='2', label='item', data_source=ds, varname='toto_item'),
|
||||
fields.ItemField(id='2', label='item', required=False, data_source=ds, varname='toto_item', hint='hint'),
|
||||
]
|
||||
source_formdef.store()
|
||||
|
||||
|
@ -7867,6 +7869,40 @@ def test_create_formdata_anonymous_submitted(create_formdata):
|
|||
assert pq('.linked .foo_string').text() == 'zob'
|
||||
|
||||
|
||||
def test_create_formdata_empty_item_ds_with_id_parameter(create_formdata):
|
||||
LoggedError.wipe()
|
||||
NamedDataSource.wipe()
|
||||
data_source = NamedDataSource(name='foobar')
|
||||
data_source.data_source = {
|
||||
'type': 'json',
|
||||
'value': 'http://remote.example.net/json',
|
||||
}
|
||||
data_source.id_parameter = 'id'
|
||||
data_source.store()
|
||||
create_formdata['source_formdef'].data_class().wipe()
|
||||
create_formdata['target_formdef'].data_class().wipe()
|
||||
create_formdata['source_formdef'].fields[2].data_source = {'type': 'foobar'}
|
||||
create_formdata['source_formdef'].store()
|
||||
create_formdata['target_formdef'].fields[2].data_source = {'type': 'foobar'}
|
||||
create_formdata['target_formdef'].store()
|
||||
|
||||
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
||||
data = {'data': create_formdata['data']}
|
||||
urlopen.side_effect = lambda *args: StringIO(json.dumps(data))
|
||||
|
||||
app = get_app(create_formdata['pub'])
|
||||
resp = app.get('/source-form/')
|
||||
resp.form['f0'] = 'zob'
|
||||
resp.form['f1$file'] = Upload('test.txt', b'foobar', 'text/plain')
|
||||
resp = resp.form.submit('submit') # -> validation
|
||||
resp = resp.form.submit('submit') # -> submission
|
||||
resp = resp.follow()
|
||||
assert create_formdata['target_formdef'].data_class().count() == 0
|
||||
assert LoggedError.count() == 0
|
||||
resp = resp.form.submit('button_resubmit')
|
||||
assert LoggedError.count() == 0
|
||||
|
||||
|
||||
def test_js_libraries(pub):
|
||||
create_formdef()
|
||||
resp = get_app(pub).get('/test/', status=200)
|
||||
|
|
Loading…
Reference in New Issue