tests: add block and item used in digest test

This commit is contained in:
Frédéric Péters 2020-07-04 11:03:18 +02:00
parent efbadb06b5
commit ea5a61cf53
1 changed files with 71 additions and 0 deletions

View File

@ -8692,3 +8692,74 @@ def test_block_digest(pub, blocks_feature):
assert formdef.data_class().select()[0].data['1']['data'] == [
{'123': 'foo', '234': 'bar'}, {'123': 'foo2', '234': 'bar2'}]
assert formdef.data_class().select()[0].data['1_display'] == 'XfooY, Xfoo2Y'
def test_block_digest_item(pub, blocks_feature):
create_user(pub)
FormDef.wipe()
BlockDef.wipe()
NamedDataSource.wipe()
# add a named data source
data_source = NamedDataSource(name='foobar')
data_source.data_source = {
'type': 'formula',
'value': repr([{'id': '1', 'text': 'un'},
{'id': '2', 'text': 'deux'}])}
data_source.store()
block = BlockDef()
block.name = 'foobar'
block.fields = [
fields.StringField(id='123', required=True, label='Test',
type='string', varname='foo'),
fields.ItemField(id='234', required=True, label='Test2',
type='item', varname='bar', data_source={'type': 'foobar'}),
]
block.store()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.BlockField(id='1', label='test', type='block:foobar', max_items=3),
]
formdef.store()
app = get_app(pub)
resp = app.get(formdef.get_url())
resp.form['f1$element0$f123'] = 'foo'
resp.form['f1$element0$f234'] = '1'
resp = resp.form.submit('f1$add_element')
resp.form['f1$element1$f123'] = 'foo2'
resp.form['f1$element1$f234'] = '2'
resp = resp.form.submit('submit') # -> validation page
resp = resp.form.submit('submit') # -> submit
assert formdef.data_class().select()[0].data['1']['data'] == [
{'123': 'foo', '234': '1', '234_display': 'un'},
{'123': 'foo2', '234': '2', '234_display': 'deux'},
]
# by default it gets the type of object
assert formdef.data_class().select()[0].data['1_display'] == 'foobar, foobar'
# set a digest template
formdef.data_class().wipe()
block.digest_template = 'X{{foobar_var_bar}}Y'
block.store()
resp = app.get(formdef.get_url())
resp.form['f1$element0$f123'] = 'foo'
resp.form['f1$element0$f234'] = '1'
resp = resp.form.submit('f1$add_element')
resp.form['f1$element1$f123'] = 'foo2'
resp.form['f1$element1$f234'] = '2'
resp = resp.form.submit('submit') # -> validation page
resp = resp.form.submit('submit') # -> submit
assert formdef.data_class().select()[0].data['1']['data'] == [
{'123': 'foo', '234': '1', '234_display': 'un'},
{'123': 'foo2', '234': '2', '234_display': 'deux'},
]
assert formdef.data_class().select()[0].data['1_display'] == 'XunY, XdeuxY'