diff options
| author | Claude Paroz <claude@2xlibre.net> | 2016-02-15 19:28:49 +0100 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2016-02-16 21:09:16 +0100 |
| commit | 205cafd01ebe0f1c72ef3772a1b3f195387f4c50 (patch) | |
| tree | 52117d2195dc3afabc58134d4095787b71755f3b /tests/postgres_tests | |
| parent | cc7ea1905ddb4ba444b4f358c26b6bd8f1f6c93b (diff) | |
[1.9.x] 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.
Backport of 928c12eb1 from master.
Diffstat (limited to 'tests/postgres_tests')
| -rw-r--r-- | tests/postgres_tests/test_array.py | 6 | ||||
| -rw-r--r-- | tests/postgres_tests/test_hstore.py | 9 | ||||
| -rw-r--r-- | tests/postgres_tests/test_json.py | 6 | ||||
| -rw-r--r-- | tests/postgres_tests/test_ranges.py | 11 |
4 files changed, 25 insertions, 7 deletions
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py index 094a1e2235..fe9c477d4b 100644 --- a/tests/postgres_tests/test_array.py +++ b/tests/postgres_tests/test_array.py @@ -462,17 +462,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 68c54918a1..f60f06c855 100644 --- a/tests/postgres_tests/test_hstore.py +++ b/tests/postgres_tests/test_hstore.py @@ -140,7 +140,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'}) @@ -151,6 +152,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 5620e037b8..7478321245 100644 --- a/tests/postgres_tests/test_ranges.py +++ b/tests/postgres_tests/test_ranges.py @@ -323,6 +323,17 @@ class TestSerialization(TestCase): self.assertEqual(instance.floats, NumericRange(empty=True)) self.assertEqual(instance.bigints, None) + 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): |
