MCPcopy
hub / github.com/django/django / test_simple_graph

Method test_simple_graph

tests/migrations/test_graph.py:11–67  ·  view source on GitHub ↗

Tests a basic dependency graph: app_a: 0001 <-- 0002 <--- 0003 <-- 0004 / app_b: 0001 <-- 0002 <-/

(self)

Source from the content-addressed store, hash-verified

9 """
10
11 def test_simple_graph(self):
12 """
13 Tests a basic dependency graph:
14
15 app_a: 0001 <-- 0002 <--- 0003 <-- 0004
16 /
17 app_b: 0001 <-- 0002 <-/
18 """
19 # Build graph
20 graph = MigrationGraph()
21 graph.add_node(("app_a", "0001"), None)
22 graph.add_node(("app_a", "0002"), None)
23 graph.add_node(("app_a", "0003"), None)
24 graph.add_node(("app_a", "0004"), None)
25 graph.add_node(("app_b", "0001"), None)
26 graph.add_node(("app_b", "0002"), None)
27 graph.add_dependency("app_a.0004", ("app_a", "0004"), ("app_a", "0003"))
28 graph.add_dependency("app_a.0003", ("app_a", "0003"), ("app_a", "0002"))
29 graph.add_dependency("app_a.0002", ("app_a", "0002"), ("app_a", "0001"))
30 graph.add_dependency("app_a.0003", ("app_a", "0003"), ("app_b", "0002"))
31 graph.add_dependency("app_b.0002", ("app_b", "0002"), ("app_b", "0001"))
32 # Test root migration case
33 self.assertEqual(
34 graph.forwards_plan(("app_a", "0001")),
35 [("app_a", "0001")],
36 )
37 # Test branch B only
38 self.assertEqual(
39 graph.forwards_plan(("app_b", "0002")),
40 [("app_b", "0001"), ("app_b", "0002")],
41 )
42 # Test whole graph
43 self.assertEqual(
44 graph.forwards_plan(("app_a", "0004")),
45 [
46 ("app_b", "0001"),
47 ("app_b", "0002"),
48 ("app_a", "0001"),
49 ("app_a", "0002"),
50 ("app_a", "0003"),
51 ("app_a", "0004"),
52 ],
53 )
54 # Test reverse to b:0002
55 self.assertEqual(
56 graph.backwards_plan(("app_b", "0002")),
57 [("app_a", "0004"), ("app_a", "0003"), ("app_b", "0002")],
58 )
59 # Test roots and leaves
60 self.assertEqual(
61 graph.root_nodes(),
62 [("app_a", "0001"), ("app_b", "0001")],
63 )
64 self.assertEqual(
65 graph.leaf_nodes(),
66 [("app_a", "0004"), ("app_b", "0002")],
67 )
68

Callers

nothing calls this directly

Calls 7

add_nodeMethod · 0.95
add_dependencyMethod · 0.95
forwards_planMethod · 0.95
backwards_planMethod · 0.95
root_nodesMethod · 0.95
leaf_nodesMethod · 0.95
MigrationGraphClass · 0.90

Tested by

no test coverage detected