From fca36f3c9812a779d0b9d0db315dd056f5d75d87 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Tue, 7 Apr 2020 11:58:21 +0200 Subject: [PATCH] Refs #26291 -- Added tests for dumpdata with forward references in natural keys. --- ... => forward_reference_fk_natural_key.json} | 0 ...=> forward_reference_m2m_natural_key.json} | 0 tests/fixtures/tests.py | 38 ++++++++++++++++--- 3 files changed, 33 insertions(+), 5 deletions(-) rename tests/fixtures/fixtures/{forward_reference_fk.json => forward_reference_fk_natural_key.json} (100%) rename tests/fixtures/fixtures/{forward_reference_m2m.json => forward_reference_m2m_natural_key.json} (100%) diff --git a/tests/fixtures/fixtures/forward_reference_fk.json b/tests/fixtures/fixtures/forward_reference_fk_natural_key.json similarity index 100% rename from tests/fixtures/fixtures/forward_reference_fk.json rename to tests/fixtures/fixtures/forward_reference_fk_natural_key.json diff --git a/tests/fixtures/fixtures/forward_reference_m2m.json b/tests/fixtures/fixtures/forward_reference_m2m_natural_key.json similarity index 100% rename from tests/fixtures/fixtures/forward_reference_m2m.json rename to tests/fixtures/fixtures/forward_reference_m2m_natural_key.json diff --git a/tests/fixtures/tests.py b/tests/fixtures/tests.py index cf05717277..a1e9b8ccaf 100644 --- a/tests/fixtures/tests.py +++ b/tests/fixtures/tests.py @@ -788,22 +788,50 @@ class FixtureTransactionTests(DumpDataAssertMixin, TransactionTestCase): ]) -class ForwardReferenceTests(TestCase): - def test_forward_reference_fk(self): - management.call_command('loaddata', 'forward_reference_fk.json', verbosity=0) +class ForwardReferenceTests(DumpDataAssertMixin, TestCase): + def test_forward_reference_fk_natural_key(self): + management.call_command( + 'loaddata', + 'forward_reference_fk_natural_key.json', + verbosity=0, + ) self.assertEqual(NaturalKeyThing.objects.count(), 2) t1, t2 = NaturalKeyThing.objects.all() self.assertEqual(t1.other_thing, t2) self.assertEqual(t2.other_thing, t1) + self._dumpdata_assert( + ['fixtures'], + '[{"model": "fixtures.naturalkeything", ' + '"fields": {"key": "t1", "other_thing": ["t2"], "other_things": []}}, ' + '{"model": "fixtures.naturalkeything", ' + '"fields": {"key": "t2", "other_thing": ["t1"], "other_things": []}}]', + natural_primary_keys=True, + natural_foreign_keys=True, + ) - def test_forward_reference_m2m(self): - management.call_command('loaddata', 'forward_reference_m2m.json', verbosity=0) + def test_forward_reference_m2m_natural_key(self): + management.call_command( + 'loaddata', + 'forward_reference_m2m_natural_key.json', + verbosity=0, + ) self.assertEqual(NaturalKeyThing.objects.count(), 3) t1 = NaturalKeyThing.objects.get_by_natural_key('t1') self.assertQuerysetEqual( t1.other_things.order_by('key'), ['', ''] ) + self._dumpdata_assert( + ['fixtures'], + '[{"model": "fixtures.naturalkeything", ' + '"fields": {"key": "t1", "other_thing": null, "other_things": [["t2"], ["t3"]]}}, ' + '{"model": "fixtures.naturalkeything", ' + '"fields": {"key": "t2", "other_thing": null, "other_things": []}}, ' + '{"model": "fixtures.naturalkeything", ' + '"fields": {"key": "t3", "other_thing": null, "other_things": []}}]', + natural_primary_keys=True, + natural_foreign_keys=True, + ) class CircularReferenceTests(DumpDataAssertMixin, TestCase):