1. from django.db import models
    
  2. from django.test import SimpleTestCase
    
  3. 
    
  4. from .models import AutoModel, BigAutoModel, SmallAutoModel
    
  5. from .test_integerfield import (
    
  6.     BigIntegerFieldTests,
    
  7.     IntegerFieldTests,
    
  8.     SmallIntegerFieldTests,
    
  9. )
    
  10. 
    
  11. 
    
  12. class AutoFieldTests(IntegerFieldTests):
    
  13.     model = AutoModel
    
  14.     rel_db_type_class = models.IntegerField
    
  15. 
    
  16. 
    
  17. class BigAutoFieldTests(BigIntegerFieldTests):
    
  18.     model = BigAutoModel
    
  19.     rel_db_type_class = models.BigIntegerField
    
  20. 
    
  21. 
    
  22. class SmallAutoFieldTests(SmallIntegerFieldTests):
    
  23.     model = SmallAutoModel
    
  24.     rel_db_type_class = models.SmallIntegerField
    
  25. 
    
  26. 
    
  27. class AutoFieldInheritanceTests(SimpleTestCase):
    
  28.     def test_isinstance_of_autofield(self):
    
  29.         for field in (models.BigAutoField, models.SmallAutoField):
    
  30.             with self.subTest(field.__name__):
    
  31.                 self.assertIsInstance(field(), models.AutoField)
    
  32. 
    
  33.     def test_issubclass_of_autofield(self):
    
  34.         class MyBigAutoField(models.BigAutoField):
    
  35.             pass
    
  36. 
    
  37.         class MySmallAutoField(models.SmallAutoField):
    
  38.             pass
    
  39. 
    
  40.         tests = [
    
  41.             MyBigAutoField,
    
  42.             MySmallAutoField,
    
  43.             models.BigAutoField,
    
  44.             models.SmallAutoField,
    
  45.         ]
    
  46.         for field in tests:
    
  47.             with self.subTest(field.__name__):
    
  48.                 self.assertTrue(issubclass(field, models.AutoField))