def recordlist_url(coll_id, list_id): """ URI for record list description data; also view using default entity view """ if not valid_id(list_id): list_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id="_list", entity_id=list_id)
def test_get_recordlist_edit(self): u = entitydata_edit_url(action="edit", coll_id="testcoll", type_id="_list", entity_id="Default_list", view_id="List_view") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context (values read from test data fixture) list_url = collection_entity_view_url(coll_id="testcoll", type_id="_list", entity_id="Default_list") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "_list") self.assertEqual(r.context['entity_id'], "Default_list") self.assertEqual(r.context['orig_id'], "Default_list") self.assertEqual(r.context['entity_url'], list_url) self.assertEqual(r.context['entity_uri'], "annal:display/Default_list") self.assertEqual(r.context['action'], "edit") self.assertEqual(r.context['continuation_url'], "") # Fields self._check_list_view_context_fields( r, action="edit", num_fields=2, list_id="Default_list", list_label="List entities", list_help="Default list of entities of given type", list_url=list_url, list_uri="annal:display/Default_list") return
def test_get_edit(self): u = entitydata_edit_url("edit", "testcoll", layout.VOCAB_TYPEID, entity_id="annal", view_id="Vocab_view") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context (values read from test data fixture) type_url = collection_entity_view_url(coll_id="testcoll", type_id=layout.VOCAB_TYPEID, entity_id="annal") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], layout.VOCAB_TYPEID) self.assertEqual(r.context['entity_id'], "annal") self.assertEqual(r.context['orig_id'], "annal") self.assertEqual(r.context['entity_uri'], "http://purl.org/annalist/2014/#") self.assertEqual(r.context['action'], "edit") self.assertEqual(r.context['continuation_url'], "") # Fields self._check_context_fields( r, action="edit", vocab_id="annal", orig_vocab_id="annal", vocab_label="Vocabulary namespace for Annalist-defined terms", vocab_uri="http://purl.org/annalist/2014/#", vocab_seealso=[ "https://github.com/gklyne/annalist/blob/master/src/annalist_root/annalist/identifiers.py" ], continuation_url="") return
def test_get_new(self): u = entitydata_edit_url("new", "testcoll", "_type", view_id="Type_view") r = self.client.get(u + "?continuation_url=/xyzzy/") self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context type_url = collection_entity_view_url(coll_id="testcoll", type_id="_type", entity_id="00000001") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "_type") self.assertEqual(r.context['entity_id'], "00000001") self.assertEqual(r.context['orig_id'], "00000001") self.assertEqual(r.context['entity_url'], type_url) self.assertEqual(r.context['entity_uri'], None) self.assertEqual(r.context['action'], "new") self.assertEqual(r.context['continuation_url'], "/xyzzy/") # Fields self._check_context_fields( r, type_id="00000001", type_label=default_label("testcoll", "_type", "00000001"), type_help=default_comment("testcoll", "_type", "00000001"), type_uri="") return
def test_get_edit(self): u = entitydata_edit_url("edit", "testcoll", "_type", entity_id="Default_type", view_id="Type_view") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context (values read from test data fixture) type_url = collection_entity_view_url(coll_id="testcoll", type_id="_type", entity_id="Default_type") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "_type") self.assertEqual(r.context['entity_id'], "Default_type") self.assertEqual(r.context['orig_id'], "Default_type") self.assertEqual(r.context['entity_url'], type_url) self.assertEqual(r.context['entity_uri'], "annal:Default_type") self.assertEqual(r.context['action'], "edit") self.assertEqual(r.context['continuation_url'], "") # Fields self._check_context_fields( r, type_id="Default_type", type_label="Default record type", type_help= "Default record type, applied when no type is specified when creating a record.", type_uri="annal:Default_type") return
def recordview_url(coll_id, view_id): """ URI for record view description data; also view using default entity view """ if not valid_id(view_id): view_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id="_view", entity_id=view_id)
def recordview_url(coll_id, view_id): """ URI for record view description data; also view using default entity view """ if not valid_id(view_id): view_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id="_view", entity_id=view_id)
def test_get_new(self): u = entitydata_edit_url("new", "testcoll", "_list", view_id="List_view") r = self.client.get(u + "?continuation_url=/xyzzy/") self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context list_url = collection_entity_view_url(coll_id="testcoll", type_id="_list", entity_id="00000001") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "_list") self.assertEqual(r.context['entity_id'], "00000001") self.assertEqual(r.context['orig_id'], "00000001") self.assertEqual(r.context['entity_url'], list_url) self.assertEqual(r.context['entity_uri'], None) self.assertEqual(r.context['action'], "new") self.assertEqual(r.context['continuation_url'], "/xyzzy/") # Fields self._check_list_view_context_fields( r, action="new", num_fields=2, list_id="00000001", list_label=default_label("testcoll", "_list", "00000001"), list_help=default_comment("testcoll", "_list", "00000001"), list_url=list_url, list_uri=None, list_type="List", list_default_type="Default_type", list_default_view="Default_view", list_selector="ALL") return
def test_get_edit(self): u = entitydata_edit_url( "edit", "testcoll", layout.TYPE_TYPEID, entity_id="Default_type", view_id="Type_view" ) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context (values read from test data fixture) type_url = collection_entity_view_url( coll_id="testcoll", type_id=layout.TYPE_TYPEID, entity_id="Default_type" ) self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], layout.TYPE_TYPEID) self.assertEqual(r.context['entity_id'], "Default_type") self.assertEqual(r.context['orig_id'], "Default_type") self.assertEqual(r.context['entity_uri'], "annal:Default_type") self.assertEqual(r.context['action'], "edit") self.assertEqual(r.context['continuation_url'], "") # Fields self._check_context_fields(r, action="edit", type_id="Default_type", type_label="Default record", type_uri="annal:Default_type", type_supertype_uris="" ) return
def recordtype_url(coll_id="testcoll", type_id="testtype"): """ URL for record type description data; also view using default entity view """ if not valid_id(type_id): return None return collection_entity_view_url(coll_id=coll_id, type_id="_type", entity_id=type_id)
def recordlist_url(coll_id, list_id): """ URI for record list description data; also view using default entity view """ if not valid_id(list_id): list_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id="_list", entity_id=list_id)
def test_get_new(self): u = entitydata_edit_url("new", "testcoll", layout.VOCAB_TYPEID, view_id="Vocab_view") r = self.client.get(u + "?continuation_url=/xyzzy/") self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context type_url = collection_entity_view_url(coll_id="testcoll", type_id=layout.VOCAB_TYPEID, entity_id="00000001") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], layout.VOCAB_TYPEID) self.assertEqual(r.context['entity_id'], "00000001") self.assertEqual(r.context['orig_id'], None) self.assertEqual(r.context['entity_uri'], "") self.assertEqual(r.context['action'], "new") self.assertEqual(r.context['continuation_url'], "/xyzzy/") # Fields self._check_context_fields(r, action="new", vocab_id="00000001", orig_vocab_id=None, vocab_label="", vocab_descr="", vocab_uri="", continuation_url="/xyzzy/") return
def test_get_edit(self): u = entitydata_edit_url("edit", "testcoll", layout.TYPE_TYPEID, entity_id="Default_type", view_id="Type_view") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context (values read from test data fixture) type_url = collection_entity_view_url(coll_id="testcoll", type_id=layout.TYPE_TYPEID, entity_id="Default_type") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], layout.TYPE_TYPEID) self.assertEqual(r.context['entity_id'], "Default_type") self.assertEqual(r.context['orig_id'], "Default_type") self.assertEqual(r.context['entity_uri'], "annal:Default_type") self.assertEqual(r.context['action'], "edit") self.assertEqual(r.context['continuation_url'], "") # Fields self._check_context_fields(r, action="edit", type_id="Default_type", type_label="Default record", type_uri="annal:Default_type", type_supertype_uris="") return
def annalistuser_url(coll_id="testcoll", user_id="testuser"): """ URI for user permissions data; also view using default entity view """ if not valid_id(user_id): user_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id="_user", entity_id=user_id)
def test_get_new(self): u = entitydata_edit_url("new", "testcoll", layout.TYPE_TYPEID, view_id="Type_view") r = self.client.get(u + "?continuation_url=/xyzzy/") self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context type_url = collection_entity_view_url(coll_id="testcoll", type_id=layout.TYPE_TYPEID, entity_id="00000001") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], layout.TYPE_TYPEID) self.assertEqual(r.context['entity_id'], "00000001") self.assertEqual(r.context['orig_id'], "00000001") self.assertEqual(r.context['entity_uri'], None) self.assertEqual(r.context['action'], "new") self.assertEqual(r.context['continuation_url'], "/xyzzy/") # Fields self._check_context_fields( r, action="new", type_id="00000001", type_label="(New type initial values - label)", type_uri="", type_supertype_uris="") return
def default_fields( coll_id=None, type_id=None, entity_id=None, width=12, **kwargs): """ Returns a function that accepts a field width and returns a dictionary of entity values for testing. The goal is to isolate default entity value settings from the test cases. """ def_label = kwargs.get("default_label", default_label(coll_id=coll_id, type_id=type_id, entity_id=entity_id) ) def_comment = kwargs.get("default_comment", default_comment(coll_id=coll_id, type_id=type_id, entity_id=entity_id) ) def_label_esc = def_label.replace("'", "'") def_comment_esc = def_comment.replace("'", "'") def_entity_url = collection_entity_view_url(coll_id=coll_id, type_id=type_id, entity_id=entity_id) def def_fields(width=12): fields = layout_classes(width=width) fields.update( { 'coll_id': coll_id , 'type_id': type_id , 'entity_id': entity_id , 'default_label': def_label , 'default_comment': def_comment , 'default_label_esc': def_label_esc , 'default_comment_esc': def_comment_esc , 'default_entity_url': def_entity_url }) if kwargs: fields.update(kwargs) return fields return def_fields
def entity_url(coll_id="testcoll", type_id="testtype", entity_id="entity_id"): """ URI for entity data; also view using default entity view """ if not valid_id(entity_id): entity_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id=type_id, entity_id=entity_id)
def default_fields(coll_id=None, type_id=None, entity_id=None, width=12): """ Returns a function that accepts a field width and returns a dictionary of entity values for testing. The goal is to isolate default entity value settings from the test cases. """ def_label = default_label(coll_id=coll_id, type_id=type_id, entity_id=entity_id) def_comment = default_comment(coll_id=coll_id, type_id=type_id, entity_id=entity_id) def_label_esc = def_label.replace("'", "'") def_comment_esc = def_comment.replace("'", "'") def_entity_url = collection_entity_view_url(coll_id=coll_id, type_id=type_id, entity_id=entity_id) def def_fields(width=12): fields = layout_classes(width=width) fields.update({ 'coll_id': coll_id, 'type_id': type_id, 'entity_id': entity_id, 'default_label': def_label, 'default_comment': def_comment, 'default_label_esc': def_label_esc, 'default_comment_esc': def_comment_esc, 'default_entity_url': def_entity_url }) return fields return def_fields
def recordfield_url(coll_id, field_id): """ URI for record field description data; also view using default entity view """ if not valid_id(field_id): return None # field_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id="_field", entity_id=field_id)
def recordgroup_url(coll_id, group_id): """ URI for group description data; also view using default entity view """ if not valid_id(group_id): return None # group_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id="_group", entity_id=group_id)
def annalistuser_url(coll_id="testcoll", user_id="testuser"): """ URI for user permissions data; also view using default entity view """ if not valid_id(user_id): user_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id="_user", entity_id=user_id)
def recordfield_url(coll_id, field_id): """ URI for record field description data; also view using default entity view """ if not valid_id(field_id): field_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id="_field", entity_id=field_id)
def recordtype_url(coll_id="testcoll", type_id="testtype"): """ URL for record type description data; also view using default entity view """ if not valid_id(type_id): return None return collection_entity_view_url(coll_id=coll_id, type_id="_type", entity_id=type_id)
def entity_url(coll_id="testcoll", type_id="testtype", entity_id="entity_id"): """ URI for entity data; also view using default entity view """ if not valid_id(entity_id): entity_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id=type_id, entity_id=entity_id)
def collectiondata_url(coll_id="testcoll"): """ URI for collection description data; also view using default entity view e.g. http://example.com/site/c/_annalist_site/d/_coll/testcoll/ """ if not valid_id(coll_id): coll_id = "___" return collection_entity_view_url(coll_id=layout.SITEDATA_ID, type_id="_coll", entity_id=coll_id)
def recordgroup_url(coll_id, group_id): """ URI for group description data; also view using default entity view """ if not valid_id(group_id): return None # group_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id="_group", entity_id=group_id)
def recordvocab_url(coll_id, vocab_id): """ URI for namespace vocabulary description data; also view using default entity view """ if not valid_id(vocab_id): return None # vocab_id = "___" return collection_entity_view_url(coll_id=coll_id, type_id="_vocab", entity_id=vocab_id)
def collectiondata_url(coll_id="testcoll"): """ URI for collection description data; also view using default entity view e.g. http://example.com/site/c/_annalist_site/d/_coll/testcoll/ """ if not valid_id(coll_id): coll_id = "___" return collection_entity_view_url(coll_id=layout.SITEDATA_ID, type_id="_coll", entity_id=coll_id)
def test_get_data_json(self): """ Request collection data as JSON-LD """ u = collection_entity_view_url(coll_id="testcoll", type_id="testtype", entity_id="entity1") r = self.client.get(u, HTTP_ACCEPT="application/ld+json") self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") v = r['Location'] self.assertEqual(v, TestHostUri + u + layout.ENTITY_DATA_FILE) return
def test_get_data_view(self): u = entitydata_edit_url("edit", "testcoll", "testtype", entity_id="entity1") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") check_default_view_context_fields( self, r, action="edit", type_id="testtype", entity_id="entity1", orig_entity_id="entity1", entity_label="Entity testcoll/testtype/entity1", entity_comment= "Entity coll testcoll, type testtype, entity entity1", entity_data_ref=entity_url( "testcoll", "testtype", entity_id="entity1") + layout.ENTITY_DATA_FILE, view_id="Default_view") u = collection_entity_view_url(coll_id="testcoll", type_id="testtype", entity_id="entity1") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "testtype") self.assertEqual(r.context['entity_id'], "entity1") self.assertEqual(r.context['orig_id'], "entity1") self.assertEqual(r.context['action'], "view") self.assertEqual(r.context['continuation_url'], "") self.assertEqual(r.context['entity_data_ref'], u + layout.ENTITY_DATA_FILE) self.assertEqual( r.context['entity_data_ref_json'], u + layout.ENTITY_DATA_FILE + "?type=application/json") return
def test_get_new(self): u = entitydata_edit_url("new", "testcoll", layout.TYPE_TYPEID, view_id="Type_view") r = self.client.get(u+"?continuation_url=/xyzzy/") self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context type_url = collection_entity_view_url( coll_id="testcoll", type_id=layout.TYPE_TYPEID, entity_id="00000001" ) self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], layout.TYPE_TYPEID) self.assertEqual(r.context['entity_id'], "00000001") self.assertEqual(r.context['orig_id'], "00000001") self.assertEqual(r.context['entity_uri'], None) self.assertEqual(r.context['action'], "new") self.assertEqual(r.context['continuation_url'], "/xyzzy/") # Fields self._check_context_fields(r, action="new", type_id="00000001", type_label="(New type initial values - label)", type_uri="", type_supertype_uris="" ) return
def test_get_recordview_edit_bibentry(self): u = entitydata_edit_url( "edit", "testcoll", layout.VIEW_TYPEID, entity_id="BibEntry_view", view_id="View_view" ) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context view_url = collection_entity_view_url("testcoll", layout.VIEW_TYPEID, "BibEntry_view") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], layout.VIEW_TYPEID) self.assertEqual(r.context['entity_id'], "BibEntry_view") self.assertEqual(r.context['orig_id'], "BibEntry_view") self.assertEqual(r.context['entity_uri'], None) self.assertEqual(r.context['action'], "edit") self.assertEqual(r.context['edit_view_button'], False) self.assertEqual(r.context['continuation_url'], "") # Skip checking fields 0-4 - that's already been covered # log.info("*** fields[5]['options']: "+repr(r.context['fields'][5]['options'])) # log.info("*** fields[5]['field_value']: "+repr(r.context['fields'][5]['field_value'])) # @@TODO: revise for more useful BibEntry structure expect_field_data = ( [ { 'annal:field_placement': "small:0,12;medium:0,6" , 'annal:field_id': layout.FIELD_TYPEID+"/Entity_id" } , { 'annal:field_placement': "small:0,12;medium:6,6" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_type" } , { 'annal:field_placement': "small:0,12" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_title" } , { 'annal:field_placement': "small:0,12;medium:0,6" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_month" } , { 'annal:field_placement': "small:0,12;medium:6,6" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_year" } , { 'annal:field_placement': "small:0,12" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_authors" } , { 'annal:field_placement': "small:0,12" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_editors" } , { 'annal:field_placement': "small:0,12" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_journal" } , { 'annal:field_placement': "small:0,12" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_bookentry" } , { 'annal:field_placement': "small:0,12" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_publication_details" } , { 'annal:field_placement': "small:0,12" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_identifiers" } , { 'annal:field_placement': "small:0,12" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_license" } , { 'annal:field_placement': "small:0,12" , 'annal:field_id': layout.FIELD_TYPEID+"/Bib_note" } ]) # NOTE: context['fields'][i]['field_id'] comes from FieldDescription instance via # bound_field, so type prefix is stripped. This does not apply to the field # ids actually coming from the view form. self.assertEqual(r.context['fields'][5]['field_id'], 'View_fields') self.assertEqual(r.context['fields'][5]['field_name'], 'View_fields') self.assertEqual(r.context['fields'][5]['field_label'], 'Fields') self.assertEqual(r.context['fields'][5]['field_property_uri'], "annal:view_fields") self.assertEqual(r.context['fields'][5]['field_value_mode'], "Value_direct") self.assertEqual(r.context['fields'][5]['field_value_type'], "annal:View_field") self.assertEqual(r.context['fields'][5]['field_value'], expect_field_data) self.assertEqual(r.context['fields'][5]['options'], self.no_options) return
def test_get_recordview_edit_bibentry(self): # coll_id = "testcoll" # type_id = layout.VIEW_TYPEID # entity_id = "BibEntry_view" # view_label = "@@@BibEntry_view_label" # entity_label = "%s/%s/%s"%(coll_id, type_id, entity_id) # entity_descr = "coll %s, type %s, entity %s"%(coll_id, type_id, entity_id) # Retrieve view form u = entitydata_edit_url("edit", "testcoll", layout.VIEW_TYPEID, entity_id="BibEntry_view", view_id="View_view") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context view_url = collection_entity_view_url("testcoll", layout.VIEW_TYPEID, "BibEntry_view") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], layout.VIEW_TYPEID) self.assertEqual(r.context['entity_id'], "BibEntry_view") self.assertEqual(r.context['orig_id'], "BibEntry_view") self.assertEqual(r.context['entity_uri'], None) self.assertEqual(r.context['action'], "edit") self.assertEqual(r.context['edit_view_button'], False) self.assertEqual(r.context['continuation_url'], "") # Skip checking fields 0-4 - that's already been covered # log.info("*** fields[5]['options']: "+repr(r.context['fields'][5]['options'])) # log.info("*** fields[5]['field_value']: "+repr(r.context['fields'][5]['field_value'])) # @@TODO: revise for more useful BibEntry structure expect_field_data = ([{ 'annal:field_placement': "small:0,12;medium:0,6", 'annal:field_id': layout.FIELD_TYPEID + "/Entity_id" }, { 'annal:field_placement': "small:0,12;medium:6,6", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_type" }, { 'annal:field_placement': "small:0,12", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_title" }, { 'annal:field_placement': "small:0,12;medium:0,6", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_month" }, { 'annal:field_placement': "small:0,12;medium:6,6", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_year" }, { 'annal:field_placement': "small:0,12", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_authors" }, { 'annal:field_placement': "small:0,12", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_editors" }, { 'annal:field_placement': "small:0,12", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_journal" }, { 'annal:field_placement': "small:0,12", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_bookentry" }, { 'annal:field_placement': "small:0,12", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_publication_details" }, { 'annal:field_placement': "small:0,12", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_identifiers" }, { 'annal:field_placement': "small:0,12", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_license" }, { 'annal:field_placement': "small:0,12", 'annal:field_id': layout.FIELD_TYPEID + "/Bib_note" }]) # NOTE: context['fields'][i]['field_id'] comes from FieldDescription instance via # bound_field, so type prefix is stripped. This does not apply to the field # ids actually coming from the view form. f5 = r.context['fields'][5] self.assertEqual(f5.field_id, 'View_fields') self.assertEqual(f5.field_name, 'View_fields') self.assertEqual(f5.field_label, 'Fields') self.assertEqual(f5.description['field_property_uri'], "annal:view_fields") self.assertEqual(f5.description['field_value_mode'], "Value_direct") self.assertEqual(f5.description['field_value_type'], "annal:View_field") self.assertEqual(f5['field_value'], expect_field_data) self.assertEqual(f5['options'], self.no_options) return