# Path: tests/models.py
# class JsonTestModel(models.Model):
#     json_1 = JSONField()  # default=None
#     json_2 = JSONField(default=[])
#     json_3 = JSONField(default={})
#     json_4 = JSONField(default=get_default)
#     json_5 = JSONField(default={'a': 1})
# 
#     json_6 = JSONCharField(max_length=255)  # default=None
#     json_7 = JSONCharField(max_length=255, default=[])
#     json_8 = JSONCharField(max_length=255, default={})
#     json_9 = JSONCharField(max_length=255, default=get_default)
#     json_10 = JSONCharField(max_length=255, default={'a': 1})
# 
#     json_11 = JSONField(use_decimal=True)
#     json_12 = JSONField(null=True)
# 
# def get_default():
#     return [1, 2, 3]


from decimal import Decimal
from django.test import TestCase
from ..models import JsonTestModel, get_default


class TestSendMail(TestCase):
    def test_default(self):
        obj = JsonTestModel()
        self.assertEqual(obj.json_1, None)
        self.assertEqual(obj.json_2, [])
        self.assertEqual(obj.json_3, {})
        self.assertEqual(obj.json_4, get_default())
        self.assertEqual(obj.json_5, {'a': 1})
        self.assertEqual(obj.json_6, None)
        self.assertEqual(obj.json_7, [])
        self.assertEqual(obj.json_8, {})
        self.assertEqual(obj.json_9, get_default())
        self.assertEqual(obj.json_10, {'a': 1})
        self.assertEqual(obj.json_11, None)
        self.assertEqual(obj.json_12, None)

    def test_save_load(self):
        obj1 = JsonTestModel()
        obj1.save()
        obj2 = JsonTestModel.objects.get(pk=obj1.pk)
        for f in ('json_1', 'json_2', 'json_3', 'json_4', 'json_5',
                  'json_6', 'json_7', 'json_8', 'json_9', 'json_10',
                  'json_11', 'json_12'):
            self.assertEqual(getattr(obj1, f), getattr(obj2, f))

    def test_float_and_deciaml(self):
        obj1 = JsonTestModel(json_1=[1.1], json_11=[Decimal('1.1'), 1.2])
        obj1.save()

# Path: tests/models.py
# class JsonTestModel(models.Model):
#     json_1 = JSONField()  # default=None
#     json_2 = JSONField(default=[])
#     json_3 = JSONField(default={})
#     json_4 = JSONField(default=get_default)
#     json_5 = JSONField(default={'a': 1})
# 
#     json_6 = JSONCharField(max_length=255)  # default=None
#     json_7 = JSONCharField(max_length=255, default=[])
#     json_8 = JSONCharField(max_length=255, default={})
#     json_9 = JSONCharField(max_length=255, default=get_default)
#     json_10 = JSONCharField(max_length=255, default={'a': 1})
# 
#     json_11 = JSONField(use_decimal=True)
#     json_12 = JSONField(null=True)
# 
# def get_default():
#     return [1, 2, 3]


# Path: tests/tests/test_jsonfield.py
from decimal import Decimal
from django.test import TestCase
from ..models import JsonTestModel, get_default



class TestSendMail(TestCase):
    def test_default(self):
        obj = JsonTestModel()
        self.assertEqual(obj.json_1, None)
        self.assertEqual(obj.json_2, [])
        self.assertEqual(obj.json_3, {})
        self.assertEqual(obj.json_4, get_default())
        self.assertEqual(obj.json_5, {'a': 1})
        self.assertEqual(obj.json_6, None)
        self.assertEqual(obj.json_7, [])
        self.assertEqual(obj.json_8, {})
        self.assertEqual(obj.json_9, get_default())
        self.assertEqual(obj.json_10, {'a': 1})
        self.assertEqual(obj.json_11, None)
        self.assertEqual(obj.json_12, None)

    def test_save_load(self):
        obj1 = JsonTestModel()
        obj1.save()
        obj2 = JsonTestModel.objects.get(pk=obj1.pk)
        for f in ('json_1', 'json_2', 'json_3', 'json_4', 'json_5',
                  'json_6', 'json_7', 'json_8', 'json_9', 'json_10',
                  'json_11', 'json_12'):
            self.assertEqual(getattr(obj1, f), getattr(obj2, f))

    def test_float_and_deciaml(self):
        obj1 = JsonTestModel(json_1=[1.1], json_11=[Decimal('1.1'), 1.2])
        obj1.save()

        obj2 = JsonTestModel.objects.get(pk=obj1.pk)