1. from io import StringIO
    
  2. 
    
  3. from django.core.management import call_command
    
  4. from django.test.utils import modify_settings
    
  5. 
    
  6. from . import PostgreSQLTestCase
    
  7. 
    
  8. 
    
  9. @modify_settings(INSTALLED_APPS={"append": "django.contrib.postgres"})
    
  10. class InspectDBTests(PostgreSQLTestCase):
    
  11.     def assertFieldsInModel(self, model, field_outputs):
    
  12.         out = StringIO()
    
  13.         call_command(
    
  14.             "inspectdb",
    
  15.             table_name_filter=lambda tn: tn.startswith(model),
    
  16.             stdout=out,
    
  17.         )
    
  18.         output = out.getvalue()
    
  19.         for field_output in field_outputs:
    
  20.             self.assertIn(field_output, output)
    
  21. 
    
  22.     def test_range_fields(self):
    
  23.         self.assertFieldsInModel(
    
  24.             "postgres_tests_rangesmodel",
    
  25.             [
    
  26.                 "ints = django.contrib.postgres.fields.IntegerRangeField(blank=True, "
    
  27.                 "null=True)",
    
  28.                 "bigints = django.contrib.postgres.fields.BigIntegerRangeField("
    
  29.                 "blank=True, null=True)",
    
  30.                 "decimals = django.contrib.postgres.fields.DecimalRangeField("
    
  31.                 "blank=True, null=True)",
    
  32.                 "timestamps = django.contrib.postgres.fields.DateTimeRangeField("
    
  33.                 "blank=True, null=True)",
    
  34.                 "dates = django.contrib.postgres.fields.DateRangeField(blank=True, "
    
  35.                 "null=True)",
    
  36.             ],
    
  37.         )