|
@@ -414,8 +414,36 @@ def streamTest(format, self):
|
|
self.assertEqual(string_data, stream.getvalue())
|
|
self.assertEqual(string_data, stream.getvalue())
|
|
stream.close()
|
|
stream.close()
|
|
|
|
|
|
|
|
+def naturalKeyTest(format, self):
|
|
|
|
+ book1 = {'isbn13': '978-1590597255', 'title': 'The Definitive Guide to '
|
|
|
|
+ 'Django: Web Development Done Right'}
|
|
|
|
+ book2 = {'isbn13':'978-1590599969', 'title': 'Practical Django Projects'}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ adrian = Book.objects.create(**book1)
|
|
|
|
+ james = Book.objects.create(**book2)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ string_data = serializers.serialize(format, Book.objects.all(), indent=2,
|
|
|
|
+ use_natural_keys=True)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ james.delete()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ books = list(serializers.deserialize(format, string_data))
|
|
|
|
+ self.assertEqual(len(books), 2)
|
|
|
|
+ self.assertEqual(books[0].object.title, book1['title'])
|
|
|
|
+ self.assertEqual(books[0].object.pk, adrian.pk)
|
|
|
|
+ self.assertEqual(books[1].object.title, book2['title'])
|
|
|
|
+ self.assertEqual(books[1].object.pk, None)
|
|
|
|
+
|
|
for format in serializers.get_serializer_formats():
|
|
for format in serializers.get_serializer_formats():
|
|
setattr(SerializerTests, 'test_' + format + '_serializer', curry(serializerTest, format))
|
|
setattr(SerializerTests, 'test_' + format + '_serializer', curry(serializerTest, format))
|
|
setattr(SerializerTests, 'test_' + format + '_serializer_fields', curry(fieldsTest, format))
|
|
setattr(SerializerTests, 'test_' + format + '_serializer_fields', curry(fieldsTest, format))
|
|
|
|
+ setattr(SerializerTests, 'test_' + format + '_serializer_natural_key',
|
|
|
|
+ curry(naturalKeyTest, format))
|
|
if format != 'python':
|
|
if format != 'python':
|
|
setattr(SerializerTests, 'test_' + format + '_serializer_stream', curry(streamTest, format))
|
|
setattr(SerializerTests, 'test_' + format + '_serializer_stream', curry(streamTest, format))
|