tests: add test on empty item and create formdata (#42743)

This commit is contained in:
Benjamin Dauvergne 2020-05-12 12:22:31 +02:00
parent e5848aa78a
commit 3fa7e7391c
1 changed files with 40 additions and 4 deletions

View File

@ -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)