test/unittest_entity.py
changeset 2773 b2530e3e0afb
parent 2650 18aec79ec3a3
child 2835 04034421b072
equal deleted inserted replaced
2767:58c519e5a31f 2773:b2530e3e0afb
     8 """
     8 """
     9 
     9 
    10 from datetime import datetime
    10 from datetime import datetime
    11 
    11 
    12 from cubicweb import Binary
    12 from cubicweb import Binary
    13 from cubicweb.devtools.apptest import EnvBasedTC
    13 from cubicweb.devtools.testlib import CubicWebTC
    14 from cubicweb.common.mttransforms import HAS_TAL
    14 from cubicweb.common.mttransforms import HAS_TAL
    15 
    15 
    16 class EntityTC(EnvBasedTC):
    16 class EntityTC(CubicWebTC):
    17 
    17 
    18 ##     def setup_database(self):
    18 ##     def setup_database(self):
    19 ##         self.add_entity('Personne', nom=u'di mascio', prenom=u'adrien')
    19 ##         self.add_entity('Personne', nom=u'di mascio', prenom=u'adrien')
    20 ##         self.add_entity('Task', title=u'fait ca !', description=u'et plus vite', start=now())
    20 ##         self.add_entity('Task', title=u'fait ca !', description=u'et plus vite', start=now())
    21 ##         self.add_entity('Tag', name=u'x')
    21 ##         self.add_entity('Tag', name=u'x')
    22 ##         self.add_entity('Link', title=u'perdu', url=u'http://www.perdu.com',
    22 ##         self.add_entity('Link', title=u'perdu', url=u'http://www.perdu.com',
    23 ##                         embed=False)
    23 ##                         embed=False)
    24 
    24 
    25     def test_boolean_value(self):
    25     def test_boolean_value(self):
    26         e = self.etype_instance('CWUser')
    26         e = self.vreg['etypes'].etype_class('CWUser')(self.request())
    27         self.failUnless(e)
    27         self.failUnless(e)
    28 
    28 
    29     def test_yams_inheritance(self):
    29     def test_yams_inheritance(self):
    30         from entities import Note
    30         from entities import Note
    31         e = self.etype_instance('SubNote')
    31         e = self.vreg['etypes'].etype_class('SubNote')(self.request())
    32         self.assertIsInstance(e, Note)
    32         self.assertIsInstance(e, Note)
    33         e2 = self.etype_instance('SubNote')
    33         e2 = self.vreg['etypes'].etype_class('SubNote')(self.request())
    34         self.assertIs(e.__class__, e2.__class__)
    34         self.assertIs(e.__class__, e2.__class__)
    35 
    35 
    36     def test_has_eid(self):
    36     def test_has_eid(self):
    37         e = self.etype_instance('CWUser')
    37         e = self.vreg['etypes'].etype_class('CWUser')(self.request())
    38         self.assertEquals(e.eid, None)
    38         self.assertEquals(e.eid, None)
    39         self.assertEquals(e.has_eid(), False)
    39         self.assertEquals(e.has_eid(), False)
    40         e.eid = 'X'
    40         e.eid = 'X'
    41         self.assertEquals(e.has_eid(), False)
    41         self.assertEquals(e.has_eid(), False)
    42         e.eid = 0
    42         e.eid = 0
   206         self.add_entity('Personne', nom=u'di mascio', prenom=u'gwen')
   206         self.add_entity('Personne', nom=u'di mascio', prenom=u'gwen')
   207         self.assertEquals(len(e.unrelated('tags', 'Personne', 'subject', limit=1)),
   207         self.assertEquals(len(e.unrelated('tags', 'Personne', 'subject', limit=1)),
   208                           1)
   208                           1)
   209 
   209 
   210     def test_new_entity_unrelated(self):
   210     def test_new_entity_unrelated(self):
   211         e = self.etype_instance('CWUser')
   211         e = self.vreg['etypes'].etype_class('CWUser')(self.request())
   212         unrelated = [r[0] for r in e.unrelated('in_group', 'CWGroup', 'subject')]
   212         unrelated = [r[0] for r in e.unrelated('in_group', 'CWGroup', 'subject')]
   213         # should be default groups but owners, i.e. managers, users, guests
   213         # should be default groups but owners, i.e. managers, users, guests
   214         self.assertEquals(len(unrelated), 3)
   214         self.assertEquals(len(unrelated), 3)
   215 
   215 
   216     def test_printable_value_string(self):
   216     def test_printable_value_string(self):
   225         e['content'] = 'du *texte*'
   225         e['content'] = 'du *texte*'
   226         e['content_format'] = 'text/plain'
   226         e['content_format'] = 'text/plain'
   227         self.assertEquals(e.printable_value('content'),
   227         self.assertEquals(e.printable_value('content'),
   228                           '<p>\ndu *texte*\n</p>')
   228                           '<p>\ndu *texte*\n</p>')
   229         e['title'] = 'zou'
   229         e['title'] = 'zou'
   230         #e = self.etype_instance('Task')
       
   231         e['content'] = '''\
   230         e['content'] = '''\
   232 a title
   231 a title
   233 =======
   232 =======
   234 du :eid:`1:*ReST*`'''
   233 du :eid:`1:*ReST*`'''
   235         e['content_format'] = 'text/rest'
   234         e['content_format'] = 'text/rest'
   301         e['content'] = u'hop\r\nhop\nhip\rmomo'
   300         e['content'] = u'hop\r\nhop\nhip\rmomo'
   302         self.assertEquals(e.printable_value('content'), u'hop\nhop\nhip\nmomo')
   301         self.assertEquals(e.printable_value('content'), u'hop\nhop\nhip\nmomo')
   303 
   302 
   304 
   303 
   305     def test_fulltextindex(self):
   304     def test_fulltextindex(self):
   306         e = self.etype_instance('File')
   305         e = self.vreg['etypes'].etype_class('File')(self.request())
   307         e['name'] = 'an html file'
   306         e['name'] = 'an html file'
   308         e['description'] = 'du <em>html</em>'
   307         e['description'] = 'du <em>html</em>'
   309         e['description_format'] = 'text/html'
   308         e['description_format'] = 'text/html'
   310         e['data'] = Binary('some <em>data</em>')
   309         e['data'] = Binary('some <em>data</em>')
   311         e['data_format'] = 'text/html'
   310         e['data_format'] = 'text/html'
   322         self.failUnless(not p1.reverse_evaluee)
   321         self.failUnless(not p1.reverse_evaluee)
   323 
   322 
   324     def test_complete_relation(self):
   323     def test_complete_relation(self):
   325         self.execute('SET RT add_permission G WHERE RT name "wf_info_for", G name "managers"')
   324         self.execute('SET RT add_permission G WHERE RT name "wf_info_for", G name "managers"')
   326         self.commit()
   325         self.commit()
   327         session = self.session()
   326         session = self.session
   328         try:
   327         try:
   329             eid = session.unsafe_execute(
   328             eid = session.unsafe_execute(
   330                 'INSERT TrInfo X: X comment "zou", X wf_info_for U, X from_state S1, X to_state S2 '
   329                 'INSERT TrInfo X: X comment "zou", X wf_info_for U, X from_state S1, X to_state S2 '
   331                 'WHERE U login "admin", S1 name "activated", S2 name "deactivated"')[0][0]
   330                 'WHERE U login "admin", S1 name "activated", S2 name "deactivated"')[0][0]
   332             trinfo = self.entity('Any X WHERE X eid %(x)s', {'x': eid}, 'x')
   331             trinfo = self.entity('Any X WHERE X eid %(x)s', {'x': eid}, 'x')