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') |