diff options
| author | Jason Pellerin <jpellerin@gmail.com> | 2006-07-11 03:16:28 +0000 |
|---|---|---|
| committer | Jason Pellerin <jpellerin@gmail.com> | 2006-07-11 03:16:28 +0000 |
| commit | c0132e88f6cdb6dbaa843e9075ae97419b8709d9 (patch) | |
| tree | 8395e3fab53129566d2f6e67b2a468da6100eb63 /tests | |
| parent | 3e562344abd75f655d7ad17ac65db81f4fd4125e (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')
| -rw-r--r-- | tests/othertests/ansi_sql.py | 109 |
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() |
