summaryrefslogtreecommitdiff
path: root/tests/inspectdb
diff options
context:
space:
mode:
authorsage <laymonage@gmail.com>2019-06-09 07:56:37 +0700
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-05-08 07:23:31 +0200
commit6789ded0a6ab797f0dcdfa6ad5d1cfa46e23abcd (patch)
tree1de598fc92480c64835b60b6ddbb461c3cd2e864 /tests/inspectdb
parentf97f71f59249f1fbeebe84d4fc858d70fc456f7d (diff)
downloaddjango-6789ded0a6ab797f0dcdfa6ad5d1cfa46e23abcd.tar.gz
Fixed #12990, Refs #27694 -- Added JSONField model field.
Thanks to Adam Johnson, Carlton Gibson, Mariusz Felisiak, and Raphael Michel for mentoring this Google Summer of Code 2019 project and everyone else who helped with the patch. Special thanks to Mads Jensen, Nick Pope, and Simon Charette for extensive reviews. Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
Diffstat (limited to 'tests/inspectdb')
-rw-r--r--tests/inspectdb/models.py11
-rw-r--r--tests/inspectdb/tests.py9
2 files changed, 20 insertions, 0 deletions
diff --git a/tests/inspectdb/models.py b/tests/inspectdb/models.py
index 8a48031b24..d0076ce94f 100644
--- a/tests/inspectdb/models.py
+++ b/tests/inspectdb/models.py
@@ -68,6 +68,17 @@ class ColumnTypes(models.Model):
uuid_field = models.UUIDField()
+class JSONFieldColumnType(models.Model):
+ json_field = models.JSONField()
+ null_json_field = models.JSONField(blank=True, null=True)
+
+ class Meta:
+ required_db_features = {
+ 'can_introspect_json_field',
+ 'supports_json_field',
+ }
+
+
class UniqueTogether(models.Model):
field1 = models.IntegerField()
field2 = models.CharField(max_length=10)
diff --git a/tests/inspectdb/tests.py b/tests/inspectdb/tests.py
index 6e3f4b8aa6..afe89e0dda 100644
--- a/tests/inspectdb/tests.py
+++ b/tests/inspectdb/tests.py
@@ -85,6 +85,15 @@ class InspectDBTestCase(TestCase):
elif not connection.features.interprets_empty_strings_as_nulls:
assertFieldType('uuid_field', "models.CharField(max_length=32)")
+ @skipUnlessDBFeature('can_introspect_json_field', 'supports_json_field')
+ def test_json_field(self):
+ out = StringIO()
+ call_command('inspectdb', 'inspectdb_jsonfieldcolumntype', stdout=out)
+ output = out.getvalue()
+ if not connection.features.interprets_empty_strings_as_nulls:
+ self.assertIn('json_field = models.JSONField()', output)
+ self.assertIn('null_json_field = models.JSONField(blank=True, null=True)', output)
+
def test_number_field_types(self):
"""Test introspection of various Django field types"""
assertFieldType = self.make_field_type_asserter()