summaryrefslogtreecommitdiff
path: root/tests/othertests/ansi_sql.py
diff options
context:
space:
mode:
authorJason Pellerin <jpellerin@gmail.com>2006-07-11 03:16:28 +0000
committerJason Pellerin <jpellerin@gmail.com>2006-07-11 03:16:28 +0000
commitc0132e88f6cdb6dbaa843e9075ae97419b8709d9 (patch)
tree8395e3fab53129566d2f6e67b2a468da6100eb63 /tests/othertests/ansi_sql.py
parent3e562344abd75f655d7ad17ac65db81f4fd4125e (diff)
[multi-db] Added preliminary drop-table generation to django.db.backends.ansi.sql.SchemaBuilder.
git-svn-id: http://code.djangoproject.com/svn/django/branches/multiple-db-support@3320 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/othertests/ansi_sql.py')
-rw-r--r--tests/othertests/ansi_sql.py109
1 files changed, 73 insertions, 36 deletions
diff --git a/tests/othertests/ansi_sql.py b/tests/othertests/ansi_sql.py
index de12eaf590..f51ba7d0b2 100644
--- a/tests/othertests/ansi_sql.py
+++ b/tests/othertests/ansi_sql.py
@@ -1,52 +1,24 @@
-# For Python 2.3
-if not hasattr(__builtins__, 'set'):
- from sets import Set as set
-
"""
->>> from django.db import models
>>> from django.db.backends.ansi import sql
-# test models
->>> class Car(models.Model):
-... make = models.CharField(maxlength=32)
-... model = models.CharField(maxlength=32)
-... year = models.IntegerField()
-... condition = models.CharField(maxlength=32)
-...
-... class Meta:
-... app_label = 'ansi_sql'
-
->>> class Collector(models.Model):
-... name = models.CharField(maxlength=32)
-... cars = models.ManyToManyField(Car)
-...
-... class Meta:
-... app_label = 'ansi_sql'
-
->>> class Mod(models.Model):
-... car = models.ForeignKey(Car)
-... part = models.CharField(maxlength=32, db_index=True)
-... description = models.TextField()
-...
-... class Meta:
-... app_label = 'ansi_sql'
+# so we can test with a predicatable constraint setting
+>>> real_cnst = Mod._meta.connection_info.backend.supports_constraints
+>>> Mod._meta.connection_info.backend.supports_constraints = True
# generate create sql
>>> builder = sql.SchemaBuilder()
>>> builder.get_create_table(Car)
-([BoundStatement('CREATE TABLE "ansi_sql_car" (...);')], [])
+([BoundStatement('CREATE TABLE "ansi_sql_car" (...);')], {})
>>> builder.models_already_seen
-[<class 'othertests.ansi_sql.Car'>]
+Set([<class 'othertests.ansi_sql.Car'>])
>>> builder.models_already_seen = set()
# test that styles are used
>>> builder.get_create_table(Car, style=mockstyle())
-([BoundStatement('SQL_KEYWORD(CREATE TABLE) SQL_TABLE("ansi_sql_car") (...SQL_FIELD("id")...);')], [])
+([BoundStatement('SQL_KEYWORD(CREATE TABLE) SQL_TABLE("ansi_sql_car") (...SQL_FIELD("id")...);')], {})
# test pending relationships
>>> builder.models_already_seen = set()
->>> real_cnst = Mod._meta.connection_info.backend.supports_constraints
->>> Mod._meta.connection_info.backend.supports_constraints = True
>>> builder.get_create_table(Mod)
([BoundStatement('CREATE TABLE "ansi_sql_mod" (..."car_id" integer NOT NULL,...);')], {<class 'othertests.ansi_sql.Car'>: [BoundStatement('ALTER TABLE "ansi_sql_mod" ADD CONSTRAINT ... FOREIGN KEY ("car_id") REFERENCES "ansi_sql_car" ("id");')]})
>>> builder.models_already_seen = set()
@@ -54,7 +26,6 @@ if not hasattr(__builtins__, 'set'):
([BoundStatement('CREATE TABLE "ansi_sql_car" (...);')], {})
>>> builder.get_create_table(Mod)
([BoundStatement('CREATE TABLE "ansi_sql_mod" (..."car_id" integer NOT NULL REFERENCES "ansi_sql_car" ("id"),...);')], {})
->>> Mod._meta.connection_info.backend.supports_constraints = real_cnst
# test many-many
>>> builder.get_create_table(Collector)
@@ -75,16 +46,82 @@ if not hasattr(__builtins__, 'set'):
>>> builder.get_initialdata_path = othertests_sql
>>> builder.get_initialdata(Car)
[BoundStatement('insert into ansi_sql_car (...)...values (...);')]
+
+# test drop
+>>> builder.get_drop_table(Mod)
+[BoundStatement('DROP TABLE "ansi_sql_mod";')]
+>>> builder.get_drop_table(Mod, cascade=True)
+[BoundStatement('DROP TABLE "ansi_sql_mod";')]
+>>> builder.get_drop_table(Car)
+[BoundStatement('DROP TABLE "ansi_sql_car";')]
+>>> builder.get_drop_table(Car, cascade=True)
+[BoundStatement('DROP TABLE "ansi_sql_car";')]
+
+>>> builder.tables = ['ansi_sql_car', 'ansi_sql_mod', 'ansi_sql_collector']
+>>> Mod._meta.connection_info.backend.supports_constraints = False
+>>> builder.get_drop_table(Car, cascade=True)
+[BoundStatement('DROP TABLE "ansi_sql_car";')]
+>>> Mod._meta.connection_info.backend.supports_constraints = True
+>>> builder.get_drop_table(Car, cascade=True)
+[BoundStatement('ALTER TABLE "ansi_sql_mod" ...'), BoundStatement('DROP TABLE "ansi_sql_car";')]
+>>> builder.get_drop_table(Collector)
+[BoundStatement('DROP TABLE "ansi_sql_collector";')]
+>>> builder.get_drop_table(Collector, cascade=True)
+[BoundStatement('DROP TABLE "ansi_sql_collector_cars";'), BoundStatement('DROP TABLE "ansi_sql_collector";')]
+>>> Mod._meta.connection_info.backend.supports_constraints = real_cnst
+
"""
import os
+from django.db import models
+from django.core.management import install
+
+# For Python 2.3
+if not hasattr(__builtins__, 'set'):
+ from sets import Set as set
+
+
+# test models
+class Car(models.Model):
+ make = models.CharField(maxlength=32)
+ model = models.CharField(maxlength=32)
+ year = models.IntegerField()
+ condition = models.CharField(maxlength=32)
+
+ class Meta:
+ app_label = 'ansi_sql'
+
+
+class Collector(models.Model):
+ name = models.CharField(maxlength=32)
+ cars = models.ManyToManyField(Car)
+
+ class Meta:
+ app_label = 'ansi_sql'
+
+
+class Mod(models.Model):
+ car = models.ForeignKey(Car)
+ part = models.CharField(maxlength=32, db_index=True)
+ description = models.TextField()
+
+ class Meta:
+ app_label = 'ansi_sql'
+
-# mock style that wraps text in STYLE(text), for testing
class mockstyle:
+ """mock style that wraps text in STYLE(text), for testing"""
def __getattr__(self, attr):
if attr in ('ERROR', 'ERROR_OUTPUT', 'SQL_FIELD', 'SQL_COLTYPE',
'SQL_KEYWORD', 'SQL_TABLE'):
return lambda text: "%s(%s)" % (attr, text)
+
def othertests_sql(mod):
"""Look in othertests/sql for sql initialdata"""
return os.path.normpath(os.path.join(os.path.dirname(__file__), 'sql'))
+
+
+# install my stuff
+Car.objects.install()
+Collector.objects.install()
+Mod.objects.install()