diff options
| author | Frantisek Holop <fholop@ripe.net> | 2020-05-22 11:40:34 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-05-27 10:48:44 +0200 |
| commit | d693a086def21d843c03ec3f5b5e697ed2463d45 (patch) | |
| tree | 80e4d994b454d529596f7022607d33c1ad6472c0 /tests/postgres_tests/test_operations.py | |
| parent | f3ed42c8ad3757e7238bf2f326532f5b129aa102 (diff) | |
Fixed #31615 -- Made migrations skip extension operations if not needed.
- Don't try to create an existing extension.
- Don't try to drop a nonexistent extension.
Diffstat (limited to 'tests/postgres_tests/test_operations.py')
| -rw-r--r-- | tests/postgres_tests/test_operations.py | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/tests/postgres_tests/test_operations.py b/tests/postgres_tests/test_operations.py index 0a9d8040ef..8cc9a2b66e 100644 --- a/tests/postgres_tests/test_operations.py +++ b/tests/postgres_tests/test_operations.py @@ -12,7 +12,8 @@ from . import PostgreSQLTestCase try: from django.contrib.postgres.operations import ( - AddIndexConcurrently, CreateExtension, RemoveIndexConcurrently, + AddIndexConcurrently, BloomExtension, CreateExtension, + RemoveIndexConcurrently, ) from django.contrib.postgres.indexes import BrinIndex, BTreeIndex except ImportError: @@ -180,9 +181,33 @@ class CreateExtensionTests(PostgreSQLTestCase): with CaptureQueriesContext(connection) as captured_queries: with connection.schema_editor(atomic=False) as editor: operation.database_forwards(self.app_label, editor, project_state, new_state) - self.assertIn('CREATE EXTENSION', captured_queries[0]['sql']) + self.assertEqual(len(captured_queries), 4) + self.assertIn('CREATE EXTENSION', captured_queries[1]['sql']) # Reversal. with CaptureQueriesContext(connection) as captured_queries: with connection.schema_editor(atomic=False) as editor: operation.database_backwards(self.app_label, editor, new_state, project_state) - self.assertIn('DROP EXTENSION', captured_queries[0]['sql']) + self.assertEqual(len(captured_queries), 2) + self.assertIn('DROP EXTENSION', captured_queries[1]['sql']) + + def test_create_existing_extension(self): + operation = BloomExtension() + project_state = ProjectState() + new_state = project_state.clone() + # Don't create an existing extension. + with CaptureQueriesContext(connection) as captured_queries: + with connection.schema_editor(atomic=False) as editor: + operation.database_forwards(self.app_label, editor, project_state, new_state) + self.assertEqual(len(captured_queries), 3) + self.assertIn('SELECT', captured_queries[0]['sql']) + + def test_drop_nonexistent_extension(self): + operation = CreateExtension('tablefunc') + project_state = ProjectState() + new_state = project_state.clone() + # Don't drop a nonexistent extension. + with CaptureQueriesContext(connection) as captured_queries: + with connection.schema_editor(atomic=False) as editor: + operation.database_backwards(self.app_label, editor, project_state, new_state) + self.assertEqual(len(captured_queries), 1) + self.assertIn('SELECT', captured_queries[0]['sql']) |
