Projet

Général

Profil

0003-tests-check-for-cards-referenced-in-block-widgets-44.patch

Frédéric Péters, 12 juillet 2020 16:06

Télécharger (3,23 ko)

Voir les différences:

Subject: [PATCH 3/3] tests: check for cards referenced in block widgets
 (#44816)

 tests/test_backoffice_pages.py | 60 ++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)
tests/test_backoffice_pages.py
28 28
from quixote import cleanup, get_publisher, get_response
29 29
from wcs.qommon import ods
30 30
from wcs.api_utils import sign_url
31
from wcs.blocks import BlockDef
31 32
from wcs.qommon import errors, sessions
32 33
from wcs.qommon.form import PicklableUpload
33 34
from wcs.qommon.ident.password_accounts import PasswordAccount
......
6918 6919

  
6919 6920
    resp = resp.forms['listing-settings'].submit()
6920 6921
    assert resp.text.count('<tr') == 6
6922

  
6923

  
6924
def test_block_card_item_link(pub, studio, blocks_feature):
6925
    user = create_user(pub)
6926
    CardDef.wipe()
6927
    carddef = CardDef()
6928
    carddef.name = 'foo'
6929
    carddef.fields = [
6930
        fields.StringField(id='1', label='Test', type='string', varname='foo'),
6931
    ]
6932
    carddef.backoffice_submission_roles = user.roles
6933
    carddef.workflow_roles = {'_editor': user.roles[0]}
6934
    carddef.digest_template = 'card {{form_var_foo}}'
6935
    carddef.store()
6936
    carddef.data_class().wipe()
6937

  
6938
    card = carddef.data_class()()
6939
    card.data = {'1': 'plop'}
6940
    card.store()
6941

  
6942
    card2 = carddef.data_class()()
6943
    card2.data = {'1': 'plop2'}
6944
    card2.store()
6945

  
6946
    block = BlockDef()
6947
    block.name = 'foobar'
6948
    block.fields = [
6949
        fields.ItemField(id='1', label='Test', type='item',
6950
            data_source={'type': 'carddef:foo', 'value': ''}),
6951
    ]
6952
    block.store()
6953

  
6954
    formdef = FormDef()
6955
    formdef.name = 'bar'
6956
    formdef.fields = [
6957
        fields.BlockField(id='1', label='test', type='block:foobar', max_items=3),
6958
    ]
6959
    formdef.store()
6960
    formdef.data_class().wipe()
6961

  
6962
    app = login(get_app(pub))
6963
    resp = app.get('/bar/')
6964
    resp.form['f1$element0$f1'].value = card.id
6965
    resp = resp.form.submit('f1$add_element')
6966
    resp.form['f1$element1$f1'].value = card2.id
6967
    resp = resp.form.submit('submit')  # -> validation page
6968
    assert resp.form['f1$element0$f1'].value == str(card.id)
6969
    assert resp.form['f1$element0$f1_label'].value == 'card plop'
6970
    assert resp.form['f1$element1$f1'].value == str(card2.id)
6971
    assert resp.form['f1$element1$f1_label'].value == 'card plop2'
6972
    resp = resp.form.submit('submit')  # -> final submit
6973
    resp = resp.follow()
6974
    assert '<div class="value">card plop</div>' in resp
6975
    assert '<div class="value">card plop2</div>' in resp
6976

  
6977
    # check cards are links in backoffice
6978
    resp = app.get('/backoffice/management' + resp.request.path)
6979
    assert '<div class="value"><a href="http://example.net/backoffice/data/foo/%s/">card plop</a></div></div>' % card.id in resp
6980
    assert '<div class="value"><a href="http://example.net/backoffice/data/foo/%s/">card plop2</a></div></div>' % card2.id in resp
6921
-