MCPcopy
hub / github.com/django/django / test_remove_replacement_node

Method test_remove_replacement_node

tests/migrations/test_graph.py:365–406  ·  view source on GitHub ↗

A replacement node is properly removed and child dependencies remapped. We assume parent dependencies are already correct.

(self)

Source from the content-addressed store, hash-verified

363 self.assertIn(replacement_node, child_node.parents)
364
365 def test_remove_replacement_node(self):
366 """
367 A replacement node is properly removed and child dependencies remapped.
368 We assume parent dependencies are already correct.
369 """
370 # Add some dummy nodes to be replaced.
371 graph = MigrationGraph()
372 graph.add_node(("app_a", "0001"), None)
373 graph.add_node(("app_a", "0002"), None)
374 graph.add_dependency("app_a.0002", ("app_a", "0002"), ("app_a", "0001"))
375 # Try removing replacement node before replacement node exists.
376 msg = (
377 "Unable to remove replacement node ('app_a', '0001_squashed_0002'). It was"
378 " either never added to the migration graph, or has been removed already."
379 )
380 with self.assertRaisesMessage(NodeNotFoundError, msg):
381 graph.remove_replacement_node(
382 replacement=("app_a", "0001_squashed_0002"),
383 replaced=[("app_a", "0001"), ("app_a", "0002")],
384 )
385 graph.add_node(("app_a", "0001_squashed_0002"), None)
386 # Add a child node to test dependency remapping.
387 graph.add_node(("app_b", "0001"), None)
388 graph.add_dependency(
389 "app_b.0001", ("app_b", "0001"), ("app_a", "0001_squashed_0002")
390 )
391 # Remove the replacement node.
392 graph.remove_replacement_node(
393 replacement=("app_a", "0001_squashed_0002"),
394 replaced=[("app_a", "0001"), ("app_a", "0002")],
395 )
396 # Ensure graph is consistent and child dependency has been remapped
397 graph.validate_consistency()
398 replaced_node = graph.node_map[("app_a", "0002")]
399 child_node = graph.node_map[("app_b", "0001")]
400 self.assertIn(child_node, replaced_node.children)
401 self.assertIn(replaced_node, child_node.parents)
402 # Child dependency hasn't also gotten remapped to the other replaced
403 # node.
404 other_replaced_node = graph.node_map[("app_a", "0001")]
405 self.assertNotIn(child_node, other_replaced_node.children)
406 self.assertNotIn(other_replaced_node, child_node.parents)
407
408 def test_infinite_loop(self):
409 """

Callers

nothing calls this directly

Calls 6

add_nodeMethod · 0.95
add_dependencyMethod · 0.95
validate_consistencyMethod · 0.95
MigrationGraphClass · 0.90
assertRaisesMessageMethod · 0.80

Tested by

no test coverage detected