django1/tests/backends/sqlite/test_introspection.py

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