Commit d2412057 authored by sylvain.thenault@logilab.fr's avatar sylvain.thenault@logilab.fr
Browse files

fix tests

--HG--
branch : tls-sprint
parent 375c857aa0f5
distname = 'cubicweb-mycube'
......@@ -14,7 +14,7 @@ def unabsolutize(path):
if part.startswith('cubicweb') or part == 'cubes':
return '/'.join(parts[i+1:])
raise Exception('duh? %s' % path)
class CubicWebConfigurationTC(TestCase):
def setUp(self):
self.config = ApptestConfiguration('data')
......@@ -38,7 +38,7 @@ class CubicWebConfigurationTC(TestCase):
('jpl', 'email', 'file'))
self.assertEquals(self.config.reorder_cubes(('jpl', 'email', 'file')),
('jpl', 'email', 'file'))
def test_reorder_cubes_recommends(self):
from cubes.comment import __pkginfo__ as comment_pkginfo
comment_pkginfo.__recommend__ = ('file',)
......@@ -55,8 +55,8 @@ class CubicWebConfigurationTC(TestCase):
('jpl', 'email', 'comment', 'file'))
finally:
comment_pkginfo.__use__ = ()
# def test_vc_config(self):
# vcconf = self.config.vc_config()
# self.assertIsInstance(vcconf['EEMAIL'], Version)
......@@ -64,7 +64,7 @@ class CubicWebConfigurationTC(TestCase):
# self.assertEquals(vcconf['CW'], (2, 31, 2))
# self.assertRaises(KeyError, vcconf.__getitem__, 'CW_VERSION')
# self.assertRaises(KeyError, vcconf.__getitem__, 'CRM')
def test_expand_cubes(self):
self.assertEquals(self.config.expand_cubes(('email', 'eblog')),
['email', 'eblog', 'file'])
......@@ -104,7 +104,7 @@ class CubicWebConfigurationTC(TestCase):
del cubes.file
from cubes import file
self.assertEquals(file.__path__, [abspath(join(dirname(__file__), 'data', 'cubes', 'file'))])
if __name__ == '__main__':
unittest_main()
......@@ -15,7 +15,7 @@ class EntityTC(EnvBasedTC):
## self.add_entity('Tag', name=u'x')
## self.add_entity('Link', title=u'perdu', url=u'http://www.perdu.com',
## embed=False)
def test_boolean_value(self):
e = self.etype_instance('CWUser')
self.failUnless(e)
......@@ -37,7 +37,7 @@ class EntityTC(EnvBasedTC):
self.assertEquals(e.has_eid(), True)
e.eid = 2
self.assertEquals(e.has_eid(), True)
def test_copy(self):
self.add_entity('Tag', name=u'x')
p = self.add_entity('Personne', nom=u'toto')
......@@ -50,7 +50,7 @@ class EntityTC(EnvBasedTC):
self.assertEquals(len(e.ecrit_par), 1)
self.assertEquals(e.ecrit_par[0].eid, p.eid)
self.assertEquals(len(e.reverse_tags), 0)
def test_copy_with_nonmeta_composite_inlined(self):
p = self.add_entity('Personne', nom=u'toto')
oe = self.add_entity('Note', type=u'x')
......@@ -61,7 +61,7 @@ class EntityTC(EnvBasedTC):
e.copy_relations(oe.eid)
self.failIf(e.ecrit_par)
self.failUnless(oe.ecrit_par)
def test_copy_with_composite(self):
user = self.user()
adeleid = self.execute('INSERT EmailAddress X: X address "toto@logilab.org", U use_email X WHERE U login "admin"')[0][0]
......@@ -74,7 +74,7 @@ class EntityTC(EnvBasedTC):
e.copy_relations(user.eid)
self.failIf(e.use_email)
self.failIf(e.primary_email)
def test_copy_with_non_initial_state(self):
user = self.user()
eid = self.execute('INSERT CWUser X: X login "toto", X upassword %(pwd)s, X in_group G WHERE G name "users"',
......@@ -110,7 +110,7 @@ class EntityTC(EnvBasedTC):
self.assertEquals(len(p.related('tags', 'object', limit=2)), 2)
self.assertEquals(len(p.related('tags', 'object')), 4)
def test_fetch_rql(self):
user = self.user()
Personne = self.vreg.etype_class('Personne')
......@@ -130,7 +130,7 @@ class EntityTC(EnvBasedTC):
try:
# testing unknown attributes
Personne.fetch_attrs = ('bloug', 'beep')
self.assertEquals(Personne.fetch_rql(user), 'Any X WHERE X is Personne')
self.assertEquals(Personne.fetch_rql(user), 'Any X WHERE X is Personne')
# testing one non final relation
Personne.fetch_attrs = ('nom', 'prenom', 'travaille')
self.assertEquals(Personne.fetch_rql(user),
......@@ -179,7 +179,7 @@ class EntityTC(EnvBasedTC):
# XXX
self.assertEquals(aff.related_rql('evaluee'),
'Any X,AA ORDERBY Z DESC WHERE X modification_date Z, E eid %(x)s, E evaluee X, X modification_date AA')
def test_entity_unrelated(self):
p = self.add_entity('Personne', nom=u'di mascio', prenom=u'adrien')
e = self.add_entity('Tag', name=u'x')
......@@ -198,7 +198,7 @@ class EntityTC(EnvBasedTC):
self.add_entity('Personne', nom=u'di mascio', prenom=u'gwen')
self.assertEquals(len(e.unrelated('tags', 'Personne', 'subject', limit=1)),
1)
def test_new_entity_unrelated(self):
e = self.etype_instance('CWUser')
unrelated = [r[0] for r in e.unrelated('in_group', 'CWGroup', 'subject')]
......@@ -209,7 +209,7 @@ class EntityTC(EnvBasedTC):
e = self.add_entity('Card', title=u'rest test', content=u'du :eid:`1:*ReST*`',
content_format=u'text/rest')
self.assertEquals(e.printable_value('content'),
'<p>du <a class="reference" href="http://testing.fr/cubicweb/egroup/managers">*ReST*</a></p>\n')
'<p>du <a class="reference" href="http://testing.fr/cubicweb/cwgroup/managers">*ReST*</a></p>\n')
e['content'] = 'du <em>html</em> <ref rql="CWUser X">users</ref>'
e['content_format'] = 'text/html'
self.assertEquals(e.printable_value('content'),
......@@ -237,7 +237,7 @@ du :eid:`1:*ReST*`'''
e['content_format'] = 'text/cubicweb-page-template'
self.assertEquals(e.printable_value('content'),
'<h1>zou</h1>')
def test_printable_value_bytes(self):
e = self.add_entity('File', data=Binary('lambda x: 1'), data_format=u'text/x-python',
......@@ -254,7 +254,7 @@ du :eid:`1:*ReST*`'''
<span style="color: #C00000;">lambda</span> <span style="color: #000000;">x</span><span style="color: #0000C0;">:</span> <span style="color: #0080C0;">1</span>
</pre>
''')
e = self.add_entity('File', data=Binary('*héhéhé*'), data_format=u'text/rest',
data_encoding=u'utf-8', name=u'toto.txt')
self.assertEquals(e.printable_value('data'),
......@@ -290,8 +290,8 @@ du :eid:`1:*ReST*`'''
self.assertEquals(e.printable_value('content'), e['content'])
e['content'] = u'été'
self.assertEquals(e.printable_value('content'), e['content'])
def test_fulltextindex(self):
e = self.etype_instance('File')
e['name'] = 'an html file'
......@@ -300,17 +300,17 @@ du :eid:`1:*ReST*`'''
e['data'] = Binary('some <em>data</em>')
e['data_format'] = 'text/html'
e['data_encoding'] = 'ascii'
self.assertEquals(set(e.get_words()),
self.assertEquals(set(e.get_words()),
set(['an', 'html', 'file', 'du', 'html', 'some', 'data']))
def test_nonregr_relation_cache(self):
p1 = self.add_entity('Personne', nom=u'di mascio', prenom=u'adrien')
p2 = self.add_entity('Personne', nom=u'toto')
self.execute('SET X evaluee Y WHERE X nom "di mascio", Y nom "toto"')
self.assertEquals(p1.evaluee[0].nom, "toto")
self.failUnless(not p1.reverse_evaluee)
def test_complete_relation(self):
self.execute('SET RT add_permission G WHERE RT name "wf_info_for", G name "managers"')
self.commit()
......@@ -382,7 +382,7 @@ du :eid:`1:*ReST*`'''
metainf['source'] = metainf['source'].copy()
metainf['source']['base-url'] = 'http://cubicweb2.com/'
self.assertEquals(note.absolute_url(), 'http://cubicweb2.com/note/%s' % note.eid)
if __name__ == '__main__':
from logilab.common.testlib import unittest_main
unittest_main()
......
......@@ -12,17 +12,17 @@ from rql import parse
from cubicweb.rset import NotAnEntity, ResultSet, attr_desc_iterator
def pprelcachedict(d):
res = {}
for k, (rset, related) in d.items():
res[k] = sorted(v.eid for v in related)
return sorted(res.items())
class AttrDescIteratorTC(TestCase):
"""TestCase for cubicweb.rset.attr_desc_iterator"""
def test_relations_description(self):
"""tests relations_description() function"""
queries = {
......@@ -35,7 +35,7 @@ class AttrDescIteratorTC(TestCase):
for rql, relations in queries.items():
result = list(attr_desc_iterator(parse(rql).children[0]))
self.assertEquals((rql, result), (rql, relations))
def test_relations_description_indexed(self):
"""tests relations_description() function"""
queries = {
......@@ -49,7 +49,7 @@ class AttrDescIteratorTC(TestCase):
class ResultSetTC(EnvBasedTC):
class ResultSetTC(EnvBasedTC):
def setUp(self):
super(ResultSetTC, self).setUp()
......@@ -67,7 +67,7 @@ class ResultSetTC(EnvBasedTC):
params2 = dict(pair.split('=') for pair in info1[3].split('&'))
self.assertDictEquals(params1, params2)
def test_build_url(self):
req = self.request()
baseurl = req.base_url()
......@@ -79,8 +79,8 @@ class ResultSetTC(EnvBasedTC):
# '%stask/title/go' % baseurl)
# empty _restpath should not crash
self.compare_urls(req.build_url('view', _restpath=''), baseurl)
def test_resultset_build(self):
"""test basic build of a ResultSet"""
rs = ResultSet([1,2,3], 'CWGroup X', description=['CWGroup', 'CWGroup', 'CWGroup'])
......@@ -102,7 +102,7 @@ class ResultSetTC(EnvBasedTC):
self.assertEquals(rs2.get_entity(0, 0).row, 0)
self.assertEquals(rs.limit(2, offset=2).rows, [[14000, 'nico']])
self.assertEquals(rs.limit(2, offset=3).rows, [])
def test_resultset_filter(self):
rs = ResultSet([[12000, 'adim'], [13000, 'syt'], [14000, 'nico']],
......@@ -112,11 +112,11 @@ class ResultSetTC(EnvBasedTC):
rs.vreg = self.env.vreg
def test_filter(entity):
return entity.login != 'nico'
rs2 = rs.filtered_rset(test_filter)
self.assertEquals(len(rs2), 2)
self.assertEquals([login for _, login in rs2], ['adim', 'syt'])
def test_resultset_transform(self):
rs = ResultSet([[12, 'adim'], [13, 'syt'], [14, 'nico']],
'Any U,L where U is CWUser, U login L',
......@@ -128,20 +128,20 @@ class ResultSetTC(EnvBasedTC):
self.assertEquals(len(rs2), 3)
self.assertEquals(list(rs2), [['adim'],['syt'],['nico']])
def test_resultset_sort(self):
rs = ResultSet([[12000, 'adim'], [13000, 'syt'], [14000, 'nico']],
'Any U,L where U is CWUser, U login L',
description=[['CWUser', 'String']] * 3)
rs.req = self.request()
rs.vreg = self.env.vreg
rs2 = rs.sorted_rset(lambda e:e['login'])
self.assertEquals(len(rs2), 3)
self.assertEquals([login for _, login in rs2], ['adim', 'nico', 'syt'])
# make sure rs is unchanged
self.assertEquals([login for _, login in rs], ['adim', 'syt', 'nico'])
rs2 = rs.sorted_rset(lambda e:e['login'], reverse=True)
self.assertEquals(len(rs2), 3)
self.assertEquals([login for _, login in rs2], ['syt', 'nico', 'adim'])
......@@ -165,7 +165,7 @@ class ResultSetTC(EnvBasedTC):
description=[['CWUser', 'String', 'String']] * 5)
rs.req = self.request()
rs.vreg = self.env.vreg
rsets = rs.split_rset(lambda e:e['login'])
self.assertEquals(len(rsets), 3)
self.assertEquals([login for _, login,_ in rsets[0]], ['adim', 'adim'])
......@@ -173,7 +173,7 @@ class ResultSetTC(EnvBasedTC):
self.assertEquals([login for _, login,_ in rsets[2]], ['nico', 'nico'])
# make sure rs is unchanged
self.assertEquals([login for _, login,_ in rs], ['adim', 'adim', 'syt', 'nico', 'nico'])
rsets = rs.split_rset(lambda e:e['login'], return_dict=True)
self.assertEquals(len(rsets), 3)
self.assertEquals([login for _, login,_ in rsets['nico']], ['nico', 'nico'])
......@@ -198,7 +198,7 @@ class ResultSetTC(EnvBasedTC):
u'Le carrelage en 42 leçons',
u'La tarte tatin en 15 minutes',
u"L'épluchage du castor commun"])
def test_cached_syntax_tree(self):
"""make sure syntax tree is cached"""
rqlst1 = self.rset.syntax_tree()
......@@ -216,21 +216,20 @@ class ResultSetTC(EnvBasedTC):
e.complete()
self.assertEquals(e['firstname'], 'adrien')
self.assertEquals(pprelcachedict(e._related_cache), [])
def test_get_entity_advanced(self):
self.add_entity('Bookmark', title=u'zou', path=u'/view')
self.execute('SET X bookmarked_by Y WHERE X is Bookmark, Y login "anon"')
rset = self.execute('Any X,Y,XT,YN WHERE X bookmarked_by Y, X title XT, Y login YN')
e = rset.get_entity(0, 0)
self.assertEquals(e.row, 0)
self.assertEquals(e.col, 0)
self.assertEquals(e['title'], 'zou')
self.assertRaises(KeyError, e.__getitem__, 'path')
with traced_selection():
self.assertEquals(e.view('text'), 'zou')
self.assertEquals(e.view('text'), 'zou')
self.assertEquals(pprelcachedict(e._related_cache), [])
e = rset.get_entity(0, 1)
self.assertEquals(e.row, 0)
self.assertEquals(e.col, 1)
......@@ -243,7 +242,7 @@ class ResultSetTC(EnvBasedTC):
self.assertEquals(e.view('text'), 'anon')
self.assertEquals(pprelcachedict(e._related_cache),
[])
self.assertRaises(NotAnEntity, rset.get_entity, 0, 2)
self.assertRaises(NotAnEntity, rset.get_entity, 0, 3)
......@@ -274,7 +273,7 @@ class ResultSetTC(EnvBasedTC):
self.assertEquals(s['name'], 'activated')
self.assertRaises(KeyError, s.__getitem__, 'description')
def test_get_entity_cache_with_left_outer_join(self):
eid = self.execute('INSERT CWUser E: E login "joe", E upassword "joe", E in_group G '
'WHERE G name "users"')[0][0]
......@@ -287,7 +286,7 @@ class ResultSetTC(EnvBasedTC):
cached = e.related_cache('primary_email', 'subject', False)
self.assertIsInstance(cached, ResultSet)
self.assertEquals(cached.rowcount, 0)
def test_get_entity_union(self):
e = self.add_entity('Bookmark', title=u'manger', path=u'path')
......@@ -303,14 +302,14 @@ class ResultSetTC(EnvBasedTC):
self.assertEquals(entity.id, etype)
attr = etype == 'Bookmark' and 'title' or 'name'
self.assertEquals(entity[attr], n)
def test_related_entity_optional(self):
e = self.add_entity('Bookmark', title=u'aaaa', path=u'path')
rset = self.execute('Any B,U,L WHERE B bookmarked_by U?, U login L')
entity, rtype = rset.related_entity(0, 2)
self.assertEquals(entity, None)
self.assertEquals(rtype, None)
def test_related_entity_union_subquery(self):
e = self.add_entity('Bookmark', title=u'aaaa', path=u'path')
rset = self.execute('Any X,N ORDERBY N WITH X,N BEING '
......@@ -330,7 +329,7 @@ class ResultSetTC(EnvBasedTC):
entity, rtype = rset.related_entity(0, 1)
self.assertEquals(entity.eid, e.eid)
self.assertEquals(rtype, 'title')
def test_entities(self):
rset = self.execute('Any U,G WHERE U in_group G')
# make sure we have at least one element
......@@ -340,7 +339,7 @@ class ResultSetTC(EnvBasedTC):
self.assertEquals(set(e.e_schema.type for e in rset.entities(1)),
set(['CWGroup',]))
def test_printable_rql(self):
def test_printable_rql(self):
rset = self.execute(u'CWEType X WHERE X final FALSE, X meta FALSE')
self.assertEquals(rset.printable_rql(),
'Any X WHERE X final FALSE, X meta FALSE, X is CWEType')
......@@ -351,7 +350,7 @@ class ResultSetTC(EnvBasedTC):
self.assertEquals(rset.searched_text(), 'foobar')
rset = self.execute(u'Any X WHERE X has_text %(text)s', {'text' : 'foo'})
self.assertEquals(rset.searched_text(), 'foo')
if __name__ == '__main__':
unittest_main()
......@@ -9,7 +9,7 @@ from logilab.common.testlib import TestCase, unittest_main
from cubicweb.devtools.testlib import EnvBasedTC
from cubicweb.vregistry import Selector, AndSelector, OrSelector
from cubicweb.selectors import implements
from cubicweb.selectors import implements, match_user_groups
from cubicweb.interfaces import IDownloadable
from cubicweb.web import action
......@@ -109,6 +109,7 @@ class MatchUserGroupsTC(EnvBasedTC):
id = 'yo'
category = 'foo'
__select__ = match_user_groups('owners')
self.vreg._loadedmods[__name__] = {}
self.vreg.register_vobject_class(SomeAction)
self.failUnless(SomeAction in self.vreg['actions']['yo'], self.vreg['actions'])
try:
......@@ -117,16 +118,16 @@ class MatchUserGroupsTC(EnvBasedTC):
self.login('john')
# it should not be possible to use SomeAction not owned objects
rset, req = self.env.get_rset_and_req('Any G WHERE G is CWGroup, G name "managers"')
self.failIf('foo' in self.pactions(req, rset))
self.failIf('yo' in dict(self.pactions(req, rset)))
# insert a new card, and check that we can use SomeAction on our object
self.execute('INSERT Card C: C title "zoubidou"')
self.commit()
rset, req = self.env.get_rset_and_req('Card C WHERE C title "zoubidou"')
self.failUnless('foo' in self.pactions(req, rset))
self.failUnless('yo' in dict(self.pactions(req, rset)), self.pactions(req, rset))
# make sure even managers can't use the action
self.restore_connection()
rset, req = self.env.get_rset_and_req('Card C WHERE C title "zoubidou"')
self.failIf('foo' in self.pactions(req, rset))
self.failIf('yo' in dict(self.pactions(req, rset)))
finally:
del self.vreg[SomeAction.__registry__][SomeAction.id]
......
......@@ -6,15 +6,16 @@ from cubicweb import CW_SOFTWARE_ROOT as BASE
from cubicweb.vregistry import VObject
from cubicweb.cwvreg import CubicWebRegistry, UnknownProperty
from cubicweb.devtools import TestServerConfiguration
from cubicweb.entities.lib import Card
from cubicweb.interfaces import IMileStone
from cubes.card.entities import Card
class YesSchema:
def __contains__(self, something):
return True
WEBVIEWSDIR = join(BASE, 'web', 'views')
class VRegistryTC(TestCase):
def setUp(self):
......@@ -22,24 +23,26 @@ class VRegistryTC(TestCase):
self.vreg = CubicWebRegistry(config)
config.bootstrap_cubes()
self.vreg.schema = config.load_schema()
def test_load(self):
self.vreg.init_registration([WEBVIEWSDIR])
self.vreg.load_file(join(WEBVIEWSDIR, 'euser.py'), 'cubicweb.web.views.euser')
self.vreg.load_file(join(WEBVIEWSDIR, 'cwuser.py'), 'cubicweb.web.views.cwuser')
self.vreg.load_file(join(WEBVIEWSDIR, 'baseviews.py'), 'cubicweb.web.views.baseviews')
fpvc = [v for v in self.vreg.registry_objects('views', 'primary')
if v.__module__ == 'cubicweb.web.views.euser'][0]
if v.__module__ == 'cubicweb.web.views.cwuser'][0]
fpv = fpvc(None, None)
# don't want a TypeError due to super call
self.assertRaises(AttributeError, fpv.render_entity_attributes, None, None)
def test_load_interface_based_vojects(self):
self.vreg.init_registration([WEBVIEWSDIR])
self.vreg.load_file(join(BASE, 'entities', '__init__.py'), 'cubicweb.entities.__init__')
self.vreg.load_file(join(WEBVIEWSDIR, 'idownloadable.py'), 'cubicweb.web.views.idownloadable')
self.vreg.load_file(join(WEBVIEWSDIR, 'baseviews.py'), 'cubicweb.web.views.baseviews')
# check loading baseviews after idownloadable isn't kicking interface based views
self.vreg.load_file(join(WEBVIEWSDIR, 'primary.py'), 'cubicweb.web.views.primary')
self.assertEquals(len(self.vreg['views']['primary']), 2)
self.vreg.initialization_completed()
self.assertEquals(len(self.vreg['views']['primary']), 1)
def test___selectors__compat(self):
myselector1 = lambda *args: 1
myselector2 = lambda *args: 1
......@@ -63,10 +66,11 @@ class VRegistryTC(TestCase):
self.vreg.reset()
self.vreg._loadedmods[__name__] = {}
self.vreg.register_vobject_class(MyCard)
self.vreg.register_objects([join(BASE, 'web', 'views', 'iprogress.py')])
self.vreg.register_objects([join(BASE, 'entities', '__init__.py'),
join(BASE, 'web', 'views', 'iprogress.py')])
# check progressbar isn't kicked
self.assertEquals(len(self.vreg['views']['progressbar']), 1)
if __name__ == '__main__':
unittest_main()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment