Skip to content

Commit

Permalink
Renamed method get_db_prep_value to get_prep_value
Browse files Browse the repository at this point in the history
Reformat of PR #152, closes issue #151
  • Loading branch information
dmkoch committed Mar 7, 2017
1 parent 9227ac7 commit 98189fc
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 1 deletion.
2 changes: 1 addition & 1 deletion jsonfield/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ def to_python(self, value):
is still necessary for Django's deserializer"""
return value

def get_db_prep_value(self, value, connection, prepared=False):
def get_prep_value(self, value):
"""Convert JSON object to a string"""
if self.null and value is None:
return None
Expand Down
61 changes: 61 additions & 0 deletions jsonfield/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
except ImportError:
from django.forms.util import ValidationError

from django.utils.six import string_types

from collections import OrderedDict


Expand Down Expand Up @@ -309,3 +311,62 @@ def test_blank_form(self):
def test_form_with_data(self):
form = JsonNotRequiredForm(data={'json': '{}'})
self.assertTrue(form.has_changed())


class TestFieldAPIMethods(TestCase):
def test_get_db_prep_value_method_with_null(self):
json_field_instance = JSONField(null=True)
value = {'a': 1}
prepared_value = json_field_instance.get_db_prep_value(
value, connection=None, prepared=False)
self.assertIsInstance(prepared_value, string_types)
self.assertDictEqual(value, json.loads(prepared_value))
self.assertIs(json_field_instance.get_db_prep_value(
None, connection=None, prepared=True), None)
self.assertIs(json_field_instance.get_db_prep_value(
None, connection=None, prepared=False), None)

def test_get_db_prep_value_method_with_not_null(self):
json_field_instance = JSONField(null=False)
value = {'a': 1}
prepared_value = json_field_instance.get_db_prep_value(
value, connection=None, prepared=False)
self.assertIsInstance(prepared_value, string_types)
self.assertDictEqual(value, json.loads(prepared_value))
self.assertIs(json_field_instance.get_db_prep_value(
None, connection=None, prepared=True), None)
self.assertEqual(json_field_instance.get_db_prep_value(
None, connection=None, prepared=False), 'null')

def test_get_db_prep_value_method_skips_prepared_values(self):
json_field_instance = JSONField(null=False)
value = {'a': 1}
prepared_value = json_field_instance.get_db_prep_value(
value, connection=None, prepared=True)
self.assertIs(prepared_value, value)

def test_get_prep_value_always_json_dumps_if_not_null(self):
json_field_instance = JSONField(null=False)
value = {'a': 1}
prepared_value = json_field_instance.get_prep_value(value)
self.assertIsInstance(prepared_value, string_types)
self.assertDictEqual(value, json.loads(prepared_value))
already_json = json.dumps(value)
double_prepared_value = json_field_instance.get_prep_value(
already_json)
self.assertDictEqual(value,
json.loads(json.loads(double_prepared_value)))
self.assertEqual(json_field_instance.get_prep_value(None), 'null')

def test_get_prep_value_can_return_none_if_null(self):
json_field_instance = JSONField(null=True)
value = {'a': 1}
prepared_value = json_field_instance.get_prep_value(value)
self.assertIsInstance(prepared_value, string_types)
self.assertDictEqual(value, json.loads(prepared_value))
already_json = json.dumps(value)
double_prepared_value = json_field_instance.get_prep_value(
already_json)
self.assertDictEqual(value,
json.loads(json.loads(double_prepared_value)))
self.assertIs(json_field_instance.get_prep_value(None), None)

0 comments on commit 98189fc

Please sign in to comment.