test/unittest_schema.py
branchstable
changeset 7640 85ebdbbcb321
parent 7603 1302aa6ba4da
child 7642 64eee2a83bfa
equal deleted inserted replaced
7630:f4b954676721 7640:85ebdbbcb321
    24 
    24 
    25 from logilab.common.testlib import TestCase, unittest_main
    25 from logilab.common.testlib import TestCase, unittest_main
    26 
    26 
    27 from rql import RQLSyntaxError
    27 from rql import RQLSyntaxError
    28 
    28 
    29 from yams import BadSchemaDefinition
    29 from yams import ValidationError, BadSchemaDefinition
    30 from yams.constraints import SizeConstraint, StaticVocabularyConstraint
    30 from yams.constraints import SizeConstraint, StaticVocabularyConstraint
    31 from yams.buildobjs import RelationDefinition, EntityType, RelationType
    31 from yams.buildobjs import RelationDefinition, EntityType, RelationType
    32 from yams.reader import PyFileReader
    32 from yams.reader import PyFileReader
    33 
    33 
    34 from cubicweb.schema import (
    34 from cubicweb.schema import (
    35     CubicWebSchema, CubicWebEntitySchema, CubicWebSchemaLoader,
    35     CubicWebSchema, CubicWebEntitySchema, CubicWebSchemaLoader,
    36     RQLConstraint, RQLUniqueConstraint, RQLVocabularyConstraint,
    36     RQLConstraint, RQLUniqueConstraint, RQLVocabularyConstraint,
    37     RQLExpression, ERQLExpression, RRQLExpression,
    37     RQLExpression, ERQLExpression, RRQLExpression,
    38     normalize_expression, order_eschemas, guess_rrqlexpr_mainvars)
    38     normalize_expression, order_eschemas, guess_rrqlexpr_mainvars)
    39 from cubicweb.devtools import TestServerConfiguration as TestConfiguration
    39 from cubicweb.devtools import TestServerConfiguration as TestConfiguration
       
    40 from cubicweb.devtools.testlib import CubicWebTC
    40 
    41 
    41 DATADIR = join(dirname(__file__), 'data')
    42 DATADIR = join(dirname(__file__), 'data')
    42 
    43 
    43 # build a dummy schema ########################################################
    44 # build a dummy schema ########################################################
    44 
    45 
   317     def test_exists(self):
   318     def test_exists(self):
   318         mainvars = guess_rrqlexpr_mainvars(normalize_expression('NOT EXISTS(O team_competition C, C level < 3, C concerns S)'))
   319         mainvars = guess_rrqlexpr_mainvars(normalize_expression('NOT EXISTS(O team_competition C, C level < 3, C concerns S)'))
   319         self.assertEqual(mainvars, set(['S', 'O']))
   320         self.assertEqual(mainvars, set(['S', 'O']))
   320 
   321 
   321 
   322 
       
   323 class RQLConstraintTC(CubicWebTC):
       
   324     def test_user_constraint(self):
       
   325         cstr = RQLConstraint('U identity O')
       
   326         anoneid = self.execute('Any X WHERE X login "anon"')[0][0]
       
   327         self.assertRaises(ValidationError, cstr.repo_check, self.session, 1, 'rel', anoneid)
       
   328         self.assertEqual(cstr.repo_check(self.session, 1, self.session.user.eid),
       
   329         None) # no validation error, constraint checked
       
   330 
       
   331 
   322 if __name__ == '__main__':
   332 if __name__ == '__main__':
   323     unittest_main()
   333     unittest_main()