summaryrefslogtreecommitdiff
path: root/tests/postgres_tests/test_operations.py
diff options
context:
space:
mode:
authorFrantisek Holop <fholop@ripe.net>2020-05-22 11:40:34 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-05-27 10:48:44 +0200
commitd693a086def21d843c03ec3f5b5e697ed2463d45 (patch)
tree80e4d994b454d529596f7022607d33c1ad6472c0 /tests/postgres_tests/test_operations.py
parentf3ed42c8ad3757e7238bf2f326532f5b129aa102 (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.py31
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'])