Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
0
 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
Esempio n. 4
0
 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
Esempio n. 5
0
 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
Esempio n. 8
0
 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
Esempio n. 9
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
Esempio n. 10
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
    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
Esempio n. 13
0
 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
Esempio n. 15
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
Esempio n. 16
0
 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
Esempio n. 20
0
 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