test/unittest_dbapi.py
changeset 0 b97547f5f1fa
child 1398 5fe84a5f7035
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unittest_dbapi.py	Wed Nov 05 15:52:50 2008 +0100
@@ -0,0 +1,82 @@
+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()