From d0358afa405dc9e515c8696cec99bc6f4fe002b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 26 Mar 2024 14:48:40 +0100 Subject: [PATCH] tests: check update of items relations (#88687) --- tests/test_carddef.py | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/tests/test_carddef.py b/tests/test_carddef.py index ae37e2ae3..c126abc1c 100644 --- a/tests/test_carddef.py +++ b/tests/test_carddef.py @@ -1626,6 +1626,57 @@ def test_card_update_related_cascading_loop(pub): assert carddata2.data['2_display'] == 'card1 card2 card1 None' +def test_card_update_related_items_relation(pub): + CardDef.wipe() + FormDef.wipe() + + carddef = CardDef() + carddef.name = 'foo' + carddef.fields = [ + StringField(id='1', label='Test', varname='foo'), + ] + carddef.digest_templates = {'default': '{{ form_var_foo }}'} + carddef.store() + carddef.data_class().wipe() + + carddata1 = carddef.data_class()() + carddata1.data = {'1': 'card1'} + carddata1.just_created() + carddata1.store() + + carddata2 = carddef.data_class()() + carddata2.data = {'1': 'card2'} + carddata2.just_created() + carddata2.store() + + formdef = FormDef() + formdef.name = 'foo' + formdef.fields = [ + ItemField(id='1', label='Test', data_source={'type': 'carddef:foo'}), + ItemsField(id='2', label='Test2', data_source={'type': 'carddef:foo'}), + ] + formdef.store() + + formdata = formdef.data_class()() + formdata.data = {'1': '1', '2': ['1', '2']} + formdata.data['1_display'] = formdef.fields[0].store_display_value(formdata.data, formdef.fields[0].id) + formdata.data['2_display'] = formdef.fields[1].store_display_value(formdata.data, formdef.fields[1].id) + assert formdata.data['1_display'] == 'card1' + assert formdata.data['2_display'] == 'card1, card2' + formdata.just_created() + formdata.store() + + pub.cleanup() + carddef = carddef.get(carddef.id) + carddata1 = carddef.data_class().get(carddata1.id) + carddata1.data = {'1': 'card1-change1'} + carddata1.store() + + formdata.refresh_from_storage() + assert formdata.data['1_display'] == 'card1-change1' + assert formdata.data['2_display'] == 'card1-change1, card2' + + def test_card_update_related_deleted(pub): BlockDef.wipe() CardDef.wipe()