def test_list_entity_references(self): # List linked records - check values in listing u = entitydata_list_type_url("testcoll", "testsrc_type", list_id="testsrc_list") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context entities = context_list_entities(r.context) head_fields = context_list_head_fields(r.context) self.assertEqual(len(entities), 2) self.assertEqual(len(head_fields), 3) for entc, esrc, etgt in ((entities[0], "testsrc1", "testtgt1"), (entities[1], "testsrc2", "testtgt2")): item_fields = context_list_item_fields(r.context, entc) self.assertEqual(len(item_fields), 3) self.assertEqual(entc['entity_id'], esrc) self.assertEqual(entc['entity_type_id'], "testsrc_type") self.assertEqual(item_fields[0].field_id, "Entity_id") self.assertEqual(item_fields[0].field_value, esrc) self.assertEqual(item_fields[0].field_value_link, None) self.assertEqual(item_fields[1].field_id, "testtgtref_field") self.assertEqual(item_fields[1].field_value, etgt) self.assertEqual(item_fields[1].field_value_link, "/testsite/c/testcoll/d/testtgt_type/%s/" % etgt) self.assertEqual(item_fields[2].field_id, "Entity_label") self.assertEqual(item_fields[2].field_value, "testsrc_entity %s label" % esrc) self.assertEqual(item_fields[2].field_value_link, None) return
def test_get_types_scope_all_list(self): # List types in current collection and site-wide u = entitydata_list_type_url( "testcoll", "_type", list_id="Type_list", scope="all" ) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context self.assertEqual(r.context['title'], "Entity types - Collection testcoll") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "_type") # Fields head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 2 cols.. self.assertEqual(len(head_fields[0]['row_field_descs']), 2) # 1st field f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0['field_id'], 'Entity_id') self.assertEqual(f0['field_name'], 'entity_id') # 2nd field f1 = context_view_field(r.context, 0, 1) self.assertEqual(f1['field_id'], 'Entity_label') self.assertEqual(f1['field_name'], 'Entity_label') # Entities entities = context_list_entities(r.context) listed_entities = { e['entity_id']: e for e in entities } type_entities = get_site_bib_types() | {"testtype", "testtype2"} self.assertEqual(set(listed_entities.keys()), type_entities) return
def test_list_entity_references(self): # List linked records - check values in listing u = entitydata_list_type_url("testcoll", "testsrc_type", list_id="testsrc_list") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context entities = context_list_entities(r.context) head_fields = context_list_head_fields(r.context) # print "@@ context: "+repr(r.context['List_rows']) # print "@@ head_fields: "+repr(head_fields) self.assertEqual(len(entities), 2) self.assertEqual(len(head_fields), 1) # One row of 3 cols.. self.assertEqual(len(head_fields[0]['row_field_descs']), 3) entity_values = ( (entities[0], "testsrc1", "testtgt1"), (entities[1], "testsrc2", "testtgt2") ) for entc, esrc, etgt in entity_values: item_fields = context_list_item_fields(r.context, entc) self.assertEqual(len(item_fields), 3) self.assertEqual(entc['entity_id'], esrc) self.assertEqual(entc['entity_type_id'], "testsrc_type") self.assertEqual(item_fields[0].field_id, "Entity_id") self.assertEqual(item_fields[0].field_value, esrc) self.assertEqual(item_fields[0].field_value_link, None) self.assertEqual(item_fields[1].field_id, "testtgtref_field") self.assertEqual(item_fields[1].field_value, "testtgt_type/"+etgt) self.assertEqual(item_fields[1].field_value_link, "/testsite/c/testcoll/d/testtgt_type/%s/"%etgt) self.assertEqual(item_fields[2].field_id, "Entity_label") self.assertEqual(item_fields[2].field_value, "testsrc_entity %s label"%esrc) self.assertEqual(item_fields[2].field_value_link, None) return
def test_list_field_alias(self): # List BibEntry fields in Default_list u = entitydata_list_type_url("testcoll", "BibEntry_type", list_id="Default_list") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # log.info(r.content) #@@ # Test context self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "BibEntry_type") self.assertEqual(r.context['list_choices']['field_value'], "Default_list") # Fields head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 2) # 1st field self.assertEqual(head_fields[0]['field_id'], 'Entity_id') self.assertEqual(head_fields[0]['field_property_uri'], "annal:id") self.assertEqual(head_fields[0]['field_value'], "") # 2nd field self.assertEqual(head_fields[1]['field_id'], 'Entity_label') self.assertEqual(head_fields[1]['field_property_uri'], "rdfs:label") self.assertEqual(head_fields[1]['field_value'], "") # List entities (actually, just the one) entities = context_list_entities(r.context) self.assertEqual(len(entities), 1) self.assertEqual( context_list_item_field_value(r.context, entities[0], 0), "bibentity1" ) self.assertEqual( context_list_item_field_value(r.context, entities[0], 1), self.bibentity1_data['bib:title'] ) return
def test_get_list_inherited_entities(self): rdf_coll = install_annalist_named_coll("RDF_schema_defs") ann_coll = install_annalist_named_coll("Annalist_schema") testcoll = create_test_coll_inheriting("Annalist_schema") schema_list_ids = get_site_schema_lists_linked("testcoll") u = entitydata_list_type_url("testcoll", "Class", list_id=None, scope="all") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "Class") list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(schema_list_ids)) self.assertEqual(list_choices['field_value'], "Classes") # Entities entities = context_list_entities(r.context) self.assertEqual(len(entities), 27) field_entities = ( { ('Audio', 'Class', 'Audio clip' ) , ('Collection', 'Class', 'Data collection' ) , ('Default_type', 'Class', 'Default type' ) , ('Entity', 'Class', 'Entity' ) , ('EntityData', 'Class', 'EntityData' ) , ('EntityRoot', 'Class', 'Root entity' ) , ('Enum', 'Class', 'Enumerated type' ) , ('Field', 'Class', 'Field definition' ) , ('Field_group', 'Class', 'Field group' ) , ('Image', 'Class', 'Image' ) , ('List', 'Class', 'List definition' ) , ('Resource', 'Class', 'Resource' ) , ('Site', 'Class', 'Annalist site' ) , ('SiteData', 'Class', 'Site data' ) , ('Type', 'Class', 'Type definition' ) , ('Type_Data', 'Class', 'Type data' ) , ('Unknown_type', 'Class', 'Unknown type' ) , ('User', 'Class', 'User permissions' ) , ('View', 'Class', 'View definition' ) , ('Vocabulary', 'Class', 'Vocabulary namespace definition') , ('Boolean', 'Datatype', 'Boolean' ) , ('Identifier', 'Datatype', 'Identifier' ) , ('Longtext', 'Datatype', 'Multiline text' ) , ('Placement', 'Datatype', 'Field placement' ) , ('Richtext', 'Datatype', 'Rich text' ) , ('Slug', 'Datatype', 'Local entity reference' ) , ('Text', 'Datatype', 'Text' ) }) for f in field_entities: for eid in range(len(entities)): item_fields = context_list_item_fields(r.context, entities[eid]) if item_fields[0]['field_value'] == f[0]: for fid in range(3): item_field = item_fields[fid] check_context_list_field_value(self, item_field, f[fid]) break else: self.fail("Field %s not found in context"%f[0]) return
def _check_entity_list(self, type_id, expect_entities): u = entitydata_list_type_url("testcoll", type_id) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains(r, "<title>List entities - Collection testcoll</title>") # Test context self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], type_id) entities = context_list_entities(r.context) self.assertEqual(len(entities), len(expect_entities)) for eid in range(len(expect_entities)): self.assertEqual(entities[eid]['entity_type_id'], expect_entities[eid][0]) self.assertEqual(entities[eid]['entity_id'], expect_entities[eid][1]) return
def test_get_fields_list_search(self): u = entitydata_list_type_url( "testcoll", layout.FIELD_TYPEID, list_id="Field_list", scope="all", continuation_url="/xyzzy/", query_params={"search": "Coll_"} ) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") list_label = "Field definitions" list_title = "Field definitions - Collection testcoll" self.assertContains(r, "<title>%s</title>"%list_title, html=True) self.assertContains(r, '<h2 class="page-heading">%s</h2>'%list_label, html=True) # Test context self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], layout.FIELD_TYPEID) self.assertEqual(r.context['continuation_url'], "/xyzzy/") self.assertEqual(r.context['search_for'], "Coll_") list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(self.list_ids)) self.assertEqual(list_choices['field_value'], "Field_list") # Fields head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 4 cols.. self.assertEqual(len(head_fields[0]['row_field_descs']), 4) f0 = context_view_field(r.context, 0, 0) f1 = context_view_field(r.context, 0, 1) f2 = context_view_field(r.context, 0, 2) f3 = context_view_field(r.context, 0, 3) self.assertEqual(f0['field_id'], 'Entity_id') self.assertEqual(f1['field_id'], 'Field_render_type') self.assertEqual(f2['field_id'], 'Field_value_type') self.assertEqual(f3['field_id'], 'Entity_label') # Entities entities = context_list_entities(r.context) self.assertEqual(len(entities), 7) field_entities = ( { ( "Coll_comment", "Markdown", "annal:Richtext", "Collection metadata" ) , ( "Coll_default_list_id", "Showtext", "annal:Text", "Default list" ) , ( "Coll_default_view_entity", "Showtext", "annal:Text", "Default view entity" ) , ( "Coll_default_view_id", "Showtext", "annal:Text", "Default view" ) , ( "Coll_default_view_type", "Showtext", "annal:Text", "Default view type" ) , ( "Coll_parent", "Enum_choice_opt", "annal:Slug", "Parent" ) , ( "Coll_software_version", "Showtext", "annal:Text", "S/W version" ) }) check_field_list_context_fields(self, r, field_entities) return
def _check_entity_list(self, type_id, expect_entities): u = entitydata_list_type_url("testcoll", type_id) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains( r, "<title>List entities - Collection testcoll</title>") # Test context self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], type_id) entities = context_list_entities(r.context) self.assertEqual(len(entities), len(expect_entities)) for eid in range(len(expect_entities)): self.assertEqual(entities[eid]['entity_type_id'], expect_entities[eid][0]) self.assertEqual(entities[eid]['entity_id'], expect_entities[eid][1]) return
def test_get_default_all_scope_all_list(self): # List all entities in current collection and site-wide u = entitydata_list_all_url("testcoll", list_id="Default_list_all", scope="all", continuation_url="/xyzzy/") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains(r, "Collection testcoll") self.assertContains( r, '<h2 class="page-heading">List entities with type information</h2>', html=True) # Test context self.assertEqual( r.context['title'], "List entities with type information - Collection testcoll") self.assertEqual(r.context['heading'], "List entities with type information") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], None) list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(self.list_ids)) self.assertEqual(list_choices['field_value'], "Default_list_all") # Unbound field descriptions head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 3 cols.. self.assertEqual(len(head_fields[0].description['row_field_descs']), 3) f0 = context_view_field(r.context, 0, 0) f1 = context_view_field(r.context, 0, 1) f2 = context_view_field(r.context, 0, 2) self.assertEqual(f0.field_id, 'Entity_id') self.assertEqual(f1.field_id, 'Entity_type') self.assertEqual(f2.field_id, 'Entity_label') # Entities and bound fields entities = context_list_entities(r.context) if len(entities) != 213: for e in entities: log.debug("All entities: %s/%s" % (e['annal:type_id'], e['annal:id'])) self.assertEqual(len(entities), 226) # Will change with site data return
def test_list_all(self): # Only list things we can view/list u = entitydata_list_all_url("testcoll", list_id="Default_list_all") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context # Entities and bound fields entities = context_list_entities(r.context) self.assertEqual(len(entities), 2) entity_fields = ([ ('testtype', '_type', 'RecordType testtype/testtype'), ('entity1', 'testtype', 'Entity testcoll/testtype/entity1') ]) for eid in range(2): for fid in range(3): item_field_value = context_list_item_field_value( r.context, entities[eid], fid) self.assertEqual(item_field_value, entity_fields[eid][fid]) return
def test_get_types_scope_all_list(self): # List types in current collection and site-wide u = entitydata_list_type_url( "testcoll", "_type", list_id="Type_list", scope="all" ) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # log.info(r.content) #@@ list_label = "Entity types" list_title = "Entity types - Collection testcoll" self.assertContains(r, "<title>%s</title>"%list_title, html=True) self.assertContains(r, '<h2 class="page-heading">%s</h2>'%list_label, html=True) # Test context self.assertEqual(r.context['title'], list_title) self.assertEqual(r.context['heading'], list_label) self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "_type") # Fields head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 2 cols.. self.assertEqual(len(head_fields[0]['row_field_descs']), 2) f0 = context_view_field(r.context, 0, 0) f1 = context_view_field(r.context, 0, 1) # 1st field self.assertEqual(f0['field_id'], 'Entity_id') self.assertEqual(f0['field_name'], 'entity_id') # 2nd field self.assertEqual(f1['field_id'], 'Entity_label') self.assertEqual(f1['field_name'], 'Entity_label') # Entities entities = context_list_entities(r.context) listed_entities = { e['entity_id']: e for e in entities } #@@ self.assertIn('_initial_values', listed_entities) type_entities = get_site_types() | {"testtype", "testtype2"} self.assertEqual(set(listed_entities.keys()), type_entities) return
def test_get_default_all_scope_all_list(self): # List all entities in current collection and site-wide u = entitydata_list_all_url( "testcoll", list_id="Default_list_all", scope="all", continuation_url="/xyzzy/" ) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains(r, "Collection testcoll") self.assertContains(r, '<h2 class="page-heading">List entities with type information</h2>', html=True) # Test context self.assertEqual(r.context['title'], "List entities with type information - Collection testcoll") self.assertEqual(r.context['heading'], "List entities with type information") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "Default_type") list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(self.list_ids)) self.assertEqual(list_choices['field_value'], "Default_list_all") # Unbound field descriptions head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 3 cols.. self.assertEqual(len(head_fields[0]['row_field_descs']), 3) f0 = context_view_field(r.context, 0, 0) f1 = context_view_field(r.context, 0, 1) f2 = context_view_field(r.context, 0, 2) self.assertEqual(f0['field_id'], 'Entity_id') self.assertEqual(f1['field_id'], 'Entity_type') self.assertEqual(f2['field_id'], 'Entity_label') # Entities and bound fields entities = context_list_entities(r.context) if len(entities) != 217: for e in entities: log.debug("All entities: %s/%s"%(e['annal:type_id'], e['annal:id'])) self.assertEqual(len(entities), 224) # Will change with site data return
def test_list_field_alias(self): # List BibEntry fields in Default_list u = entitydata_list_type_url("testcoll", "BibEntry_type", list_id="Default_list") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # log.info(r.content) #@@ # Test context self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "BibEntry_type") self.assertEqual(r.context['list_choices']['field_value'], "Default_list") # Fields head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 2 cols.. self.assertEqual(len(head_fields[0]['row_field_descs']), 2) f0 = context_view_field(r.context, 0, 0) f1 = context_view_field(r.context, 0, 1) # 1st field self.assertEqual(f0['field_id'], 'Entity_id') self.assertEqual(f0['field_property_uri'], "annal:id") self.assertEqual(f0['field_value'], "") # 2nd field self.assertEqual(f1['field_id'], 'Entity_label') self.assertEqual(f1['field_property_uri'], "rdfs:label") self.assertEqual(f1['field_value'], "") # List entities (actually, just the one) entities = context_list_entities(r.context) self.assertEqual(len(entities), 1) self.assertEqual( context_list_item_field_value(r.context, entities[0], 0), "bibentity1" ) self.assertEqual( context_list_item_field_value(r.context, entities[0], 1), self.bibentity1_data['bib:title'] ) return
def test_get_default_all_scope_all_list(self): # List all entities in current collection and site-wiude # This repeats parts of the previous test but with scope='all' u = entitydata_list_all_url( "testcoll", list_id="Default_list_all", scope="all", continuation_url="/xyzzy/" ) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") list_label = "List entities with type information" list_title = "List entities with type information - Collection testcoll" self.assertContains(r, "<title>%s</title>"%list_title, html=True) self.assertContains(r, '<h2 class="page-heading">%s</h2>'%list_label, html=True) # Test context self.assertEqual(r.context['title'], list_title) self.assertEqual(r.context['heading'], list_label) self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "Default_type") list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(self.list_ids)) self.assertEqual(list_choices['field_value'], "Default_list_all") # Unbound field descriptions head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 3 cols.. self.assertEqual(len(head_fields[0]['row_field_descs']), 3) f0 = context_view_field(r.context, 0, 0) f1 = context_view_field(r.context, 0, 1) f2 = context_view_field(r.context, 0, 2) self.assertEqual(f0['field_id'], 'Entity_id') self.assertEqual(f1['field_id'], 'Entity_type') self.assertEqual(f2['field_id'], 'Entity_label') # Entities and bound fields entities = context_list_entities(r.context) self.assertEqual(len(entities), 164) # Will change with site data return
def test_get_default_all_list(self): u = entitydata_list_all_url("testcoll") + "?continuation_url=/xyzzy/" r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # self.assertContains(r, site_title("<title>%s</title>")) self.assertContains(r, "<h3>List entities with type information</h3>", html=True) self.assertMatch( r.content, r'<input.type="hidden".name="continuation_url".+value="/xyzzy/"/>') cont = uri_params({"continuation_url": u}) # rowdata = """ # <tr class="select-row"> # <td class="small-2 columns"><a href="%(base)s/c/testcoll/d/testtype/entity1/%(cont)s">entity1</a></td> # <td class="small-2 columns"><a href="%(base)s/c/testcoll/d/_type/testtype/%(cont)s">testtype</a></td> # <td class="small-8 columns">Entity testcoll/testtype/entity1</td> # <td class="select-row"> # <input type="checkbox" name="entity_select" value="testtype/entity1" /> # </td> # </tr> # """%({'base': TestBasePath, 'cont': cont}) rowdata = """ <div class="trow row select-row"> <div class="small-1 columns"> <input type="checkbox" class="select-box right" name="entity_select" value="testtype/entity1" /> </div> <div class="small-11 columns"> <div class="row"> <div class="small-3 columns"><a href="%(base)s/c/testcoll/d/testtype/entity1/%(cont)s">entity1</a></div> <div class="small-2 columns"><a href="/testsite/c/testcoll/d/_type/testtype/%(cont)s">testtype</a></div> <div class="small-7 columns"> Entity testcoll/testtype/entity1 </div> </div> </div> </div> """ % ({ 'base': TestBasePath, 'cont': cont }) # log.info(r.content) self.assertContains(r, rowdata, html=True) # Test context # self.assertEqual(r.context['title'], site_title()) self.assertEqual(r.context['title'], "Collection testcoll") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], None) list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(self.initial_list_ids)) self.assertEqual(list_choices['field_value'], "Default_list_all") self.assertEqual(r.context['continuation_url'], "/xyzzy/") # Unbound field descriptions self.assertEqual(len(r.context['fields']), 3) # 1st field self.assertEqual(r.context['fields'][0]['field_id'], 'Entity_id') self.assertEqual(r.context['fields'][0]['field_name'], 'entity_id') self.assertEqual(r.context['fields'][0]['field_label'], 'Id') self.assertEqual(r.context['fields'][0]['field_placeholder'], "(entity id)") self.assertEqual(r.context['fields'][0]['field_property_uri'], "annal:id") self.assertEqual(r.context['fields'][0]['field_render_type'], "EntityId") self.assertEqual(r.context['fields'][0]['field_placement'].field, "small-3 columns") self.assertEqual(r.context['fields'][0]['field_value_type'], "annal:Slug") self.assertEqual(r.context['fields'][0]['field_value'], "") self.assertEqual(r.context['fields'][0]['entity_type_id'], "") # 2nd field self.assertEqual(r.context['fields'][1]['field_id'], 'Entity_type') self.assertEqual(r.context['fields'][1]['field_name'], 'entity_type') self.assertEqual(r.context['fields'][1]['field_label'], 'Type') self.assertEqual(r.context['fields'][1]['field_placeholder'], "(type id)") self.assertEqual(r.context['fields'][1]['field_property_uri'], "annal:type_id") self.assertEqual(r.context['fields'][1]['field_render_type'], "EntityTypeId") self.assertEqual(r.context['fields'][1]['field_placement'].field, "small-2 columns") self.assertEqual(r.context['fields'][1]['field_value_type'], "annal:Slug") self.assertEqual(r.context['fields'][1]['field_value'], "") self.assertEqual(r.context['fields'][1]['entity_type_id'], "") # 3rd field self.assertEqual(r.context['fields'][2]['field_id'], 'Entity_label') self.assertEqual(r.context['fields'][2]['field_name'], 'Entity_label') self.assertEqual(r.context['fields'][2]['field_label'], 'Label') self.assertEqual(r.context['fields'][2]['field_placeholder'], "(label)") self.assertEqual(r.context['fields'][2]['field_property_uri'], "rdfs:label") self.assertEqual(r.context['fields'][2]['field_render_type'], "Text") self.assertEqual(r.context['fields'][2]['field_placement'].field, "small-7 columns") self.assertEqual(r.context['fields'][2]['field_value_type'], "annal:Text") self.assertEqual(r.context['fields'][2]['field_value'], "") self.assertEqual(r.context['fields'][2]['entity_type_id'], "") # Entities and bound fields entities = context_list_entities(r.context) self.assertEqual(len(entities), 6) entity_fields = ([{ 'entity_type_id': "_type", 'annal:id': "testtype", 'rdfs:label': "RecordType testcoll/testtype" }, { 'entity_type_id': "_type", 'annal:id': "testtype2", 'rdfs:label': "RecordType testcoll/testtype2" }, { 'entity_type_id': "testtype", 'annal:id': "entity1", 'rdfs:label': "Entity testcoll/testtype/entity1" }, { 'entity_type_id': "testtype", 'annal:id': "entity2", 'rdfs:label': "Entity testcoll/testtype/entity2" }, { 'entity_type_id': "testtype", 'annal:id': "entity3", 'rdfs:label': "Entity testcoll/testtype/entity3" }, { 'entity_type_id': "testtype2", 'annal:id': "entity4", 'rdfs:label': "Entity testcoll/testtype2/entity4" }]) field_keys = ('annal:id', 'entity_type_id', 'rdfs:label') for eid in range(6): for fid in range(3): item_field = context_list_item_fields(r.context, entities[eid])[fid] head_field = context_list_head_fields(r.context)[fid] # log.info("Item field: %r"%(item_field,)) # log.info("Head field: %r"%(head_field,)) # Check that row field descriptions match corresponding heading feld descriptions for fkey in ('field_id', 'field_name', 'field_label', 'field_property_uri', 'field_render_type', 'field_placement', 'field_value_type'): self.assertEqual(item_field[fkey], head_field[fkey]) # Check row field values fkey = field_keys[fid] self.assertEqual(item_field['field_value'], entity_fields[eid][fkey]) self.assertEqual(item_field['entity_type_id'], entity_fields[eid]['entity_type_id']) return
def test_get_fields_list_search(self): u = entitydata_list_type_url("testcoll", layout.FIELD_TYPEID, list_id="Field_list", scope="all", continuation_url="/xyzzy/", query_params={"search": "Bib_"}) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # self.assertContains(r, site_title("<title>%s</title>")) # self.assertContains(r, "<h3>List 'Field_list' of entities in collection 'testcoll'</h3>", html=True) # Test context self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], layout.FIELD_TYPEID) self.assertEqual(r.context['continuation_url'], "/xyzzy/") self.assertEqual(r.context['search_for'], "Bib_") list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(self.list_ids)) self.assertEqual(list_choices['field_value'], "Field_list") # Fields head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 4 cols.. self.assertEqual(len(head_fields[0].description['row_field_descs']), 4) f0 = context_view_field(r.context, 0, 0) f1 = context_view_field(r.context, 0, 1) f2 = context_view_field(r.context, 0, 2) f3 = context_view_field(r.context, 0, 3) self.assertEqual(f0.field_id, 'Entity_id') self.assertEqual(f1.field_id, 'Field_render_type') self.assertEqual(f2.field_id, 'Field_value_type') self.assertEqual(f3.field_id, 'Entity_label') # Entities entities = context_list_entities(r.context) self.assertEqual(len(entities), 36) field_entities = ({ ('Bib_address', "Text", "annal:Text", "Address"), ('Bib_authors', "Group_Seq", "bib:Authors", "Author(s)"), ('Bib_booktitle', "Text", "annal:Text", "Book title"), ('Bib_chapter', "Text", "annal:Text", "Chapter"), ('Bib_edition', "Text", "annal:Text", "Edition"), ('Bib_editors', "Group_Seq", "bib:Editors", "Editor(s)"), ('Bib_eprint', "Text", "annal:Text", "Bib_eprint"), ('Bib_howpublished', "Text", "annal:Text", "How published"), ('Bib_institution', "Text", "annal:Text", "Institution"), ('Bib_journal', "Group_Seq", "bib:Journal", "Journal"), ('Bib_month', "Text", "annal:Text", "Month"), ('Bib_number', "Text", "annal:Text", "Number"), ('Bib_organization', "Text", "annal:Text", "Organization"), ('Bib_pages', "Text", "annal:Text", "Pages"), ('Bib_publisher', "Text", "annal:Text", "Publisher"), ('Bib_school', "Text", "annal:Text", "School"), ('Bib_title', "Text", "annal:Text", "Title"), ('Bib_type', "Enum", "annal:EntityRef", "Type"), ('Bib_url', "Text", "annal:Text", "URL"), ('Bib_volume', "Text", "annal:Text", "Volume"), ('Bib_year', "Text", "annal:Text", "Year") }) for f in field_entities: for eid in range(len(entities)): item_fields = context_list_item_fields(r.context, entities[eid]) if item_fields[0]['field_value'] == f[0]: for fid in range(3): item_field = item_fields[fid] head_field = head_fields[0].description[ 'row_field_descs'][fid] for fkey in ('field_id', 'field_name', 'field_label', 'field_property_uri', 'field_render_type', 'field_placement', 'field_value_type'): self.assertEqual(item_field.description[fkey], head_field[fkey]) check_context_list_field_value(self, item_field, f[fid]) break else: self.fail("Field %s not found in context" % f[0]) return
def test_get_fields_list_search(self): u = entitydata_list_type_url( "testcoll", layout.FIELD_TYPEID, list_id="Field_list", scope="all", continuation_url="/xyzzy/", query_params={"search": "Bib_"} ) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # self.assertContains(r, site_title("<title>%s</title>")) # self.assertContains(r, "<h3>List 'Field_list' of entities in collection 'testcoll'</h3>", html=True) # Test context self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], layout.FIELD_TYPEID) self.assertEqual(r.context['continuation_url'], "/xyzzy/") self.assertEqual(r.context['search_for'], "Bib_") list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(self.list_ids)) self.assertEqual(list_choices['field_value'], "Field_list") # Fields head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 4 cols.. self.assertEqual(len(head_fields[0]['row_field_descs']), 4) f0 = context_view_field(r.context, 0, 0) f1 = context_view_field(r.context, 0, 1) f2 = context_view_field(r.context, 0, 2) f3 = context_view_field(r.context, 0, 3) self.assertEqual(f0['field_id'], 'Entity_id') self.assertEqual(f1['field_id'], 'Field_render_type') self.assertEqual(f2['field_id'], 'Field_value_type') self.assertEqual(f3['field_id'], 'Entity_label') # Entities entities = context_list_entities(r.context) self.assertEqual(len(entities), 36) field_entities = ( { ('Bib_address', "Text", "annal:Text", "Address") , ('Bib_authors', "Group_Seq", "bib:Authors", "Author(s)") , ('Bib_booktitle', "Text", "annal:Text", "Book title") , ('Bib_chapter', "Text", "annal:Text", "Chapter") , ('Bib_edition', "Text", "annal:Text", "Edition") , ('Bib_editors', "Group_Seq", "bib:Editors", "Editor(s)") , ('Bib_eprint', "Text", "annal:Text", "Bib_eprint") , ('Bib_howpublished', "Text", "annal:Text", "How published") , ('Bib_institution', "Text", "annal:Text", "Institution") , ('Bib_journal', "Group_Seq", "bib:Journal", "Journal") , ('Bib_month', "Text", "annal:Text", "Month") , ('Bib_number', "Text", "annal:Text", "Number") , ('Bib_organization', "Text", "annal:Text", "Organization") , ('Bib_pages', "Text", "annal:Text", "Pages") , ('Bib_publisher', "Text", "annal:Text", "Publisher") , ('Bib_school', "Text", "annal:Text", "School") , ('Bib_title', "Text", "annal:Text", "Title") , ('Bib_type', "Enum", "annal:Slug", "Type") , ('Bib_url', "Text", "annal:Text", "URL") , ('Bib_volume', "Text", "annal:Text", "Volume") , ('Bib_year', "Text", "annal:Text", "Year") }) for f in field_entities: for eid in range(len(entities)): item_fields = context_list_item_fields(r.context, entities[eid]) if item_fields[0]['field_value'] == f[0]: for fid in range(3): item_field = item_fields[fid] head_field = head_fields[0]['row_field_descs'][fid] for fkey in ( 'field_id', 'field_name', 'field_label', 'field_property_uri', 'field_render_type', 'field_placement', 'field_value_type'): self.assertEqual(item_field[fkey], head_field[fkey]) check_context_list_field_value(self, item_field, f[fid]) break else: self.fail("Field %s not found in context"%f[0]) return
def test_get_default_type_list(self): u = entitydata_list_type_url("testcoll", "testtype") + "?continuation_url=/xyzzy/" r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains( r, "<title>List entities - Collection testcoll</title>") self.assertContains(r, '<h2 class="page-heading">List entities</h2>', html=True) cont = uri_params({"continuation_url": u}) # cont = "" # log.info(r.content) tooltip1 = "" tooltip2 = "" rowdata = """ <div class="tbody row select-row"> <div class="small-1 columns"> <input type="checkbox" class="select-box right" name="entity_select" value="testtype/entity1" /> </div> <div class="small-11 columns"> <div class="row view-listrow"> <div class="view-value small-3 columns" %(tooltip1)s> <a href="%(base)s/c/testcoll/d/testtype/entity1/%(cont)s">entity1</a> </div> <div class="view-value small-9 columns" %(tooltip2)s> <span>Entity testcoll/testtype/entity1</span> </div> </div> </div> </div> """ % ({ 'base': TestBasePath, 'cont': cont, 'tooltip1': tooltip1, 'tooltip2': tooltip2 }) self.assertContains(r, rowdata, html=True) # Test context # self.assertEqual(r.context['title'], site_title()) self.assertEqual(r.context['title'], "List entities - Collection testcoll") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "testtype") list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(self.list_ids)) self.assertEqual(list_choices['field_value'], "Default_list") self.assertEqual(r.context['continuation_url'], "/xyzzy/") # Fields head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 2 cols.. self.assertEqual(len(head_fields[0]['row_field_descs']), 2) f0 = context_view_field(r.context, 0, 0) f1 = context_view_field(r.context, 0, 1) # 1st field self.assertEqual(f0['field_id'], 'Entity_id') self.assertEqual(f0['field_name'], 'entity_id') self.assertEqual(f0['field_label'], 'Id') self.assertEqual(f0['field_placeholder'], "(entity id)") self.assertEqual(f0['field_property_uri'], "annal:id") self.assertEqual(f0['field_render_type'], "EntityId") self.assertEqual(f0['field_value_mode'], "Value_direct") self.assertEqual(f0['field_value_type'], "annal:Slug") self.assertEqual(f0['field_placement'].field, "small-3 columns") self.assertEqual(f0['field_value'], "") # 2nd field self.assertEqual(f1['field_id'], 'Entity_label') self.assertEqual(f1['field_name'], 'Entity_label') self.assertEqual(f1['field_label'], 'Label') self.assertEqual(f1['field_placeholder'], "(label)") self.assertEqual(f1['field_property_uri'], "rdfs:label") self.assertEqual(f1['field_render_type'], "Text") self.assertEqual(f1['field_value_mode'], "Value_direct") self.assertEqual(f1['field_value_type'], "annal:Text") self.assertEqual(f1['field_placement'].field, "small-9 columns") self.assertEqual(f1['field_value'], "") # Entities entities = context_list_entities(r.context) self.assertEqual(len(entities), 3) field_val = ("entity%d", "Entity testcoll/testtype/entity%d") for eid in range(3): item_fields = context_list_item_fields(r.context, entities[eid]) for fid in range(2): item_field = item_fields[fid] head_field = head_fields[0]['row_field_descs'][fid] for fkey in ('field_id', 'field_name', 'field_label', 'field_property_uri', 'field_render_type', 'field_placement', 'field_value_type'): self.assertEqual(item_field[fkey], head_field[fkey]) self.assertEqual(item_field['field_value'], field_val[fid] % (eid + 1)) return
def test_get_default_all_list(self): u = entitydata_list_all_url("testcoll") + "?continuation_url=/xyzzy/" r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains( r, '<h2 class="page-heading">List entities with type information</h2>', html=True) self.assertMatch( r.content, r'<input.type="hidden".name="continuation_url".+value="/xyzzy/"/>') cont = uri_params({"continuation_url": u}) # cont = "" # print "@@ "+repr(r.context['fields'][0]['field_help']) # print "@@ "+repr(r.context['fields'][1]['field_help']) # print "@@ "+repr(r.context['fields'][2]['field_help']) tooltip1 = "" # 'title="%s"'%r.context['fields'][0]['field_help'] tooltip2 = "" # 'title="%s"'%r.context['fields'][1]['field_help'] tooltip3 = "" # 'title="%s"'%r.context['fields'][2]['field_help'] rowdata = """ <div class="tbody row select-row"> <div class="small-1 columns"> <input type="checkbox" class="select-box right" name="entity_select" value="testtype/entity1" /> </div> <div class="small-11 columns"> <div class="row view-listrow"> <div class="view-value small-3 columns" %(tooltip1)s> <a href="%(base)s/c/testcoll/d/testtype/entity1/%(cont)s">entity1</a> </div> <div class="view-value small-2 columns" %(tooltip2)s> <a href="/testsite/c/testcoll/d/_type/testtype/%(cont)s">RecordType testcoll/testtype</a> </div> <div class="view-value small-7 columns" %(tooltip3)s> <span>Entity testcoll/testtype/entity1</span> </div> </div> </div> </div> """ % ({ 'base': TestBasePath, 'cont': cont, 'tooltip1': tooltip1, 'tooltip2': tooltip2, 'tooltip3': tooltip3 }) # log.info(r.content) self.assertContains(r, rowdata, html=True) # Test context # self.assertEqual(r.context['title'], site_title()) self.assertEqual( r.context['title'], "List entities with type information - Collection testcoll") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "Default_type") list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(self.list_ids)) self.assertEqual(list_choices['field_value'], "Default_list_all") self.assertEqual(r.context['continuation_url'], "/xyzzy/") # Unbound field descriptions head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 3 cols.. self.assertEqual(len(head_fields[0]['row_field_descs']), 3) f0 = context_view_field(r.context, 0, 0) f1 = context_view_field(r.context, 0, 1) f2 = context_view_field(r.context, 0, 2) # 1st field self.assertEqual(f0['field_id'], 'Entity_id') self.assertEqual(f0['field_name'], 'entity_id') self.assertEqual(f0['field_label'], 'Id') self.assertEqual(f0['field_placeholder'], "(entity id)") self.assertEqual(f0['field_property_uri'], "annal:id") self.assertEqual(f0['field_render_type'], "EntityId") self.assertEqual(f0['field_value_mode'], "Value_direct") self.assertEqual(f0['field_value_type'], "annal:Slug") self.assertEqual(f0['field_placement'].field, "small-3 columns") self.assertEqual(f0['field_value'], "") self.assertEqual(f0['entity_type_id'], "") # 2nd field self.assertEqual(f1['field_id'], 'Entity_type') self.assertEqual(f1['field_name'], 'entity_type') self.assertEqual(f1['field_label'], 'Type') self.assertEqual(f1['field_placeholder'], "(type id)") self.assertEqual(f1['field_property_uri'], "annal:type_id") self.assertEqual(f1['field_render_type'], "EntityTypeId") self.assertEqual(f1['field_value_mode'], "Value_direct") self.assertEqual(f1['field_value_type'], "annal:Slug") self.assertEqual(f1['field_placement'].field, "small-2 columns") self.assertEqual(f1['field_value'], "") self.assertEqual(f1['entity_type_id'], "") # 3rd field self.assertEqual(f2['field_id'], 'Entity_label') self.assertEqual(f2['field_name'], 'Entity_label') self.assertEqual(f2['field_label'], 'Label') self.assertEqual(f2['field_placeholder'], "(label)") self.assertEqual(f2['field_property_uri'], "rdfs:label") self.assertEqual(f2['field_render_type'], "Text") self.assertEqual(f2['field_value_mode'], "Value_direct") self.assertEqual(f2['field_value_type'], "annal:Text") self.assertEqual(f2['field_placement'].field, "small-7 columns") self.assertEqual(f2['field_value'], "") self.assertEqual(f2['entity_type_id'], "") # Entities and bound fields entities = context_list_entities(r.context) self.assertEqual(len(entities), 6) entity_fields = ([{ 'entity_type_id': "_type", 'annal:id': "testtype", 'rdfs:label': "RecordType testcoll/testtype" }, { 'entity_type_id': "_type", 'annal:id': "testtype2", 'rdfs:label': "RecordType testcoll/testtype2" }, { 'entity_type_id': "testtype", 'annal:id': "entity1", 'rdfs:label': "Entity testcoll/testtype/entity1" }, { 'entity_type_id': "testtype", 'annal:id': "entity2", 'rdfs:label': "Entity testcoll/testtype/entity2" }, { 'entity_type_id': "testtype", 'annal:id': "entity3", 'rdfs:label': "Entity testcoll/testtype/entity3" }, { 'entity_type_id': "testtype2", 'annal:id': "entity4", 'rdfs:label': "Entity testcoll/testtype2/entity4" }]) field_keys = ('annal:id', 'entity_type_id', 'rdfs:label') for eid in range(6): item_fields = context_list_item_fields(r.context, entities[eid]) for fid in range(3): item_field = item_fields[fid] head_field = head_fields[0]['row_field_descs'][fid] # log.info("Item field: %r"%(item_field,)) # log.info("Head field: %r"%(head_field,)) # Check that row field descriptions match corresponding heading feld descriptions for fkey in ('field_id', 'field_name', 'field_label', 'field_property_uri', 'field_render_type', 'field_placement', 'field_value_type'): self.assertEqual(item_field[fkey], head_field[fkey]) # Check row field values fkey = field_keys[fid] self.assertEqual(item_field['field_value'], entity_fields[eid][fkey]) self.assertEqual(item_field['entity_type_id'], entity_fields[eid]['entity_type_id']) return
def test_get_default_type_list(self): u = entitydata_list_type_url("testcoll", "testtype") + "?continuation_url=/xyzzy/" r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # self.assertContains(r, site_title("<title>%s</title>")) self.assertContains(r, "<title>Collection testcoll</title>") self.assertContains(r, "<h3>List entities</h3>", html=True) cont = uri_params({"continuation_url": u}) # log.info(r.content) rowdata = """ <div class="trow row select-row"> <div class="small-1 columns"> <input type="checkbox" class="select-box right" name="entity_select" value="testtype/entity1" /> </div> <div class="small-11 columns"> <div class="row"> <div class="small-3 columns"><a href="%(base)s/c/testcoll/d/testtype/entity1/%(cont)s">entity1</a></div> <div class="small-9 columns"> Entity testcoll/testtype/entity1 </div> </div> </div> </div> """ % ({ 'base': TestBasePath, 'cont': cont }) self.assertContains(r, rowdata, html=True) # Test context # self.assertEqual(r.context['title'], site_title()) self.assertEqual(r.context['title'], "Collection testcoll") self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "testtype") list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(self.initial_list_ids)) self.assertEqual(list_choices['field_value'], "Default_list") self.assertEqual(r.context['continuation_url'], "/xyzzy/") # Fields self.assertEqual(len(r.context['fields']), 2) # 1st field self.assertEqual(r.context['fields'][0]['field_id'], 'Entity_id') self.assertEqual(r.context['fields'][0]['field_name'], 'entity_id') self.assertEqual(r.context['fields'][0]['field_label'], 'Id') self.assertEqual(r.context['fields'][0]['field_placeholder'], "(entity id)") self.assertEqual(r.context['fields'][0]['field_property_uri'], "annal:id") self.assertEqual(r.context['fields'][0]['field_render_type'], "EntityId") self.assertEqual(r.context['fields'][0]['field_placement'].field, "small-3 columns") self.assertEqual(r.context['fields'][0]['field_value_type'], "annal:Slug") self.assertEqual(r.context['fields'][0]['field_value'], "") # 2nd field self.assertEqual(r.context['fields'][1]['field_id'], 'Entity_label') self.assertEqual(r.context['fields'][1]['field_name'], 'Entity_label') self.assertEqual(r.context['fields'][1]['field_label'], 'Label') self.assertEqual(r.context['fields'][1]['field_placeholder'], "(label)") self.assertEqual(r.context['fields'][1]['field_property_uri'], "rdfs:label") self.assertEqual(r.context['fields'][1]['field_render_type'], "Text") self.assertEqual(r.context['fields'][1]['field_placement'].field, "small-9 columns") self.assertEqual(r.context['fields'][1]['field_value_type'], "annal:Text") self.assertEqual(r.context['fields'][1]['field_value'], "") # Entities entities = context_list_entities(r.context) self.assertEqual(len(entities), 3) field_val = ("entity%d", "Entity testcoll/testtype/entity%d") for eid in range(3): for fid in range(2): item_field = context_list_item_fields(r.context, entities[eid])[fid] head_field = context_list_head_fields(r.context)[fid] for fkey in ('field_id', 'field_name', 'field_label', 'field_property_uri', 'field_render_type', 'field_placement', 'field_value_type'): self.assertEqual(item_field[fkey], head_field[fkey]) self.assertEqual(item_field['field_value'], field_val[fid] % (eid + 1)) return
def test_get_default_all_list(self): # List all entities in current collection u = entitydata_list_all_url("testcoll", list_id="Default_list_all") + "?continuation_url=/xyzzy/" r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") list_label = "List entities with type information" list_title = "List entities with type information - Collection testcoll" self.assertContains(r, "<title>%s</title>"%list_title, html=True) self.assertContains(r, '<h2 class="page-heading">%s</h2>'%list_label, html=True) self.assertMatch(r.content, r'<input.type="hidden".name="continuation_url".+value="/xyzzy/"/>') # log.info(r.content) #@@ cont = uri_params({"continuation_url": u}) #@@ cont = "" tooltip1 = "" # 'title="%s"'%r.context['fields'][0]['field_help'] tooltip2 = "" # 'title="%s"'%r.context['fields'][1]['field_help'] tooltip3 = "" # 'title="%s"'%r.context['fields'][2]['field_help'] rowdata = """ <div class="tbody row select-row"> <div class="small-1 columns"> <input type="checkbox" class="select-box right" name="entity_select" value="testtype/entity1" /> </div> <div class="small-11 columns"> <div class="row view-listrow"> <div class="view-value small-3 columns" %(tooltip1)s> <a href="%(base)s/c/testcoll/d/testtype/entity1/%(cont)s">entity1</a> </div> <div class="view-value small-2 columns" %(tooltip2)s> <a href="/testsite/c/testcoll/d/_type/testtype/%(cont)s">RecordType testcoll/testtype</a> </div> <div class="view-value small-7 columns" %(tooltip3)s> <span>Entity testcoll/testtype/entity1</span> </div> </div> </div> </div> """%( { 'base': TestBasePath , 'cont': cont , 'tooltip1': tooltip1 , 'tooltip2': tooltip2 , 'tooltip3': tooltip3 } ) # log.info(r.content) # log.info(r.context["fields"]) # log.info(r.context["List_rows"]) self.assertContains(r, rowdata, html=True) # Test context self.assertEqual(r.context['title'], list_title) self.assertEqual(r.context['heading'], list_label) self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "Default_type") self.assertEqual(r.context['continuation_url'], "/xyzzy/") list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(self.list_ids)) self.assertEqual(list_choices['field_value'], "Default_list_all") # Unbound field descriptions head_fields = context_list_head_fields(r.context) self.assertEqual(len(head_fields), 1) # One row of 3 cols.. self.assertEqual(len(head_fields[0]['row_field_descs']), 3) f0 = context_view_field(r.context, 0, 0) f1 = context_view_field(r.context, 0, 1) f2 = context_view_field(r.context, 0, 2) self.assertEqual(f0['field_id'], 'Entity_id') self.assertEqual(f1['field_id'], 'Entity_type') self.assertEqual(f2['field_id'], 'Entity_label') # Entities and bound fields # log.info(entities) #@@ entities = context_list_entities(r.context) self.assertEqual(len(entities), 6) entity_fields = ( [ {'entity_type_id': "_type", 'annal:id': "testtype", 'rdfs:label': "RecordType testcoll/testtype"} , {'entity_type_id': "_type", 'annal:id': "testtype2", 'rdfs:label': "RecordType testcoll/testtype2"} , {'entity_type_id': "testtype", 'annal:id': "entity1", 'rdfs:label': "Entity testcoll/testtype/entity1"} , {'entity_type_id': "testtype", 'annal:id': "entity2", 'rdfs:label': "Entity testcoll/testtype/entity2"} , {'entity_type_id': "testtype", 'annal:id': "entity3", 'rdfs:label': "Entity testcoll/testtype/entity3"} , {'entity_type_id': "testtype2", 'annal:id': "entity4", 'rdfs:label': "Entity testcoll/testtype2/entity4"} ]) field_keys = ('annal:id', 'entity_type_id', 'rdfs:label') for eid in range(6): item_fields = context_list_item_fields(r.context, entities[eid]) for fid in range(3): item_field = item_fields[fid] head_field = head_fields[0]['row_field_descs'][fid] # Check that row field descriptions match corresponding heading feld descriptions for fkey in ( 'field_id', 'field_name', 'field_label', 'field_property_uri', 'field_render_type', 'field_placement', 'field_value_type'): self.assertEqual(item_field[fkey], head_field[fkey]) # Check row field values fkey = field_keys[fid] self.assertEqual(item_field['field_value'], entity_fields[eid][fkey]) self.assertEqual(item_field['entity_type_id'], entity_fields[eid]['entity_type_id']) return