Example #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
 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
Example #3
0
 def test_select_subtype1_fields(self):
     ref_view = self._create_ref_type_view(view_id="Test_ref_type1_view",
                                           record_type="test:testtypes")
     ref_field = self._create_ref_type_field(entity_type="test:testtype1")
     u = entitydata_edit_url("new",
                             "testcoll",
                             "ref_type",
                             view_id="Test_ref_type1_view")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # Check render context
     self.assertEqual(r.context['coll_id'], "testcoll")
     self.assertEqual(r.context['type_id'], "ref_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)
     self.assertEqual(f0['field_id'], "Entity_id")
     self.assertEqual(f1['field_id'], "Test_ref_type_field")
     baselabel = "Entity testcoll/"
     baseuri = TestBasePath + "/c/testcoll/d/%s/"
     ref_options = ([
         FieldChoice(opt, label=baselabel + opt, link=baseuri % opt)
         for opt in ['testtype1/entity1']
     ])
     self.assertEqual(f1['options'], ref_options)
     return
Example #4
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
 def test_select_subtype1_fields(self):
     ref_view  = self._create_ref_type_view(view_id="Test_ref_type1_view", record_type="test:testtypes")
     ref_field = self._create_ref_type_field(entity_type="test:testtype1")
     u = entitydata_edit_url(
         "new", "testcoll", "ref_type", view_id="Test_ref_type1_view"
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # Check render context
     self.assertEqual(r.context['coll_id'],          "testcoll")
     self.assertEqual(r.context['type_id'],          "ref_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)
     self.assertEqual(f0['field_id'], "Entity_id")
     self.assertEqual(f1['field_id'], "Test_ref_type_field")
     baselabel = "Entity testcoll/"
     baseuri   = TestBasePath+"/c/testcoll/d/%s/"
     ref_options = (
         [ FieldChoice(opt, label=baselabel+opt, link=baseuri%opt)
           for opt in ['testtype1/entity1']
         ])
     self.assertEqual(f1['options'], ref_options)
     return
 def test_select_notype_fields(self):
     ref_view = self._create_ref_type_view(view_id="Test_ref_notype_view",
                                           view_entity_type="test:notypes")
     ref_field = self._create_ref_type_field(
         field_entity_type="test:sometypes")
     u = entitydata_edit_url("new",
                             "testcoll",
                             "ref_type",
                             view_id="Test_ref_notype_view")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # Check render context
     self.assertEqual(r.context['coll_id'], "testcoll")
     self.assertEqual(r.context['type_id'], "ref_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].description['row_field_descs']), 2)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     self.assertEqual(f0.field_id, "Entity_id")
     self.assertEqual(f1.field_id, "Test_ref_type_field")
     baselabel = "Entity testcoll/"
     baseuri = TestBasePath + "/c/testcoll/d/%s/"
     ref_options = []
     self.assertEqual(f1['options'], ref_options)
     return
 def test_list_field_alias(self):
     # List BibEntry fields in Default_list
     u = entitydata_list_type_url("testcoll", "BibEntry_type", list_id="Default_list")
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # log.info(r.content) #@@
     # Test context
     self.assertEqual(r.context['coll_id'],  "testcoll")
     self.assertEqual(r.context['type_id'],  "BibEntry_type")
     self.assertEqual(r.context['list_choices']['field_value'], "Default_list")
     # Fields
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 2)
     # 1st field
     self.assertEqual(head_fields[0]['field_id'], 'Entity_id')
     self.assertEqual(head_fields[0]['field_property_uri'], "annal:id")
     self.assertEqual(head_fields[0]['field_value'], "")
     # 2nd field
     self.assertEqual(head_fields[1]['field_id'], 'Entity_label')
     self.assertEqual(head_fields[1]['field_property_uri'], "rdfs:label")
     self.assertEqual(head_fields[1]['field_value'], "")
     # List entities (actually, just the one)
     entities = context_list_entities(r.context)
     self.assertEqual(len(entities), 1)
     self.assertEqual(
         context_list_item_field_value(r.context, entities[0], 0), 
         "bibentity1"
         )
     self.assertEqual(
         context_list_item_field_value(r.context, entities[0], 1), 
         self.bibentity1_data['bib:title']
         )
     return
 def test_get_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
Example #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
    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
Example #12
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
Example #14
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
Example #15
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
Example #16
0
 def test_get_fields_list_no_continuation(self):
     u = entitydata_list_type_url("testcoll",
                                  layout.FIELD_TYPEID,
                                  list_id="Field_list",
                                  scope="all",
                                  query_params={"foo": "bar"})
     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)
     curi = continuation_params_url(u)
     cont = uri_params({"continuation_url": curi})
     tooltip1 = ""
     tooltip2 = ""
     tooltip3 = ""
     tooltip4 = ""
     rowdata1 = """
         <div class="tbody row select-row">
           <div class="small-1 columns">
             <input type="checkbox" class="select-box right" name="entity_select"
                    value="%(field_typeid)s/Bib_address" />
           </div>
           <div class="small-11 columns">
             <div class="row view-listrow">
               <div class="view-value small-4 medium-3 columns" %(tooltip1)s>
                 <a href="%(base)s/c/testcoll/d/%(field_typeid)s/Bib_address/%(cont)s">Bib_address</a>
               </div>
               <div class="view-value small-4 medium-3 columns" %(tooltip2)s>
                 <a href="%(base)s/c/testcoll/d/_enum_render_type/Text/%(cont)s">Short text</a>
               </div>
               <div class="view-value small-12 medium-3 columns show-for-medium-up" %(tooltip3)s>
                 <span>annal:Text</span>
               </div>
               <div class="view-value small-4 medium-3 columns" %(tooltip4)s>
                 <span>Address</span>
               </div>
             </div>
           </div>
         </div>
         """ % ({
         'base': TestBasePath,
         'cont': cont,
         'tooltip1': tooltip1,
         'tooltip2': tooltip2,
         'tooltip3': tooltip3,
         'tooltip4': tooltip4,
         'field_typeid': layout.FIELD_TYPEID
     })
     # log.info("*** r.content: "+r.content)
     self.assertContains(r, rowdata1, 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'], "")
     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)
     return
 def test_get_fields_list_no_continuation(self):
     u = entitydata_list_type_url(
         "testcoll", layout.FIELD_TYPEID, list_id="Field_list", scope="all",
         query_params={"foo": "bar"}
         )
     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)
     curi     = continuation_params_url(u)
     cont     = uri_params({"continuation_url": curi})
     tooltip1 = ""
     tooltip2 = ""
     tooltip3 = ""
     tooltip4 = ""
     rowdata1 = """
         <div class="tbody row select-row">
           <div class="small-1 columns">
             <input type="checkbox" class="select-box right" name="entity_select"
                    value="%(field_typeid)s/Bib_address" />
           </div>
           <div class="small-11 columns">
             <div class="row view-listrow">
               <div class="view-value small-4 medium-3 columns" %(tooltip1)s>
                 <a href="%(base)s/c/testcoll/d/%(field_typeid)s/Bib_address/%(cont)s">Bib_address</a>
               </div>
               <div class="view-value small-4 medium-3 columns" %(tooltip2)s>
                 <a href="%(base)s/c/testcoll/d/Enum_render_type/Text/%(cont)s">Short text</a>
               </div>
               <div class="view-value small-12 medium-3 columns show-for-medium-up" %(tooltip3)s>
                 <span>annal:Text</span>
               </div>
               <div class="view-value small-4 medium-3 columns" %(tooltip4)s>
                 <span>Address</span>
               </div>
             </div>
           </div>
         </div>
         """%(
             { 'base':           TestBasePath
             , 'cont':           cont
             , 'tooltip1':       tooltip1
             , 'tooltip2':       tooltip2
             , 'tooltip3':       tooltip3
             , 'tooltip4':       tooltip4
             , 'field_typeid':   layout.FIELD_TYPEID
             }
         )
     # log.info("*** r.content: "+r.content)
     self.assertContains(r, rowdata1, 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'], "")
     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)
     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_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_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
Example #22
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_fields_list_no_continuation(self):
     u = entitydata_list_type_url(
         "testcoll", layout.FIELD_TYPEID, list_id="Field_list", scope="all",
         query_params={"foo": "bar"}
         )
     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)
     curi = continuation_params_url(u)
     field_params = (
         { 'base':           TestBasePath
         , 'cont':           uri_params({"continuation_url": curi})
         , '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']
         , 'tooltip4':       "" # 'title="%s"'%r.context['fields'][3]['field_help']
         , 'field_typeid':   layout.FIELD_TYPEID
         })
     rowdata1 = """
         <div class="tbody row select-row">
           <div class="small-1 columns">
             <input type="checkbox" class="select-box right" name="entity_select"
                    value="%(field_typeid)s/Coll_comment" />
           </div>
           <div class="small-11 columns">
             <div class="view-listrow row">
               <div class="view-value small-4 medium-3 columns" %(tooltip1)s>
                 <a href="%(base)s/c/testcoll/d/%(field_typeid)s/Coll_comment/%(cont)s">Coll_comment</a>
               </div>
               <div class="view-value small-4 medium-3 columns" %(tooltip2)s>
                 <a href="%(base)s/c/testcoll/d/Enum_render_type/Markdown/%(cont)s">
                   Markdown rich text
                 </a>
               </div>
               <div class="view-value small-12 medium-3 columns show-for-medium-up" %(tooltip3)s>
                 <span>annal:Richtext</span>
               </div>
               <div class="view-value small-4 medium-3 columns" %(tooltip4)s>
                 <span>Collection metadata</span>
               </div>
             </div>
           </div>
         </div>
         """%field_params
     rowdata2 = """
         <div class="tbody row select-row">
           <div class="small-1 columns">
             <input type="checkbox" class="select-box right" name="entity_select"
                    value="%(field_typeid)s/Coll_parent" />
           </div>
           <div class="small-11 columns">
             <div class="view-listrow row">
               <div class="view-value small-4 medium-3 columns" %(tooltip1)s>
                 <a href="%(base)s/c/testcoll/d/%(field_typeid)s/Coll_parent/%(cont)s">Coll_parent</a>
               </div>
               <div class="view-value small-4 medium-3 columns" %(tooltip2)s>
                 <a href="%(base)s/c/testcoll/d/Enum_render_type/Enum_choice_opt/%(cont)s">Optional entity choice</a>
               </div>
               <div class="view-value small-12 medium-3 columns show-for-medium-up" %(tooltip3)s>
                 <span>annal:Slug</span>
               </div>
               <div class="view-value small-4 medium-3 columns" %(tooltip4)s>
                 <span>Parent</span>
               </div>
             </div>
           </div>
         </div>
         """%field_params
     rowdata3 = """
         <div class="tbody row select-row">
           <div class="small-1 columns">
             <input type="checkbox" class="select-box right" name="entity_select"
                    value="%(field_typeid)s/Coll_software_version" />
           </div>
           <div class="small-11 columns">
             <div class="view-listrow row">
               <div class="view-value small-4 medium-3 columns" %(tooltip1)s>
                 <a href="%(base)s/c/testcoll/d/%(field_typeid)s/Coll_software_version/%(cont)s">Coll_software_version</a>
               </div>
               <div class="view-value small-4 medium-3 columns" %(tooltip2)s>
                 <a href="%(base)s/c/testcoll/d/Enum_render_type/Showtext/%(cont)s">Display text</a>
               </div>
               <div class="view-value small-12 medium-3 columns show-for-medium-up" %(tooltip3)s>
                 <span>annal:Text</span>
               </div>
               <div class="view-value small-4 medium-3 columns" %(tooltip4)s>
                 <span>S/W version</span>
               </div>
             </div>
           </div>
         </div>
         """%field_params
     # log.info("*** r.content: "+r.content) #@@
     self.assertContains(r, rowdata1, html=True)
     self.assertContains(r, rowdata2, html=True)
     self.assertContains(r, rowdata3, 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'], "")
     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)
     return