summaryrefslogtreecommitdiff
path: root/tests/postgres_tests
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2016-02-15 19:28:49 +0100
committerClaude Paroz <claude@2xlibre.net>2016-02-16 21:07:05 +0100
commit928c12eb1a75dbcab22b64f8cf0afb17389c20d2 (patch)
treeb8f20f14e121e816772056d639a6a14f60adffe8 /tests/postgres_tests
parentb09b71bf3468c67a9c08654e7aa8b99efe59ebee (diff)
Fixed #26215 -- Fixed RangeField/ArrayField serialization with None values
Also added tests for HStoreField and JSONField. Thanks Aleksey Bukin for the report and Tim Graham for the initial patch and the review.
Diffstat (limited to 'tests/postgres_tests')
-rw-r--r--tests/postgres_tests/test_array.py6
-rw-r--r--tests/postgres_tests/test_hstore.py9
-rw-r--r--tests/postgres_tests/test_json.py6
-rw-r--r--tests/postgres_tests/test_ranges.py11
4 files changed, 25 insertions, 7 deletions
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py
index 24a47db1d7..5df25c1c0f 100644
--- a/tests/postgres_tests/test_array.py
+++ b/tests/postgres_tests/test_array.py
@@ -448,17 +448,17 @@ class TestMigrations(TransactionTestCase):
class TestSerialization(PostgreSQLTestCase):
test_data = (
- '[{"fields": {"field": "[\\"1\\", \\"2\\"]"}, "model": "postgres_tests.integerarraymodel", "pk": null}]'
+ '[{"fields": {"field": "[\\"1\\", \\"2\\", null]"}, "model": "postgres_tests.integerarraymodel", "pk": null}]'
)
def test_dumping(self):
- instance = IntegerArrayModel(field=[1, 2])
+ instance = IntegerArrayModel(field=[1, 2, None])
data = serializers.serialize('json', [instance])
self.assertEqual(json.loads(data), json.loads(self.test_data))
def test_loading(self):
instance = list(serializers.deserialize('json', self.test_data))[0].object
- self.assertEqual(instance.field, [1, 2])
+ self.assertEqual(instance.field, [1, 2, None])
class TestValidation(PostgreSQLTestCase):
diff --git a/tests/postgres_tests/test_hstore.py b/tests/postgres_tests/test_hstore.py
index 13c08386e2..8ebd757098 100644
--- a/tests/postgres_tests/test_hstore.py
+++ b/tests/postgres_tests/test_hstore.py
@@ -165,7 +165,8 @@ class TestQuerying(PostgreSQLTestCase):
class TestSerialization(PostgreSQLTestCase):
- test_data = '[{"fields": {"field": "{\\"a\\": \\"b\\"}"}, "model": "postgres_tests.hstoremodel", "pk": null}]'
+ test_data = ('[{"fields": {"field": "{\\"a\\": \\"b\\"}"}, '
+ '"model": "postgres_tests.hstoremodel", "pk": null}]')
def test_dumping(self):
instance = HStoreModel(field={'a': 'b'})
@@ -176,6 +177,12 @@ class TestSerialization(PostgreSQLTestCase):
instance = list(serializers.deserialize('json', self.test_data))[0].object
self.assertEqual(instance.field, {'a': 'b'})
+ def test_roundtrip_with_null(self):
+ instance = HStoreModel(field={'a': 'b', 'c': None})
+ data = serializers.serialize('json', [instance])
+ new_instance = list(serializers.deserialize('json', data))[0].object
+ self.assertEqual(instance.field, new_instance.field)
+
class TestValidation(PostgreSQLTestCase):
diff --git a/tests/postgres_tests/test_json.py b/tests/postgres_tests/test_json.py
index b4f0dd4ecf..59e5fe3fe7 100644
--- a/tests/postgres_tests/test_json.py
+++ b/tests/postgres_tests/test_json.py
@@ -213,16 +213,16 @@ class TestQuerying(TestCase):
@skipUnlessPG94
class TestSerialization(TestCase):
- test_data = '[{"fields": {"field": {"a": "b"}}, "model": "postgres_tests.jsonmodel", "pk": null}]'
+ test_data = '[{"fields": {"field": {"a": "b", "c": null}}, "model": "postgres_tests.jsonmodel", "pk": null}]'
def test_dumping(self):
- instance = JSONModel(field={'a': 'b'})
+ instance = JSONModel(field={'a': 'b', 'c': None})
data = serializers.serialize('json', [instance])
self.assertJSONEqual(data, self.test_data)
def test_loading(self):
instance = list(serializers.deserialize('json', self.test_data))[0].object
- self.assertEqual(instance.field, {'a': 'b'})
+ self.assertEqual(instance.field, {'a': 'b', 'c': None})
class TestValidation(PostgreSQLTestCase):
diff --git a/tests/postgres_tests/test_ranges.py b/tests/postgres_tests/test_ranges.py
index dd676f96be..692fb54a89 100644
--- a/tests/postgres_tests/test_ranges.py
+++ b/tests/postgres_tests/test_ranges.py
@@ -309,6 +309,17 @@ class TestSerialization(PostgreSQLTestCase):
self.assertEqual(instance.dates, DateRange(self.lower_date, self.upper_date))
self.assertEqual(instance.timestamps, DateTimeTZRange(self.lower_dt, self.upper_dt))
+ def test_serialize_range_with_null(self):
+ instance = RangesModel(ints=NumericRange(None, 10))
+ data = serializers.serialize('json', [instance])
+ new_instance = list(serializers.deserialize('json', data))[0].object
+ self.assertEqual(new_instance.ints, NumericRange(None, 10))
+
+ instance = RangesModel(ints=NumericRange(10, None))
+ data = serializers.serialize('json', [instance])
+ new_instance = list(serializers.deserialize('json', data))[0].object
+ self.assertEqual(new_instance.ints, NumericRange(10, None))
+
class TestValidators(PostgreSQLTestCase):