simplify tests
This commit is contained in:
parent
f49d7be00f
commit
5cdd9c6cdd
|
|
@ -403,37 +403,8 @@ class CircuitTerminationChangeLoggingTestCase(TestCase):
|
|||
self.assertEqual(changes[1].postchange_data['termination_z'], termination.pk)
|
||||
|
||||
@tag('regression') # Ref: #23134
|
||||
def test_redundant_pointer_write_is_skipped(self):
|
||||
# bulk_create() bypasses save(), leaving the pointer unwritten; moving the termination
|
||||
# afterwards reaches the clear path with it already null
|
||||
CircuitTermination.objects.bulk_create([
|
||||
CircuitTermination(circuit=self.circuits[0], term_side='A', termination=self.sites[0]),
|
||||
])
|
||||
termination = CircuitTermination.objects.get(circuit=self.circuits[0], term_side='A')
|
||||
|
||||
def _move():
|
||||
termination.circuit = self.circuits[1]
|
||||
termination.save()
|
||||
|
||||
old_circuit_last_updated = Circuit.objects.get(pk=self.circuits[0].pk).last_updated
|
||||
|
||||
self._tracked(_move)
|
||||
|
||||
# The old circuit's pointer was already null, so it is not written to
|
||||
self.assertFalse(self._circuit_changes(self.circuits[0]).exists())
|
||||
self.assertEqual(
|
||||
Circuit.objects.get(pk=self.circuits[0].pk).last_updated, old_circuit_last_updated
|
||||
)
|
||||
|
||||
# The new circuit's pointer is set as usual
|
||||
new_changes = self._circuit_changes(self.circuits[1])
|
||||
self.assertEqual(new_changes.count(), 1)
|
||||
self.assertEqual(new_changes[0].postchange_data['termination_a'], termination.pk)
|
||||
|
||||
@tag('regression') # Ref: #23134
|
||||
def test_new_termination_does_not_clear_sibling_pointer(self):
|
||||
# __init__ captures the originals from the constructor kwargs, so mutating term_side
|
||||
# before the first save reaches the clear path with originals naming a live sibling
|
||||
def test_creation_leaves_another_terminations_pointer_alone(self):
|
||||
# A pointer referencing a different termination must never be cleared
|
||||
termination_a = self._tracked(lambda: CircuitTermination.objects.create(
|
||||
circuit=self.circuits[0], term_side='A', termination=self.sites[0],
|
||||
))
|
||||
|
|
@ -535,24 +506,9 @@ class CircuitTerminationChangeLoggingTestCase(TestCase):
|
|||
self.assertEqual(changes[0].prechange_data['termination_a'], termination_pk)
|
||||
self.assertIsNone(changes[0].postchange_data['termination_a'])
|
||||
|
||||
def test_cascade_deletion_leaves_pointer_unrecorded(self):
|
||||
# Deleting the terminating Site reaches the termination through the collector, which does
|
||||
# not call delete(). on_delete=SET_NULL still clears the column, but nothing records it.
|
||||
self._tracked(lambda: CircuitTermination.objects.create(
|
||||
circuit=self.circuits[0], term_side='A', termination=self.sites[0],
|
||||
))
|
||||
ObjectChange.objects.all().delete()
|
||||
|
||||
self._tracked(self.sites[0].delete)
|
||||
|
||||
self.circuits[0].refresh_from_db()
|
||||
self.assertIsNone(self.circuits[0].termination_a_id)
|
||||
self.assertFalse(self._circuit_changes(self.circuits[0]).exists())
|
||||
|
||||
def test_deletion_leaves_pointer_for_another_termination(self):
|
||||
# An in-memory term_side which diverges from the persisted one must not clear a pointer
|
||||
# belonging to a different termination. The termination's own pointer is then left to
|
||||
# on_delete=SET_NULL, and goes unrecorded.
|
||||
@tag('regression') # Ref: #23134
|
||||
def test_deletion_leaves_another_terminations_pointer_alone(self):
|
||||
# A pointer referencing a different termination must never be cleared
|
||||
termination_a = self._tracked(lambda: CircuitTermination.objects.create(
|
||||
circuit=self.circuits[0], term_side='A', termination=self.sites[0],
|
||||
))
|
||||
|
|
@ -566,7 +522,6 @@ class CircuitTerminationChangeLoggingTestCase(TestCase):
|
|||
|
||||
self.circuits[0].refresh_from_db()
|
||||
self.assertEqual(self.circuits[0].termination_a_id, termination_a.pk)
|
||||
self.assertFalse(self._circuit_changes(self.circuits[0]).exists())
|
||||
|
||||
def test_circuit_deletion_records_no_pointer_update(self):
|
||||
self._tracked(lambda: CircuitTermination.objects.create(
|
||||
|
|
|
|||
Loading…
Reference in New Issue