from django.db import models from django.test import SimpleTestCase from .models import AutoModel, BigAutoModel, SmallAutoModel from .test_integerfield import ( BigIntegerFieldTests, IntegerFieldTests, SmallIntegerFieldTests, ) class AutoFieldTests(IntegerFieldTests): model = AutoModel rel_db_type_class = models.IntegerField class BigAutoFieldTests(BigIntegerFieldTests): model = BigAutoModel rel_db_type_class = models.BigIntegerField class SmallAutoFieldTests(SmallIntegerFieldTests): model = SmallAutoModel rel_db_type_class = models.SmallIntegerField class AutoFieldInheritanceTests(SimpleTestCase): def test_isinstance_of_autofield(self): for field in (models.BigAutoField, models.SmallAutoField): with self.subTest(field.__name__): self.assertIsInstance(field(), models.AutoField) def test_issubclass_of_autofield(self): class MyBigAutoField(models.BigAutoField): pass class MySmallAutoField(models.SmallAutoField): pass tests = [ MyBigAutoField, MySmallAutoField, models.BigAutoField, models.SmallAutoField, ] for field in tests: with self.subTest(field.__name__): self.assertTrue(issubclass(field, models.AutoField))