tests: check for cards referenced in block widgets (#44816)

This commit is contained in:
Frédéric Péters 2020-07-12 13:58:58 +02:00
parent ae0bb033cc
commit 3fb2760f57
1 changed files with 60 additions and 0 deletions

View File

@ -29,6 +29,7 @@ from quixote import cleanup, get_publisher, get_response
from quixote.http_request import Upload as QuixoteUpload
from wcs.qommon import ods
from wcs.api_utils import sign_url
from wcs.blocks import BlockDef
from wcs.qommon import errors, sessions
from wcs.qommon.form import PicklableUpload
from wcs.qommon.form import UploadedFile
@ -7030,3 +7031,62 @@ def test_backoffice_table_varname_filter(pub):
resp = resp.forms['listing-settings'].submit()
assert resp.text.count('<tr') == 6
def test_block_card_item_link(pub, studio, blocks_feature):
user = create_user(pub)
CardDef.wipe()
carddef = CardDef()
carddef.name = 'foo'
carddef.fields = [
fields.StringField(id='1', label='Test', type='string', varname='foo'),
]
carddef.backoffice_submission_roles = user.roles
carddef.workflow_roles = {'_editor': user.roles[0]}
carddef.digest_template = 'card {{form_var_foo}}'
carddef.store()
carddef.data_class().wipe()
card = carddef.data_class()()
card.data = {'1': 'plop'}
card.store()
card2 = carddef.data_class()()
card2.data = {'1': 'plop2'}
card2.store()
block = BlockDef()
block.name = 'foobar'
block.fields = [
fields.ItemField(id='1', label='Test', type='item',
data_source={'type': 'carddef:foo', 'value': ''}),
]
block.store()
formdef = FormDef()
formdef.name = 'bar'
formdef.fields = [
fields.BlockField(id='1', label='test', type='block:foobar', max_items=3),
]
formdef.store()
formdef.data_class().wipe()
app = login(get_app(pub))
resp = app.get('/bar/')
resp.form['f1$element0$f1'].value = card.id
resp = resp.form.submit('f1$add_element')
resp.form['f1$element1$f1'].value = card2.id
resp = resp.form.submit('submit') # -> validation page
assert resp.form['f1$element0$f1'].value == str(card.id)
assert resp.form['f1$element0$f1_label'].value == 'card plop'
assert resp.form['f1$element1$f1'].value == str(card2.id)
assert resp.form['f1$element1$f1_label'].value == 'card plop2'
resp = resp.form.submit('submit') # -> final submit
resp = resp.follow()
assert '<div class="value">card plop</div>' in resp
assert '<div class="value">card plop2</div>' in resp
# check cards are links in backoffice
resp = app.get('/backoffice/management' + resp.request.path)
assert '<div class="value"><a href="http://example.net/backoffice/data/foo/%s/">card plop</a></div></div>' % card.id in resp
assert '<div class="value"><a href="http://example.net/backoffice/data/foo/%s/">card plop2</a></div></div>' % card2.id in resp