1
0
mirror of https://github.com/django/django.git synced 2024-11-18 07:26:04 +00:00
django/tests/backends/sqlite/test_introspection.py
Zackary Troop 30f8642f2e Fixed #29350 -- Fix get_primary_key_column() method in sqlite3 backend
Thanks Tim Graham and Mariusz Felisiak for the reviews.
2018-04-28 12:01:45 +02:00

28 lines
1.1 KiB
Python

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')