goa/test/unittest_metadata.py
branchtls-sprint
changeset 1802 d628defebc17
parent 1398 5fe84a5f7035
child 1977 606923dff11b
equal deleted inserted replaced
1801:672acc730ce5 1802:d628defebc17
     5 from datetime import datetime
     5 from datetime import datetime
     6 from cubicweb.goa import db
     6 from cubicweb.goa import db
     7 
     7 
     8 from google.appengine.api import datastore
     8 from google.appengine.api import datastore
     9 
     9 
    10 class Article(db.Model):        
    10 class Article(db.Model):
    11     content = db.TextProperty()
    11     content = db.TextProperty()
    12     synopsis = db.StringProperty(default='hello')
    12     synopsis = db.StringProperty(default='hello')
    13 
    13 
    14 class Blog(db.Model):
    14 class Blog(db.Model):
    15     diem = db.DateProperty(required=True, auto_now_add=True)
    15     diem = db.DateProperty(required=True, auto_now_add=True)
    16     title = db.StringProperty(required=True)
    16     title = db.StringProperty(required=True)
    17     content = db.TextProperty()
    17     content = db.TextProperty()
    18     talks_about = db.ReferenceProperty(Article) 
    18     talks_about = db.ReferenceProperty(Article)
    19     cites = db.SelfReferenceProperty() 
    19     cites = db.SelfReferenceProperty()
    20 
    20 
    21   
    21 
    22 class MetaDataTC(GAEBasedTC):
    22 class MetaDataTC(GAEBasedTC):
    23     MODEL_CLASSES = (Article, Blog)
    23     MODEL_CLASSES = (Article, Blog)
    24     
    24 
    25     def setUp(self):
    25     def setUp(self):
    26         GAEBasedTC.setUp(self)
    26         GAEBasedTC.setUp(self)
    27         self.req = self.request()
    27         self.req = self.request()
    28         self.a = self.add_entity('Article')
    28         self.a = self.add_entity('Article')
    29         self.p = self.add_entity('CWProperty', pkey=u'ui.language', value=u'en')
    29         self.p = self.add_entity('CWProperty', pkey=u'ui.language', value=u'en')
    30         self.session.commit()
    30         self.session.commit()
    31         
    31 
    32     def _test_timestamp(self, entity, attr, sleep=0.1):
    32     def _test_timestamp(self, entity, attr, sleep=0.1):
    33         timestamp = getattr(entity, attr)
    33         timestamp = getattr(entity, attr)
    34         self.failUnless(timestamp)
    34         self.failUnless(timestamp)
    35         self.assertIsInstance(timestamp, DateTimeType)
    35         self.assertIsInstance(timestamp, DateTimeType)
    36         self.assertIsInstance(entity.to_gae_model()['s_'+attr], datetime)
    36         self.assertIsInstance(entity.to_gae_model()['s_'+attr], datetime)
    39             entity.set_attributes(content=u'zou')
    39             entity.set_attributes(content=u'zou')
    40         else:
    40         else:
    41             entity.set_attributes(value=u'en')
    41             entity.set_attributes(value=u'en')
    42         self.session.commit()
    42         self.session.commit()
    43         return timestamp
    43         return timestamp
    44     
    44 
    45     def test_creation_date_dbmodel(self):
    45     def test_creation_date_dbmodel(self):
    46         cdate = self._test_timestamp(self.a, 'creation_date')
    46         cdate = self._test_timestamp(self.a, 'creation_date')
    47         self.assertEquals(cdate, self.a.creation_date)
    47         self.assertEquals(cdate, self.a.creation_date)
    48         
    48 
    49     def test_creation_date_yams(self):
    49     def test_creation_date_yams(self):
    50         cdate = self._test_timestamp(self.p, 'creation_date')
    50         cdate = self._test_timestamp(self.p, 'creation_date')
    51         self.assertEquals(cdate, self.p.creation_date)
    51         self.assertEquals(cdate, self.p.creation_date)
    52         
    52 
    53     def test_modification_date_dbmodel(self):
    53     def test_modification_date_dbmodel(self):
    54         mdate = self._test_timestamp(self.a, 'modification_date', sleep=1)
    54         mdate = self._test_timestamp(self.a, 'modification_date', sleep=1)
    55         a = self.execute('Any X WHERE X eid %(x)s', {'x': self.a.eid}, 'x').get_entity(0, 0)
    55         a = self.execute('Any X WHERE X eid %(x)s', {'x': self.a.eid}, 'x').get_entity(0, 0)
    56         self.failUnless(mdate < a.modification_date, (mdate, a.modification_date))
    56         self.failUnless(mdate < a.modification_date, (mdate, a.modification_date))
    57         
    57 
    58     def test_modification_date_yams(self):
    58     def test_modification_date_yams(self):
    59         mdate = self._test_timestamp(self.p, 'modification_date', sleep=1)
    59         mdate = self._test_timestamp(self.p, 'modification_date', sleep=1)
    60         p = self.execute('Any X WHERE X eid %(x)s', {'x': self.p.eid}, 'x').get_entity(0, 0)
    60         p = self.execute('Any X WHERE X eid %(x)s', {'x': self.p.eid}, 'x').get_entity(0, 0)
    61         self.failUnless(mdate < p.modification_date, (mdate, p.modification_date))
    61         self.failUnless(mdate < p.modification_date, (mdate, p.modification_date))
    62 
    62 
    65         owner = entity.owned_by[0]
    65         owner = entity.owned_by[0]
    66         self.assertIsInstance(owner, db.Model)
    66         self.assertIsInstance(owner, db.Model)
    67         dbmodel = entity.to_gae_model()
    67         dbmodel = entity.to_gae_model()
    68         self.assertEquals(len(dbmodel['s_owned_by']), 1)
    68         self.assertEquals(len(dbmodel['s_owned_by']), 1)
    69         self.assertIsInstance(dbmodel['s_owned_by'][0], datastore.Key)
    69         self.assertIsInstance(dbmodel['s_owned_by'][0], datastore.Key)
    70         
    70 
    71     def test_owned_by_dbmodel(self):
    71     def test_owned_by_dbmodel(self):
    72         self._test_owned_by(self.a)
    72         self._test_owned_by(self.a)
    73         
    73 
    74     def test_owned_by_yams(self):
    74     def test_owned_by_yams(self):
    75         self._test_owned_by(self.p)
    75         self._test_owned_by(self.p)
    76 
    76 
    77     def _test_created_by(self, entity):
    77     def _test_created_by(self, entity):
    78         self.assertEquals(len(entity.created_by), 1)
    78         self.assertEquals(len(entity.created_by), 1)
    79         creator = entity.created_by[0]
    79         creator = entity.created_by[0]
    80         self.assertIsInstance(creator, db.Model)
    80         self.assertIsInstance(creator, db.Model)
    81         self.assertIsInstance(entity.to_gae_model()['s_created_by'], datastore.Key)
    81         self.assertIsInstance(entity.to_gae_model()['s_created_by'], datastore.Key)
    82         
    82 
    83     def test_created_by_dbmodel(self):
    83     def test_created_by_dbmodel(self):
    84         self._test_created_by(self.a)
    84         self._test_created_by(self.a)
    85         
    85 
    86     def test_created_by_dbmodel(self):
    86     def test_created_by_dbmodel(self):
    87         self._test_created_by(self.p)
    87         self._test_created_by(self.p)
    88         
    88 
    89     def test_user_owns_dbmodel(self):
    89     def test_user_owns_dbmodel(self):
    90         self.failUnless(self.req.user.owns(self.a.eid))
    90         self.failUnless(self.req.user.owns(self.a.eid))
    91         
    91 
    92     def test_user_owns_yams(self):
    92     def test_user_owns_yams(self):
    93         self.failUnless(self.req.user.owns(self.p.eid))
    93         self.failUnless(self.req.user.owns(self.p.eid))
    94 
    94 
    95     def test_is_relation(self):
    95     def test_is_relation(self):
    96         en = self.execute('Any EN WHERE E name EN, X is E, X eid %(x)s', {'x': self.a.eid}, 'x')[0][0]
    96         en = self.execute('Any EN WHERE E name EN, X is E, X eid %(x)s', {'x': self.a.eid}, 'x')[0][0]
    97         self.assertEquals(en, 'Article')
    97         self.assertEquals(en, 'Article')
    98         en = self.execute('Any EN WHERE E name EN, X is E, X eid %(x)s', {'x': self.p.eid}, 'x')[0][0]
    98         en = self.execute('Any EN WHERE E name EN, X is E, X eid %(x)s', {'x': self.p.eid}, 'x')[0][0]
    99         self.assertEquals(en, 'CWProperty') 
    99         self.assertEquals(en, 'CWProperty')
   100         en = self.execute('Any EN WHERE E name EN, X is E, X eid %(x)s', {'x': self.req.user.eid}, 'x')[0][0]
   100         en = self.execute('Any EN WHERE E name EN, X is E, X eid %(x)s', {'x': self.req.user.eid}, 'x')[0][0]
   101         self.assertEquals(en, 'CWUser')
   101         self.assertEquals(en, 'CWUser')
   102 
   102 
   103         
   103 
   104 if __name__ == '__main__':
   104 if __name__ == '__main__':
   105     from logilab.common.testlib import unittest_main
   105     from logilab.common.testlib import unittest_main
   106     unittest_main()
   106     unittest_main()