904 |
904 |
{'varname': 'foo_block_foo_1', 'type': 'item', 'obj': 'formdef:formdef-1'},
|
905 |
905 |
{'varname': 'bar', 'type': 'items', 'obj': 'formdef:formdef-2'},
|
906 |
906 |
]
|
|
907 |
|
|
908 |
|
|
909 |
def test_data_source_custom_view_data_access(pub):
|
|
910 |
CardDef.wipe()
|
|
911 |
carddef = CardDef()
|
|
912 |
carddef.name = 'foo'
|
|
913 |
carddef.fields = [
|
|
914 |
StringField(id='1', label='Test', type='string', varname='foo'),
|
|
915 |
StringField(id='2', label='Test2', type='string', varname='foo2'),
|
|
916 |
]
|
|
917 |
carddef.digest_templates = {'default': '{{ form_var_foo }}'}
|
|
918 |
carddef.store()
|
|
919 |
carddef.data_class().wipe()
|
|
920 |
|
|
921 |
pub.custom_view_class.wipe()
|
|
922 |
|
|
923 |
custom_view = pub.custom_view_class()
|
|
924 |
custom_view.title = 'view'
|
|
925 |
custom_view.formdef = carddef
|
|
926 |
custom_view.columns = {'list': [{'id': 'id'}]}
|
|
927 |
custom_view.filters = {'filter-1': 'on', 'filter-1-value': 'xxx'}
|
|
928 |
|
|
929 |
custom_view.visibility = 'datasource'
|
|
930 |
custom_view.store()
|
|
931 |
|
|
932 |
carddata = carddef.data_class()()
|
|
933 |
carddata.data = {'1': 'hello world'}
|
|
934 |
carddata.just_created()
|
|
935 |
carddata.store()
|
|
936 |
|
|
937 |
# no filter, there's a card
|
|
938 |
cards = CardDef.get_data_source_items('carddef:foo')
|
|
939 |
assert len(cards) == 1
|
|
940 |
cards = CardDef.get_data_source_items('carddef:foo', get_by_text='hello world')
|
|
941 |
assert len(cards) == 1
|
|
942 |
|
|
943 |
# nothing returned as the filter doesn't match anything
|
|
944 |
cards = CardDef.get_data_source_items('carddef:foo:view')
|
|
945 |
assert len(cards) == 0
|
|
946 |
|
|
947 |
# filter is ignored for id lookup
|
|
948 |
cards = CardDef.get_data_source_items('carddef:foo:view', get_by_id=carddata.id)
|
|
949 |
assert len(cards) == 1
|
|
950 |
assert cards[0]['text'] == 'hello world'
|
|
951 |
|
|
952 |
cards = CardDef.get_data_source_items('carddef:foo:view', get_by_id=carddata.get_display_id())
|
|
953 |
assert len(cards) == 1
|
|
954 |
assert cards[0]['text'] == 'hello world'
|
|
955 |
|
|
956 |
# filter is not ignored for text lookup
|
|
957 |
cards = CardDef.get_data_source_items('carddef:foo:view', get_by_text='hello world')
|
|
958 |
assert len(cards) == 0
|