diff --git a/tests/fixtures_regress/fixtures/sequence_empty_lines_jsonl.jsonl b/tests/fixtures_regress/fixtures/sequence_empty_lines_jsonl.jsonl new file mode 100644 index 00000000000..c8ac372caba --- /dev/null +++ b/tests/fixtures_regress/fixtures/sequence_empty_lines_jsonl.jsonl @@ -0,0 +1,3 @@ + + +{"pk": "1", "model": "fixtures_regress.animal", "fields": {"name": "Eagle", "latin_name": "Aquila", "count": 3, "weight": 1.2}} diff --git a/tests/fixtures_regress/fixtures/sequence_extra_jsonl.jsonl b/tests/fixtures_regress/fixtures/sequence_extra_jsonl.jsonl new file mode 100644 index 00000000000..6644eaf95d1 --- /dev/null +++ b/tests/fixtures_regress/fixtures/sequence_extra_jsonl.jsonl @@ -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}} diff --git a/tests/fixtures_regress/fixtures/sequence_extra_yaml.yaml b/tests/fixtures_regress/fixtures/sequence_extra_yaml.yaml new file mode 100644 index 00000000000..760b2d42751 --- /dev/null +++ b/tests/fixtures_regress/fixtures/sequence_extra_yaml.yaml @@ -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 diff --git a/tests/fixtures_regress/tests.py b/tests/fixtures_regress/tests.py index 54d7cac50ac..ef79c2f3821 100644 --- a/tests/fixtures_regress/tests.py +++ b/tests/fixtures_regress/tests.py @@ -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): """