def test_post_view_no_type(self): # Redisplay list with entries matching search string f = entitylist_form_data("list_all", list_id="Type_list") u = entitydata_list_all_url("testcoll", list_id="Default_list") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + entitydata_list_all_url("testcoll", list_id="Type_list") c = continuation_url_param(collection_edit_url("testcoll")) self.assertIn(v, r['location']) self.assertNotIn("continuation_url", r['location']) return
def test_post_delete_all_entity(self): f = entitylist_form_data("delete", entities=["testtype/entity1"]) u = entitydata_list_all_url("testcoll") r = self.client.post(u, f) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains(r, "<h3>%s</h3>"%message.CONFIRM_REQUESTED_ACTION) # print "**********" # print r.content # print "**********" msg_text = make_message(message.REMOVE_ENTITY_DATA, type_id="testtype", id="entity1" ) self.assertContains(r, msg_text + ": " + message.ARE_YOU_SURE) self.assertContains(r, message.CONFIRM_OR_CANCEL) self.assertContains(r, '<input type="hidden" name="confirmed_action" value="/testsite/c/testcoll/d/testtype/!delete_confirmed"/>', html=True ) self.assertEqual(r.context['action_description'], msg_text) self.assertEqual(r.context['confirmed_action'], '/testsite/c/testcoll/d/testtype/!delete_confirmed') self.assertEqual(r.context['action_params'], confirm_delete_params(button_id="entity_delete", entity_id="entity1", type_id=None) ) self.assertEqual(r.context['cancel_action'], '/testsite/c/testcoll/d/') return
def test_get_view(self): r = self.client.get(self.view_url) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") self.assertEqual(r['location'], TestHostUri + entitydata_list_all_url(coll_id="coll1")) return
def test_post_delete_all_entity(self): f = entitylist_form_data("delete", entities=["testtype/entity1"]) u = entitydata_list_all_url("testcoll") r = self.client.post(u, f) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains(r, "<h3>Confirm requested action</h3>") # print "**********" # print r.content # print "**********" self.assertContains( r, "Remove record entity1 of type testtype in collection testcoll: Are you sure?" ) self.assertContains( r, 'Click "Confirm" to continue, or "Cancel" to abort operation') self.assertContains( r, '<input type="hidden" name="confirmed_action" value="/testsite/c/testcoll/d/testtype/!delete_confirmed"/>', html=True) self.assertEqual( r.context['action_description'], 'Remove record entity1 of type testtype in collection testcoll') self.assertEqual(r.context['confirmed_action'], '/testsite/c/testcoll/d/testtype/!delete_confirmed') self.assertEqual( r.context['action_params'], confirm_delete_params(button_id="entity_delete", entity_id="entity1", type_id=None)) self.assertEqual(r.context['cancel_action'], '/testsite/c/testcoll/d/') return
def test_post_edit_all_entity(self): f = entitylist_form_data("edit", entities=["testtype/entity1"]) u = entitydata_list_all_url("testcoll") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + entitydata_edit_url( "edit", "testcoll", "testtype", "entity1", view_id="Default_view") self.assertIn(v, r['location']) return
def test_get_view_no_collection(self): u = collection_view_url(coll_id="no_collection") r = self.client.get(u) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") u1 = TestHostUri + entitydata_list_all_url(coll_id="no_collection") self.assertEqual(r['location'], u1) r1 = self.client.get(u1) self.assertEqual(r1.status_code, 404) self.assertEqual(r1.reason_phrase, "Not found") return
def test_post_customize(self): f = entitylist_form_data("customize", continuation_url="/xyzxy/") u = entitydata_list_all_url("testcoll") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + collection_edit_url("testcoll") c = continuation_url_param(u, continuation_url_param("/xyzxy/")) self.assertIn(v, r['location']) self.assertIn(c, r['location']) return
def test_post_delete_type_not_exists(self): f = entitylist_form_data("delete", entities=["_type/sitetype"]) u = entitydata_list_all_url("testcoll", list_id="Type_list") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") l = r['location'] self.assertIn(u, l) self.assertIn("error_head=Problem%20with%20input", l) # Absent entity assumed to be site level self.assertIn("error_message=Cannot%20remove%20site%20built-in%20entity%20sitetype", l) return
def test_post_edit_all_entity(self): f = entitylist_form_data("edit", entities=[layout.FIELD_TYPEID+"/field1"]) u = entitydata_list_all_url("testcoll", list_id="Field_list") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + entitydata_edit_url( "edit", "testcoll", layout.FIELD_TYPEID, "field1", view_id="Field_view" ) c = continuation_url_param(u) self.assertIn(v, r['location']) self.assertIn(c, r['location']) return
def test_post_new_all_entity(self): # Also tests continuation_url parameter handling #@@ s = site_view_url() s = collection_view_url(coll_id="testcoll") f = entitylist_form_data("new", list_id="Field_list", continuation_url=s) u = entitydata_list_all_url("testcoll", list_id="Field_list") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + entitydata_edit_url( "new", "testcoll", layout.FIELD_TYPEID, view_id="Field_view" ) c = continuation_url_param(u, continuation_url_param(s)) self.assertIn(v, r['location']) self.assertIn(c, r['location']) 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_post_confirmed_remove_entity_from_search(self): t = EntityData.create(self.testdata, "deleteentity", entitydata_create_values("deleteentity")) self.assertTrue(EntityData.exists(self.testdata, "deleteentity")) # Submit positive confirmation u = entitydata_delete_confirm_url("testcoll", "testtype") f = entitydata_delete_confirm_form_data("deleteentity", search="testcoll") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") self.assertMatch(r['location'], "^"+TestHostUri+ entitydata_list_all_url("testcoll") ) self.assertMatch(r['location'], r"info_head=.*&info_message=.*deleteentity.*testcoll.*$" ) self.assertIn("search=testcoll", r['location']) # Confirm deletion self.assertFalse(EntityData.exists(self.testcoll, "deleteentity")) 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_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_post_confirmed_remove_entity_from_search(self): t = EntityData.create(self.testdata, "deleteentity", entitydata_create_values("deleteentity")) self.assertTrue(EntityData.exists(self.testdata, "deleteentity")) # Submit positive confirmation u = entitydata_delete_confirm_url("testcoll", "testtype") f = entitydata_delete_confirm_form_data("deleteentity", search="testcoll") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") self.assertMatch(r['location'], "^"+TestHostUri+ entitydata_list_all_url("testcoll") ) self.assertMatch(r['location'], r"info_head=.*$" ) self.assertMatch(r['location'], r"info_message=.*deleteentity.*testcoll.*$" ) self.assertIn("search=testcoll", r['location']) # Confirm deletion self.assertFalse(EntityData.exists(self.testcoll, "deleteentity")) 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
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_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