diff options
author | Tim Graham <timograham@gmail.com> | 2015-02-10 10:07:44 -0500 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-02-11 10:29:54 -0500 |
commit | ad0be620aece4dde2f94383426c284f4afef9fbc (patch) | |
tree | a3539cd1368e540f2022d3f6d351473addce9ffe /tests/gis_tests/gis_migrations/test_commands.py | |
parent | 5ab327a3894c26f57baabe14084bcce2a71b8af8 (diff) | |
download | django-ad0be620aece4dde2f94383426c284f4afef9fbc.tar.gz |
Moved contrib.gis tests out of contrib.
Diffstat (limited to 'tests/gis_tests/gis_migrations/test_commands.py')
-rw-r--r-- | tests/gis_tests/gis_migrations/test_commands.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/gis_tests/gis_migrations/test_commands.py b/tests/gis_tests/gis_migrations/test_commands.py new file mode 100644 index 0000000000..b4fe597bca --- /dev/null +++ b/tests/gis_tests/gis_migrations/test_commands.py @@ -0,0 +1,61 @@ +from __future__ import unicode_literals + +from django.core.management import call_command +from django.db import connection +from django.test import TransactionTestCase, skipUnlessDBFeature + + +@skipUnlessDBFeature("gis_enabled") +class MigrateTests(TransactionTestCase): + """ + Tests running the migrate command in Geodjango. + """ + available_apps = ["gis_tests.gis_migrations"] + + def get_table_description(self, table): + with connection.cursor() as cursor: + return connection.introspection.get_table_description(cursor, table) + + def assertTableExists(self, table): + with connection.cursor() as cursor: + self.assertIn(table, connection.introspection.table_names(cursor)) + + def assertTableNotExists(self, table): + with connection.cursor() as cursor: + self.assertNotIn(table, connection.introspection.table_names(cursor)) + + def test_migrate_gis(self): + """ + Tests basic usage of the migrate command when a model uses Geodjango + fields. Regression test for ticket #22001: + https://code.djangoproject.com/ticket/22001 + + It's also used to showcase an error in migrations where spatialite is + enabled and geo tables are renamed resulting in unique constraint + failure on geometry_columns. Regression for ticket #23030: + https://code.djangoproject.com/ticket/23030 + """ + # Make sure the right tables exist + self.assertTableExists("gis_migrations_neighborhood") + self.assertTableExists("gis_migrations_household") + self.assertTableExists("gis_migrations_family") + # Unmigrate everything + call_command("migrate", "gis_migrations", "zero", verbosity=0) + # Make sure it's all gone + self.assertTableNotExists("gis_migrations_neighborhood") + self.assertTableNotExists("gis_migrations_household") + self.assertTableNotExists("gis_migrations_family") + # Even geometry columns metadata + try: + GeoColumn = connection.ops.geometry_columns() + except NotImplementedError: + # Not all GIS backends have geometry columns model + pass + else: + self.assertEqual( + GeoColumn.objects.filter( + **{'%s__in' % GeoColumn.table_name_col(): ["gis_neighborhood", "gis_household"]} + ).count(), + 0) + # Revert the "unmigration" + call_command("migrate", "gis_migrations", verbosity=0) |