From f693a96422388cedba20894583eab8a169757cde Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Fri, 26 Apr 2019 12:21:51 +0200 Subject: [PATCH] Fixed #11929 -- Make sure YAML output order is helpful By adopting Python 3.6+, this was already ensured, but this test makes sure we'll have no regression. --- tests/serializers/test_yaml.py | 70 +++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 22 deletions(-) diff --git a/tests/serializers/test_yaml.py b/tests/serializers/test_yaml.py index 10f73901cb8a5..175a2ab75ef7a 100644 --- a/tests/serializers/test_yaml.py +++ b/tests/serializers/test_yaml.py @@ -85,29 +85,29 @@ def test_dumpdata_pyyaml_error_message(self): @unittest.skipUnless(HAS_YAML, "No yaml library detected") class YamlSerializerTestCase(SerializersTestBase, TestCase): serializer_name = "yaml" - fwd_ref_str = """- fields: + fwd_ref_str = """- model: serializers.article + pk: 1 + fields: headline: Forward references pose no problem pub_date: 2006-06-16 15:00:00 categories: [1] author: 1 +- model: serializers.category pk: 1 - model: serializers.article -- fields: + fields: name: Reference +- model: serializers.author pk: 1 - model: serializers.category -- fields: - name: Agnes - pk: 1 - model: serializers.author""" + fields: + name: Agnes""" - pkless_str = """- fields: - name: Reference + pkless_str = """- model: serializers.category pk: null - model: serializers.category -- fields: - name: Non-fiction - model: serializers.category""" + fields: + name: Reference +- model: serializers.category + fields: + name: Non-fiction""" mapping_ordering_str = """- model: serializers.article pk: %(article_pk)s @@ -159,22 +159,48 @@ def test_yaml_deserializer_exception(self): for obj in serializers.deserialize("yaml", "{"): pass + def test_yaml_output_ordering(self): + """Output is in the expected order of model, pk, fields.""" + from .models import Article + serial_str = serializers.serialize(self.serializer_name, Article.objects.all()) + self.assertEqual(serial_str, """- model: serializers.article + pk: 1 + fields: + author: 2 + headline: Poker has no place on ESPN + pub_date: 2006-06-16 11:00:00 + categories: + - 3 + - 1 + meta_data: [] +- model: serializers.article + pk: 2 + fields: + author: 1 + headline: Time to reform copyright + pub_date: 2006-06-16 13:00:11.000345 + categories: + - 2 + - 3 + meta_data: [] +""") + @unittest.skipUnless(HAS_YAML, "No yaml library detected") class YamlSerializerTransactionTestCase(SerializersTransactionTestBase, TransactionTestCase): serializer_name = "yaml" - fwd_ref_str = """- fields: + fwd_ref_str = """- model: serializers.article + pk: 1 + fields: headline: Forward references pose no problem pub_date: 2006-06-16 15:00:00 categories: [1] author: 1 +- model: serializers.category pk: 1 - model: serializers.article -- fields: + fields: name: Reference +- model: serializers.author pk: 1 - model: serializers.category -- fields: - name: Agnes - pk: 1 - model: serializers.author""" + fields: + name: Agnes"""