summaryrefslogtreecommitdiff
path: root/tests/backends/postgresql/test_operations.py
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2020-04-15 02:20:46 -0700
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-04-17 09:52:43 +0200
commit8bcca47e8356521f52f0738d9633befd53007cae (patch)
tree016582638af49c6b101db3706791e25938130178 /tests/backends/postgresql/test_operations.py
parenteeab63e57e797c41fa42ffe804927c5f77a0d739 (diff)
downloaddjango-8bcca47e8356521f52f0738d9633befd53007cae.tar.gz
Added test coverage for DatabaseOperations.sql_flush().
Diffstat (limited to 'tests/backends/postgresql/test_operations.py')
-rw-r--r--tests/backends/postgresql/test_operations.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/tests/backends/postgresql/test_operations.py b/tests/backends/postgresql/test_operations.py
new file mode 100644
index 0000000000..b073f688f4
--- /dev/null
+++ b/tests/backends/postgresql/test_operations.py
@@ -0,0 +1,84 @@
+import unittest
+
+from django.core.management.color import no_style
+from django.db import connection
+from django.test import SimpleTestCase
+
+from ..models import Person, Tag
+
+
+@unittest.skipUnless(connection.vendor == 'postgresql', 'PostgreSQL tests.')
+class PostgreSQLOperationsTests(SimpleTestCase):
+ def test_sql_flush(self):
+ self.assertEqual(
+ connection.ops.sql_flush(
+ no_style(),
+ [Person._meta.db_table, Tag._meta.db_table],
+ [],
+ ),
+ ['TRUNCATE "backends_person", "backends_tag";'],
+ )
+
+ def test_sql_flush_allow_cascade(self):
+ self.assertEqual(
+ connection.ops.sql_flush(
+ no_style(),
+ [Person._meta.db_table, Tag._meta.db_table],
+ [],
+ allow_cascade=True,
+ ),
+ ['TRUNCATE "backends_person", "backends_tag" CASCADE;'],
+ )
+
+ def test_sql_flush_sequences(self):
+ sequence_reset_sql = (
+ "SELECT setval(pg_get_serial_sequence('%s','id'), 1, false);"
+ )
+ self.assertEqual(
+ connection.ops.sql_flush(
+ no_style(),
+ [Person._meta.db_table, Tag._meta.db_table],
+ [
+ {
+ 'table': Person._meta.db_table,
+ 'column': Person._meta.pk.db_column,
+ },
+ {
+ 'table': Tag._meta.db_table,
+ 'column': Tag._meta.pk.db_column,
+ },
+ ],
+ ),
+ [
+ 'TRUNCATE "backends_person", "backends_tag";',
+ sequence_reset_sql % '"backends_person"',
+ sequence_reset_sql % '"backends_tag"',
+ ],
+ )
+
+ def test_sql_flush_sequences_allow_cascade(self):
+ sequence_reset_sql = (
+ "SELECT setval(pg_get_serial_sequence('%s','id'), 1, false);"
+ )
+ self.assertEqual(
+ connection.ops.sql_flush(
+ no_style(),
+ [Person._meta.db_table, Tag._meta.db_table],
+ [
+ {
+ 'table': Person._meta.db_table,
+ 'column': Person._meta.pk.db_column,
+ },
+ {
+ 'table': Tag._meta.db_table,
+ 'column': Tag._meta.pk.db_column,
+ },
+ ],
+ allow_cascade=True,
+ ),
+ [
+ 'TRUNCATE "backends_person", "backends_tag" CASCADE;',
+ sequence_reset_sql % '"backends_person"',
+ sequence_reset_sql % '"backends_tag"',
+ ],
+ )