summaryrefslogtreecommitdiff
path: root/tests/backends/postgresql/test_operations.py
diff options
context:
space:
mode:
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"',
+ ],
+ )