+++ /dev/null
-import unittest
-
-from south.db import db
-from django.db import connection, models
-
-# Create a list of error classes from the various database libraries
-errors = []
-try:
- from psycopg2 import ProgrammingError
- errors.append(ProgrammingError)
-except ImportError:
- pass
-errors = tuple(errors)
-
-class TestOperations(unittest.TestCase):
-
- """
- Tests if the various DB abstraction calls work.
- Can only test a limited amount due to DB differences.
- """
-
- def setUp(self):
- db.debug = False
-
- def test_create(self):
- """
- Test creation and deletion of tables.
- """
- cursor = connection.cursor()
- # It needs to take at least 2 args
- self.assertRaises(TypeError, db.create_table)
- self.assertRaises(TypeError, db.create_table, "test1")
- # Empty tables (i.e. no columns) are not fine, so make at least 1
- db.create_table("test1", [('email_confirmed', models.BooleanField(default=False))])
- db.start_transaction()
- # And should exist
- cursor.execute("SELECT * FROM test1")
- # Make sure we can't do the same query on an empty table
- try:
- cursor.execute("SELECT * FROM nottheretest1")
- self.fail("Non-existent table could be selected!")
- except:
- pass
- # Clear the dirty transaction
- db.rollback_transaction()
- db.start_transaction()
- # Remove the table
- db.delete_table("test1")
- # Make sure it went
- try:
- cursor.execute("SELECT * FROM test1")
- self.fail("Just-deleted table could be selected!")
- except:
- pass
- # Clear the dirty transaction
- db.rollback_transaction()
- db.start_transaction()
- # Try deleting a nonexistent one
- try:
- db.delete_table("nottheretest1")
- self.fail("Non-existent table could be deleted!")
- except:
- pass
- db.rollback_transaction()
-
- def test_rename(self):
- """
- Test column renaming
- """
- cursor = connection.cursor()
- db.create_table("test2", [('spam', models.BooleanField(default=False))])
- db.start_transaction()
- # Make sure we can select the column
- cursor.execute("SELECT spam FROM test2")
- # Rename it
- db.rename_column("test2", "spam", "eggs")
- cursor.execute("SELECT eggs FROM test2")
- try:
- cursor.execute("SELECT spam FROM test2")
- self.fail("Just-renamed column could be selected!")
- except:
- pass
- db.rollback_transaction()
\ No newline at end of file