3
from django.test import TestCase as DjangoTestCase
4
from django.utils import unittest
6
from jsonfield.tests.jsonfield_test_app.models import *
7
from jsonfield.fields import JSONField
9
class JSONFieldTest(DjangoTestCase):
10
def test_json_field(self):
11
obj = JSONFieldTestModel(json='''{
14
self.assertEquals(obj.json, {'spam':'eggs'})
16
def test_json_field_empty(self):
17
obj = JSONFieldTestModel(json='')
18
self.assertEquals(obj.json, None)
20
def test_json_field_save(self):
21
JSONFieldTestModel.objects.create(
27
obj2 = JSONFieldTestModel.objects.get(id=10)
28
self.assertEquals(obj2.json, {'spam':'eggs'})
30
def test_json_field_save_empty(self):
31
JSONFieldTestModel.objects.create(id=10, json='')
32
obj2 = JSONFieldTestModel.objects.get(id=10)
33
self.assertEquals(obj2.json, None)
35
def test_db_prep_save(self):
36
field = JSONField(u"test")
37
field.set_attributes_from_name("json")
38
self.assertEquals(None, field.get_db_prep_save(None, connection=None))
39
self.assertEquals('{"spam": "eggs"}', field.get_db_prep_save({"spam": "eggs"}, connection=None))
41
def test_formfield(self):
42
from jsonfield.forms import JSONFormField
43
from jsonfield.widgets import JSONWidget
44
field = JSONField(u"test")
45
field.set_attributes_from_name("json")
46
formfield = field.formfield()
47
self.assertEquals(type(formfield), JSONFormField)
48
self.assertEquals(type(formfield.widget), JSONWidget)
50
def test_default_value(self):
51
obj = JSONFieldWithDefaultTestModel.objects.create()
52
obj = JSONFieldWithDefaultTestModel.objects.get(id=obj.id)
53
self.assertEquals(obj.json, {'sukasuka': 'YAAAAAZ'})
55
def test_query_object(self):
56
JSONFieldTestModel.objects.create(json={})
57
JSONFieldTestModel.objects.create(json={'foo':'bar'})
58
self.assertEquals(2, JSONFieldTestModel.objects.all().count())
59
self.assertEquals(1, JSONFieldTestModel.objects.exclude(json={}).count())
60
self.assertEquals(1, JSONFieldTestModel.objects.filter(json={}).count())
61
self.assertEquals(1, JSONFieldTestModel.objects.filter(json={'foo':'bar'}).count())
62
self.assertEquals(1, JSONFieldTestModel.objects.filter(json__contains={'foo':'bar'}).count())
63
JSONFieldTestModel.objects.create(json={'foo':'bar', 'baz':'bing'})
64
self.assertEquals(2, JSONFieldTestModel.objects.filter(json__contains={'foo':'bar'}).count())
65
self.assertEquals(1, JSONFieldTestModel.objects.filter(json__contains={'baz':'bing', 'foo':'bar'}).count())
66
self.assertEquals(2, JSONFieldTestModel.objects.filter(json__contains='foo').count())
67
# This code needs to be implemented!
68
self.assertRaises(TypeError, lambda:JSONFieldTestModel.objects.filter(json__contains=['baz', 'foo']))
70
def test_query_isnull(self):
71
JSONFieldTestModel.objects.create(json=None)
72
JSONFieldTestModel.objects.create(json={})
73
JSONFieldTestModel.objects.create(json={'foo':'bar'})
75
self.assertEquals(1, JSONFieldTestModel.objects.filter(json=None).count())
76
self.assertEquals(None, JSONFieldTestModel.objects.get(json=None).json)
78
def test_jsonfield_blank(self):
79
BlankJSONFieldTestModel.objects.create(blank_json='', null_json=None)
80
obj = BlankJSONFieldTestModel.objects.get()
81
self.assertEquals(None, obj.null_json)
82
self.assertEquals("", obj.blank_json)
84
obj = BlankJSONFieldTestModel.objects.get()
85
self.assertEquals(None, obj.null_json)
86
self.assertEquals("", obj.blank_json)