old_contents: from django.db import DEFAULT_DB_ALIAS
  from django.test import TestCase
  
  from djadmin2.utils import NestedObjects
  
  from ..models import Count, Event, EventGuide, Guest, Location
  
  
  class NestedObjectsTests(TestCase):
      """
      Tests for ``NestedObject`` utility collection.
  
      This is adopted from the Django core. django-admin2 mandates that code
      doesn't depend on imports from django.contrib.admin.
  
      https://github.com/django/django/blob/1.5.1/tests/regressiontests/admin_util/tests.py
      """
      def setUp(self):
          self.n = NestedObjects(using=DEFAULT_DB_ALIAS)
          self.objs = [Count.objects.create(num=i) for i in range(5)]
  
      def _check(self, target):
          self.assertEqual(self.n.nested(lambda obj: obj.num), target)
  
      def _connect(self, i, j):
          self.objs[i].parent = self.objs[j]
          self.objs[i].save()
  
      def _collect(self, *indices):
          self.n.collect([self.objs[i] for i in indices])
  
      def test_unrelated_roots(self):
          self._connect(2, 1)
          self._collect(0)
          self._collect(1)
          self._check([0, 1, [2]])
  
      def test_siblings(self):
          self._connect(1, 0)
          self._connect(2, 0)
          self._collect(0)
          self._check([0, [1, 2]])
  
      def test_non_added_parent(self):
          self._connect(0, 1)
          self._collect(0)
          self._check([0])
  
      def test_cyclic(self):
          self._connect(0, 2)
          self._connect(1, 0)
          self._connect(2, 1)
          self._collect(0)
          self._check([0, [1, [2]]])
  
      def test_queries(self):
          self._connect(1, 0)
          self._connect(2, 0)
          # 1 query to fetch all children of 0 (1 and 2)
          # 1 query to fetch all children of 1 and 2 (none)
          # Should not require additional queries to populate the nested graph.
          self.assertNumQueries(2, self._collect, 0)
  
      def test_on_delete_do_nothing(self):
          """
          Check that the nested collector doesn't query for DO_NOTHING objects.
          """
          objs = [Event.objects.create()]
          n = NestedObjects(using=None)
          EventGuide.objects.create(event=objs[0])
          with self.assertNumQueries(2):
              # One for Location, one for Guest, and no query for EventGuide
              n.collect(objs)
  
new_contents: from django.db import DEFAULT_DB_ALIAS, router
  from django.test import TestCase
  
  from djadmin2.utils import NestedObjects
  
  from ..models import Count, Event, EventGuide, Guest, Location
  
  
  class NestedObjectsTests(TestCase):
      """
      Tests for ``NestedObject`` utility collection.
  
      This is adopted from the Django core. django-admin2 mandates that code
      doesn't depend on imports from django.contrib.admin.
  
      https://github.com/django/django/blob/1.5.1/tests/regressiontests/admin_util/tests.py
      """
      def setUp(self):
          self.n = NestedObjects(using=DEFAULT_DB_ALIAS)
          self.objs = [Count.objects.create(num=i) for i in range(5)]
  
      def _check(self, target):
          self.assertEqual(self.n.nested(lambda obj: obj.num), target)
  
      def _connect(self, i, j):
          self.objs[i].parent = self.objs[j]
          self.objs[i].save()
  
      def _collect(self, *indices):
          self.n.collect([self.objs[i] for i in indices])
  
      def test_unrelated_roots(self):
          self._connect(2, 1)
          self._collect(0)
          self._collect(1)
          self._check([0, 1, [2]])
  
      def test_siblings(self):
          self._connect(1, 0)
          self._connect(2, 0)
          self._collect(0)
          self._check([0, [1, 2]])
  
      def test_non_added_parent(self):
          self._connect(0, 1)
          self._collect(0)
          self._check([0])
  
      def test_cyclic(self):
          self._connect(0, 2)
          self._connect(1, 0)
          self._connect(2, 1)
          self._collect(0)
          self._check([0, [1, [2]]])
  
      def test_queries(self):
          self._connect(1, 0)
          self._connect(2, 0)
          # 1 query to fetch all children of 0 (1 and 2)
          # 1 query to fetch all children of 1 and 2 (none)
          # Should not require additional queries to populate the nested graph.
          self.assertNumQueries(2, self._collect, 0)
  
      def test_on_delete_do_nothing(self):
          """
          Check that the nested collector doesn't query for DO_NOTHING objects.
          """
          objs = [Event.objects.create()]
          using = router.db_for_write(Event._meta.model)
          n = NestedObjects(using=using)
          EventGuide.objects.create(event=objs[0])
          with self.assertNumQueries(2):
              # One for Location, one for Guest, and no query for EventGuide
              n.collect(objs)
  
subject: Fix nested object test