Refs #29522 -- Improved test coverage of deserializers.

This commit is contained in:
Amir Karimi 2024-09-12 10:55:24 +02:00 committed by Sarah Boyce
parent f4813211e2
commit b2501759eb
4 changed files with 62 additions and 6 deletions

View File

@ -0,0 +1,3 @@
{"pk": "1", "model": "fixtures_regress.animal", "fields": {"name": "Eagle", "latin_name": "Aquila", "count": 3, "weight": 1.2}}

View File

@ -0,0 +1,2 @@
{"pk": "1", "model": "fixtures_regress.animal", "fields": {"name": "Eagle", "extra_name": "Super Eagle", "latin_name": "Aquila", "count": 3, "weight": 1.2}}
{"pk": "1", "model": "fixtures_regress.animal_extra", "fields": {"name": "Nonexistent model", "extra_name": "test for ticket #29522", "latin_name": "Aquila", "count": 3, "weight": 1.2}}

View File

@ -0,0 +1,17 @@
- pk: "1"
model: fixtures_regress.animal
fields:
name: Cat
extra_name: Super Cat
latin_name: Felis catus
count: 3
weight: 1.2
- pk: "1"
model: fixtures_regress.animal_extra
fields:
name: Nonexistent model
extra_name: test for ticket \#29522
latin_name: Felis catus
count: 3
weight: 1.2

View File

@ -96,12 +96,20 @@ class TestFixtures(TestCase):
the serialized data for fields that have been removed
from the database when not ignored.
"""
with self.assertRaises(DeserializationError):
management.call_command(
"loaddata",
"sequence_extra",
verbosity=0,
)
for fixture_file in (
"sequence_extra",
"sequence_extra_jsonl",
"sequence_extra_yaml",
):
with (
self.subTest(fixture_file=fixture_file),
self.assertRaises(DeserializationError),
):
management.call_command(
"loaddata",
fixture_file,
verbosity=0,
)
def test_loaddata_not_found_fields_ignore(self):
"""
@ -130,6 +138,32 @@ class TestFixtures(TestCase):
)
self.assertEqual(Animal.specimens.all()[0].name, "Wolf")
def test_loaddata_not_found_fields_ignore_jsonl(self):
management.call_command(
"loaddata",
"sequence_extra_jsonl",
ignore=True,
verbosity=0,
)
self.assertEqual(Animal.specimens.all()[0].name, "Eagle")
def test_loaddata_not_found_fields_ignore_yaml(self):
management.call_command(
"loaddata",
"sequence_extra_yaml",
ignore=True,
verbosity=0,
)
self.assertEqual(Animal.specimens.all()[0].name, "Cat")
def test_loaddata_empty_lines_jsonl(self):
management.call_command(
"loaddata",
"sequence_empty_lines_jsonl.jsonl",
verbosity=0,
)
self.assertEqual(Animal.specimens.all()[0].name, "Eagle")
@skipIfDBFeature("interprets_empty_strings_as_nulls")
def test_pretty_print_xml(self):
"""