Пример #1
0
 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
Пример #2
0
 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
Пример #3
0
 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
Пример #6
0
 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
Пример #7
0
 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
Пример #8
0
 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
Пример #9
0
 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
Пример #10
0
 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
Пример #11
0
 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
Пример #12
0
 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
Пример #13
0
 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
Пример #14
0
 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
Пример #15
0
 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
Пример #16
0
 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
Пример #17
0
 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
Пример #19
0
    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