cubicweb/test/unittest_schema.py
changeset 12597 7882ad333954
parent 12539 10159a3d1d72
equal deleted inserted replaced
12596:48ea46ad80da 12597:7882ad333954
   454     def test_comparison(self):
   454     def test_comparison(self):
   455         self.assertEqual(ERQLExpression('X is CWUser', 'X', 0),
   455         self.assertEqual(ERQLExpression('X is CWUser', 'X', 0),
   456                          ERQLExpression('X is CWUser', 'X', 0))
   456                          ERQLExpression('X is CWUser', 'X', 0))
   457         self.assertNotEqual(ERQLExpression('X is CWUser', 'X', 0),
   457         self.assertNotEqual(ERQLExpression('X is CWUser', 'X', 0),
   458                             ERQLExpression('X is CWGroup', 'X', 0))
   458                             ERQLExpression('X is CWGroup', 'X', 0))
       
   459 
       
   460     def test_has_update_permission(self):
       
   461         expr = ERQLExpression('P use_email X, U has_update_permission P')
       
   462         rql, found, keyarg = expr.transform_has_permission()
       
   463         self.assertEqual(rql, 'Any X,P WHERE P use_email X, X eid %(x)s')
       
   464         self.assertEqual(found, [(u'update', 1)])
       
   465         self.assertEqual(keyarg, None)
       
   466 
       
   467     def test_expression(self):
       
   468         expr = ERQLExpression('U use_email X')
       
   469         rql, found, keyarg = expr.transform_has_permission()
       
   470         self.assertEqual(rql, 'Any X WHERE EXISTS(U use_email X, X eid %(x)s, U eid %(u)s)')
       
   471         self.assertEqual(found, None)
       
   472         self.assertEqual(keyarg, None)
   459 
   473 
   460 
   474 
   461 class GuessRrqlExprMainVarsTC(TestCase):
   475 class GuessRrqlExprMainVarsTC(TestCase):
   462     def test_exists(self):
   476     def test_exists(self):
   463         mainvars = guess_rrqlexpr_mainvars(normalize_expression(
   477         mainvars = guess_rrqlexpr_mainvars(normalize_expression(
   573                 self.assertEqual(self.composites[etype],
   587                 self.assertEqual(self.composites[etype],
   574                                  sorted([(r.rtype.type, r.subject.type, r.object.type, role)
   588                                  sorted([(r.rtype.type, r.subject.type, r.object.type, role)
   575                                          for r, role in schema[etype].composite_rdef_roles]))
   589                                          for r, role in schema[etype].composite_rdef_roles]))
   576 
   590 
   577 
   591 
   578 class CWShemaTC(CubicWebTC):
       
   579 
       
   580     def test_transform_has_permission_match(self):
       
   581         with self.admin_access.repo_cnx() as cnx:
       
   582             eschema = cnx.vreg.schema['EmailAddress']
       
   583             rql_exprs = eschema.get_rqlexprs('update')
       
   584             self.assertEqual(len(rql_exprs), 1)
       
   585             self.assertEqual(rql_exprs[0].expression,
       
   586                              'P use_email X, U has_update_permission P')
       
   587             rql, found, keyarg = rql_exprs[0].transform_has_permission()
       
   588             self.assertEqual(rql, 'Any X,P WHERE P use_email X, X eid %(x)s')
       
   589             self.assertEqual(found, [(u'update', 1)])
       
   590             self.assertEqual(keyarg, None)
       
   591 
       
   592     def test_transform_has_permission_no_match(self):
       
   593         with self.admin_access.repo_cnx() as cnx:
       
   594             eschema = cnx.vreg.schema['EmailAddress']
       
   595             rql_exprs = eschema.get_rqlexprs('read')
       
   596             self.assertEqual(len(rql_exprs), 1)
       
   597             self.assertEqual(rql_exprs[0].expression,
       
   598                              'U use_email X')
       
   599             rql, found, keyarg = rql_exprs[0].transform_has_permission()
       
   600             self.assertEqual(rql, 'Any X WHERE EXISTS(U use_email X, X eid %(x)s, U eid %(u)s)')
       
   601             self.assertEqual(found, None)
       
   602             self.assertEqual(keyarg, None)
       
   603 
       
   604 
       
   605 if __name__ == '__main__':
   592 if __name__ == '__main__':
   606     unittest_main()
   593     unittest_main()