test/unittest_dbapi.py
author Laure Bourgois <Laure.Bourgois@logilab.fr>
Mon, 09 Feb 2009 11:55:32 +0100
changeset 561 4bbeb62ba955
parent 0 b97547f5f1fa
child 1398 5fe84a5f7035
permissions -rw-r--r--
add a linked data view for project. this linked data view will be extended to pertinent entities in the future. We remark that we use doap format if it exists (doap:created, doap:description ...), we use our own vocabulary (available in tbox view) if doap does not supports it.

from cubicweb import ConnectionError
from cubicweb.dbapi import ProgrammingError
from cubicweb.devtools.apptest import EnvBasedTC


class DBAPITC(EnvBasedTC):
    @property
    def cnx(self):
        return self.login('anon')

    def test_public_repo_api(self):
        cnx = self.cnx
        self.assertEquals(cnx.get_schema(), self.env.repo.schema)
        self.assertEquals(cnx.source_defs(), {'system': {'adapter': 'native', 'uri': 'system'}})
        self.restore_connection() # proper way to close cnx
        self.assertRaises(ProgrammingError, cnx.get_schema)
        self.assertRaises(ProgrammingError, cnx.source_defs)

    def test_db_api(self):
        cnx = self.cnx
        self.assertEquals(cnx.rollback(), None)
        self.assertEquals(cnx.commit(), None)
        self.restore_connection() # proper way to close cnx
        #self.assertEquals(cnx.close(), None)
        self.assertRaises(ProgrammingError, cnx.rollback)
        self.assertRaises(ProgrammingError, cnx.commit)
        self.assertRaises(ProgrammingError, cnx.close)

    def test_api(self):
        cnx = self.cnx
        self.assertEquals(cnx.user(None).login, 'anon')
        self.assertEquals(cnx.describe(1), (u'EGroup', u'system', None))
        self.restore_connection() # proper way to close cnx
        self.assertRaises(ConnectionError, cnx.user, None)
        self.assertRaises(ConnectionError, cnx.describe, 1)

    def test_session_data_api(self):
        cnx = self.cnx
        self.assertEquals(cnx.get_session_data('data'), None)
        self.assertEquals(cnx.session_data(), {})
        cnx.set_session_data('data', 4)
        self.assertEquals(cnx.get_session_data('data'), 4)
        self.assertEquals(cnx.session_data(), {'data': 4})
        cnx.del_session_data('data')
        cnx.del_session_data('whatever')
        self.assertEquals(cnx.get_session_data('data'), None)
        self.assertEquals(cnx.session_data(), {})
        cnx.session_data()['data'] = 4
        self.assertEquals(cnx.get_session_data('data'), 4)
        self.assertEquals(cnx.session_data(), {'data': 4})

    def test_shared_data_api(self):
        cnx = self.cnx
        self.assertEquals(cnx.get_shared_data('data'), None)
        cnx.set_shared_data('data', 4)
        self.assertEquals(cnx.get_shared_data('data'), 4)
        cnx.get_shared_data('data', pop=True)
        cnx.get_shared_data('whatever', pop=True)
        self.assertEquals(cnx.get_shared_data('data'), None)
        cnx.set_shared_data('data', 4)
        self.assertEquals(cnx.get_shared_data('data'), 4)
        self.restore_connection() # proper way to close cnx
        self.assertRaises(ConnectionError, cnx.check)
        self.assertRaises(ConnectionError, cnx.set_shared_data, 'data', 0)
        self.assertRaises(ConnectionError, cnx.get_shared_data, 'data')


# class DBAPICursorTC(EnvBasedTC):

#     @property
#     def cursor(self):
#         return self.env.cnx.cursor()

#     def test_api(self):
#         cu = self.cursor
#         self.assertEquals(cu.describe(1), (u'EGroup', u'system', None))
#         #cu.close()
#         #self.assertRaises(ConnectionError, cu.describe, 1)

if __name__ == '__main__':
    from logilab.common.testlib import unittest_main
    unittest_main()