--- a/devtools/_apptest.py Tue May 05 17:18:49 2009 +0200
+++ b/devtools/_apptest.py Thu May 14 12:48:11 2009 +0200
@@ -1,7 +1,7 @@
"""Hidden internals for the devtools.apptest module
:organization: Logilab
-:copyright: 2001-2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
"""
__docformat__ = "restructuredtext en"
@@ -20,11 +20,11 @@
from cubicweb.devtools import ApptestConfiguration, init_test_database
from cubicweb.devtools.fake import FakeRequest
-
-SYSTEM_ENTITIES = ('EGroup', 'EUser',
- 'EFRDef', 'ENFRDef',
- 'EConstraint', 'EConstraintType', 'EProperty',
- 'EEType', 'ERType',
+
+SYSTEM_ENTITIES = ('CWGroup', 'CWUser',
+ 'CWAttribute', 'CWRelation',
+ 'CWConstraint', 'CWConstraintType', 'CWProperty',
+ 'CWEType', 'CWRType',
'State', 'Transition', 'TrInfo',
'RQLExpression',
)
@@ -35,7 +35,7 @@
'is', 'is_instance_of', 'owned_by', 'created_by', 'specializes',
# workflow related
'state_of', 'transition_of', 'initial_state', 'allowed_transition',
- 'destination_state', 'in_state', 'wf_info_for', 'from_state', 'to_state',
+ 'destination_state', 'in_state', 'wf_info_for', 'from_state', 'to_state',
'condition',
# permission
'in_group', 'require_group', 'require_permission',
@@ -46,11 +46,11 @@
'relation_type', 'from_entity', 'to_entity',
'constrained_by', 'cstrtype', 'widget',
# deducted from other relations
- 'primary_email',
+ 'primary_email',
)
def unprotected_entities(app_schema, strict=False):
- """returned a Set of each non final entity type, excluding EGroup, and EUser...
+ """returned a Set of each non final entity type, excluding CWGroup, and CWUser...
"""
if strict:
protected_entities = yams.schema.BASE_TYPES
@@ -58,16 +58,17 @@
protected_entities = yams.schema.BASE_TYPES.union(set(SYSTEM_ENTITIES))
entities = set(app_schema.entities())
return entities - protected_entities
-
+
def ignore_relations(*relations):
+ global SYSTEM_RELATIONS
SYSTEM_RELATIONS += relations
class TestEnvironment(object):
"""TestEnvironment defines a context (e.g. a config + a given connection) in
which the tests are executed
"""
-
+
def __init__(self, appid, reporter=None, verbose=False,
configcls=ApptestConfiguration, requestcls=FakeRequest):
config = configcls(appid)
@@ -83,14 +84,13 @@
self.restore_database()
if verbose:
print "init done"
- login = source['db-user']
config.repository = lambda x=None: self.repo
self.app = CubicWebPublisher(config, vreg=vreg)
self.verbose = verbose
schema = self.vreg.schema
# else we may run into problems since email address are ususally share in app tests
# XXX should not be necessary anymore
- schema.rschema('primary_email').set_rproperty('EUser', 'EmailAddress', 'composite', False)
+ schema.rschema('primary_email').set_rproperty('CWUser', 'EmailAddress', 'composite', False)
self.deletable_entities = unprotected_entities(schema)
def restore_database(self):
@@ -114,12 +114,12 @@
self.cnx.vreg = self.vreg
self.cnx.login = source['db-user']
self.cnx.password = source['db-password']
-
+
def create_user(self, login, groups=('users',), req=None):
req = req or self.create_request()
cursor = self._orig_cnx.cursor(req)
- rset = cursor.execute('INSERT EUser X: X login %(login)s, X upassword %(passwd)s,'
+ rset = cursor.execute('INSERT CWUser X: X login %(login)s, X upassword %(passwd)s,'
'X in_state S WHERE S name "activated"',
{'login': unicode(login), 'passwd': login.encode('utf8')})
user = rset.get_entity(0, 0)
@@ -140,7 +140,7 @@
if login == self.vreg.config.anonymous_user()[0]:
self.cnx.anonymous_connection = True
return self.cnx
-
+
def restore_connection(self):
if not self.cnx is self._orig_cnx:
try:
@@ -157,7 +157,7 @@
"""
req = req or self.create_request(rql=rql)
return self.cnx.cursor(req).execute(unicode(rql), args, eidkey)
-
+
def create_request(self, rql=None, **kwargs):
"""executes <rql>, builds a resultset, and returns a
couple (rset, req) where req is a FakeRequest
@@ -167,14 +167,14 @@
req = self.requestcls(self.vreg, form=kwargs)
req.set_connection(self.cnx)
return req
-
+
def get_rset_and_req(self, rql, optional_args=None, args=None, eidkey=None):
"""executes <rql>, builds a resultset, and returns a
couple (rset, req) where req is a FakeRequest
"""
return (self.execute(rql, args, eidkey),
self.create_request(rql=rql, **optional_args or {}))
-
+
def check_view(self, rql, vid, optional_args, template='main'):
"""checks if vreg.view() raises an exception in this environment
@@ -183,7 +183,7 @@
"""
return self.call_view(vid, rql,
template=template, optional_args=optional_args)
-
+
def call_view(self, vid, rql, template='main', optional_args=None):
"""shortcut for self.vreg.view()"""
assert template
@@ -227,23 +227,22 @@
yield action
class ExistingTestEnvironment(TestEnvironment):
-
+
def __init__(self, appid, sourcefile, verbose=False):
config = ApptestConfiguration(appid, sourcefile=sourcefile)
if verbose:
print "init test database ..."
source = config.sources()['system']
self.vreg = CubicWebRegistry(config)
- repo, self.cnx = init_test_database(driver=source['db-driver'],
- vreg=self.vreg)
+ self.cnx = init_test_database(driver=source['db-driver'],
+ vreg=self.vreg)[1]
if verbose:
- print "init done"
+ print "init done"
self.app = CubicWebPublisher(config, vreg=self.vreg)
self.verbose = verbose
# this is done when the publisher is opening a connection
self.cnx.vreg = self.vreg
- login = source['db-user']
-
+
def setup(self, config=None):
"""config is passed by TestSuite but is ignored in this environment"""
cursor = self.cnx.cursor()
@@ -255,4 +254,3 @@
cursor.execute('DELETE Any X WHERE X eid > %(x)s', {'x' : self.last_eid}, eid_key='x')
print "cleaning done"
self.cnx.commit()
-