summaryrefslogtreecommitdiff
path: root/tests/backends
diff options
context:
space:
mode:
authorZackary Troop <zack.tro@gmail.com>2018-04-28 06:01:45 -0400
committerClaude Paroz <claude@2xlibre.net>2018-04-28 12:01:45 +0200
commit30f8642f2e9f4ed64ddb09163e09c1ca073b935a (patch)
tree23073f518acf4aaf95f31ee5a35983988ac798fd /tests/backends
parent6b3d2920438746d260f7d158a91db53450055ae2 (diff)
downloaddjango-30f8642f2e9f4ed64ddb09163e09c1ca073b935a.tar.gz
Fixed #29350 -- Fix get_primary_key_column() method in sqlite3 backend
Thanks Tim Graham and Mariusz Felisiak for the reviews.
Diffstat (limited to 'tests/backends')
-rw-r--r--tests/backends/sqlite/test_introspection.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/backends/sqlite/test_introspection.py b/tests/backends/sqlite/test_introspection.py
new file mode 100644
index 0000000000..1695ee549e
--- /dev/null
+++ b/tests/backends/sqlite/test_introspection.py
@@ -0,0 +1,27 @@
+import unittest
+
+from django.db import connection
+from django.test import TestCase
+
+
+@unittest.skipUnless(connection.vendor == 'sqlite', 'SQLite tests')
+class IntrospectionTests(TestCase):
+ def test_get_primary_key_column(self):
+ """
+ Get the primary key column regardless of whether or not it has
+ quotation.
+ """
+ testable_column_strings = (
+ ('id', 'id'), ('[id]', 'id'), ('`id`', 'id'), ('"id"', 'id'),
+ ('[id col]', 'id col'), ('`id col`', 'id col'), ('"id col"', 'id col')
+ )
+ with connection.cursor() as cursor:
+ for column, expected_string in testable_column_strings:
+ sql = 'CREATE TABLE test_primary (%s int PRIMARY KEY NOT NULL)' % column
+ with self.subTest(column=column):
+ try:
+ cursor.execute(sql)
+ field = connection.introspection.get_primary_key_column(cursor, 'test_primary')
+ self.assertEqual(field, expected_string)
+ finally:
+ cursor.execute('DROP TABLE test_primary')