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): |