Example #1
0
    def test_setnull_from_child(self):
        a = create_a('child_setnull')
        a.child_setnull.delete()
        self.assertFalse(R.objects.filter(pk=a.child_setnull_id).exists())

        a = A.objects.get(pk=a.pk)
        self.assertEqual(None, a.child_setnull)
Example #2
0
 def test_do_nothing(self):
     # Testing DO_NOTHING is a bit harder: It would raise IntegrityError for a normal model,
     # so we connect to pre_delete and set the fk to a known value.
     replacement_r = R.objects.create()
     def check_do_nothing(sender, **kwargs):
         obj = kwargs['instance']
         obj.donothing_set.update(donothing=replacement_r)
     models.signals.pre_delete.connect(check_do_nothing)
     a = create_a('do_nothing')
     a.donothing.delete()
     a = A.objects.get(pk=a.pk)
     self.assertEqual(replacement_r, a.donothing)
     models.signals.pre_delete.disconnect(check_do_nothing)
Example #3
0
    def test_instance_update(self):
        deleted = []
        related_setnull_sets = []
        def pre_delete(sender, **kwargs):
            obj = kwargs['instance']
            deleted.append(obj)
            if isinstance(obj, R):
                related_setnull_sets.append(list(a.pk for a in obj.setnull_set.all()))

        models.signals.pre_delete.connect(pre_delete)
        a = create_a('update_setnull')
        a.setnull.delete()

        a = create_a('update_cascade')
        a.cascade.delete()

        for obj in deleted:
            self.assertEqual(None, obj.pk)

        for pk_list in related_setnull_sets:
            for a in A.objects.filter(id__in=pk_list):
                self.assertEqual(None, a.setnull)

        models.signals.pre_delete.disconnect(pre_delete)
Example #4
0
 def test_cascade_from_parent(self):
     a = create_a('child')
     R.objects.get(pk=a.child_id).delete()
     self.assertFalse(A.objects.filter(name='child').exists())
     self.assertFalse(RChild.objects.filter(pk=a.child_id).exists())
Example #5
0
 def test_protect(self):
     a = create_a('protect')
     self.assertRaises(IntegrityError, a.protect.delete)
Example #6
0
 def test_cascade_nullable(self):
     a = create_a('cascade_nullable')
     a.cascade_nullable.delete()
     self.assertFalse(A.objects.filter(name='cascade_nullable').exists())
Example #7
0
 def test_setdefault_none(self):
     a = create_a('setdefault_none')
     a.setdefault_none.delete()
     a = A.objects.get(pk=a.pk)
     self.assertEqual(None, a.setdefault_none)
Example #8
0
 def test_setdefault(self):
     a = create_a('setdefault')
     a.setdefault.delete()
     a = A.objects.get(pk=a.pk)
     self.assertEqual(self.DEFAULT, a.setdefault)
Example #9
0
 def test_setnull(self):
     a = create_a('setnull')
     a.setnull.delete()
     a = A.objects.get(pk=a.pk)
     self.assertEqual(None, a.setnull)
Example #10
0
 def test_setvalue(self):
     a = create_a('setvalue')
     a.setvalue.delete()
     a = A.objects.get(pk=a.pk)
     self.assertEqual(self.DEFAULT, a.setvalue)
Example #11
0
 def test_auto_nullable(self):
     a = create_a('auto_nullable')
     a.auto_nullable.delete()
     self.assertFalse(A.objects.filter(name='auto_nullable').exists())