test/unittest_schema.py
branchstable
changeset 6861 9d4e11d6e783
parent 6796 e70ca9abfc51
child 6873 2db631a3f205
equal deleted inserted replaced
6860:a0dbf6135c72 6861:9d4e11d6e783
    72     ('Personne prenom String'),
    72     ('Personne prenom String'),
    73     ('Personne sexe String'),
    73     ('Personne sexe String'),
    74     ('Personne tel Int'),
    74     ('Personne tel Int'),
    75     ('Personne fax Int'),
    75     ('Personne fax Int'),
    76     ('Personne datenaiss Date'),
    76     ('Personne datenaiss Date'),
    77     ('Personne TEST Boolean'),
       
    78     ('Personne promo String'),
    77     ('Personne promo String'),
    79     # real relations
    78     # real relations
    80     ('Personne  travaille Societe'),
    79     ('Personne  travaille Societe'),
    81     ('Personne  evaluee   Note'),
    80     ('Personne  evaluee   Note'),
    82     ('Societe evaluee   Note'),
    81     ('Societe evaluee   Note'),
    83     ('Personne  concerne  Affaire'),
    82     ('Personne  concerne  Affaire'),
    84     ('Personne  concerne  Societe'),
    83     ('Personne  concerne  Societe'),
    85     ('Affaire Concerne  Societe'),
    84     ('Affaire concerne  Societe'),
    86     )
    85     )
    87 done = {}
    86 done = {}
    88 for rel in RELS:
    87 for rel in RELS:
    89     _from, _type, _to = rel.split()
    88     _from, _type, _to = rel.split()
    90     if not _type.lower() in done:
    89     if not _type.lower() in done:
   112 
   111 
   113     def test_normalize(self):
   112     def test_normalize(self):
   114         """test that entities, relations and attributes name are normalized
   113         """test that entities, relations and attributes name are normalized
   115         """
   114         """
   116         self.assertEqual(esociete.type, 'Societe')
   115         self.assertEqual(esociete.type, 'Societe')
   117         self.assertEqual(schema.has_relation('TEST'), 0)
       
   118         self.assertEqual(schema.has_relation('test'), 1)
   116         self.assertEqual(schema.has_relation('test'), 1)
   119         self.assertEqual(eperson.subjrels['test'].type, 'test')
   117         self.assertEqual(eperson.subjrels['test'].type, 'test')
   120         self.assertEqual(schema.has_relation('Concerne'), 0)
       
   121         self.assertEqual(schema.has_relation('concerne'), 1)
   118         self.assertEqual(schema.has_relation('concerne'), 1)
   122         self.assertEqual(schema.rschema('concerne').type, 'concerne')
   119         self.assertEqual(schema.rschema('concerne').type, 'concerne')
   123 
   120 
   124     def test_entity_perms(self):
   121     def test_entity_perms(self):
   125         self.assertEqual(eperson.get_groups('read'), set(('managers', 'users', 'guests')))
   122         self.assertEqual(eperson.get_groups('read'), set(('managers', 'users', 'guests')))
   269         self.assertEqual(aschema.get_groups('update'),
   266         self.assertEqual(aschema.get_groups('update'),
   270                           set(('managers',)))
   267                           set(('managers',)))
   271         self.assertEqual([x.expression for x in aschema.get_rqlexprs('update')],
   268         self.assertEqual([x.expression for x in aschema.get_rqlexprs('update')],
   272                           ['U has_update_permission X'])
   269                           ['U has_update_permission X'])
   273 
   270 
   274 class BadSchemaRQLExprTC(TestCase):
   271 class BadSchemaTC(TestCase):
   275     def setUp(self):
   272     def setUp(self):
   276         self.loader = CubicWebSchemaLoader()
   273         self.loader = CubicWebSchemaLoader()
   277         self.loader.defined = {}
   274         self.loader.defined = {}
   278         self.loader.loaded_files = []
   275         self.loader.loaded_files = []
   279         self.loader.post_build_callbacks = []
   276         self.loader.post_build_callbacks = []
   283         self.loader.handle_file(join(DATADIR, schemafile))
   280         self.loader.handle_file(join(DATADIR, schemafile))
   284         with self.assertRaises(BadSchemaDefinition) as cm:
   281         with self.assertRaises(BadSchemaDefinition) as cm:
   285             self.loader._build_schema('toto', False)
   282             self.loader._build_schema('toto', False)
   286         self.assertEqual(str(cm.exception), msg)
   283         self.assertEqual(str(cm.exception), msg)
   287 
   284 
       
   285     def test_lowered_etype(self):
       
   286         self._test('lowered_etype.py',
       
   287                    "'my_etype' is not a valid name for an entity type. It should "
       
   288                    "start with an upper cased letter and be followed by at least "
       
   289                    "a lower cased letter")
       
   290 
       
   291     def test_uppered_rtype(self):
       
   292         self._test('uppered_rtype.py',
       
   293                    "'ARelation' is not a valid name for a relation type. It should be lower cased")
       
   294 
   288     def test_rrqlexpr_on_etype(self):
   295     def test_rrqlexpr_on_etype(self):
   289         self._test('rrqlexpr_on_eetype.py',
   296         self._test('rrqlexpr_on_eetype.py',
   290                    "can't use RRQLExpression on ToTo, use an ERQLExpression")
   297                    "can't use RRQLExpression on ToTo, use an ERQLExpression")
   291 
   298 
   292     def test_erqlexpr_on_rtype(self):
   299     def test_erqlexpr_on_rtype(self):