diff options
author | Zackary Troop <zack.tro@gmail.com> | 2018-04-28 06:01:45 -0400 |
---|---|---|
committer | Claude Paroz <claude@2xlibre.net> | 2018-04-28 12:01:45 +0200 |
commit | 30f8642f2e9f4ed64ddb09163e09c1ca073b935a (patch) | |
tree | 23073f518acf4aaf95f31ee5a35983988ac798fd /tests/backends | |
parent | 6b3d2920438746d260f7d158a91db53450055ae2 (diff) | |
download | django-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.py | 27 |
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') |