Coverage for tests / unit / parsers / test_json.py: 100%
31 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-16 21:32 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-16 21:32 +0000
1from json import dumps
3from graphable.graph import Graph, Graphable
4from graphable.parsers.json import load_graph_json
5from graphable.views.json import create_topology_json
8def test_load_graph_json_roundtrip():
9 # A -> B
10 a = Graphable("A")
11 a.add_tag("t1")
12 b = Graphable("B")
13 g = Graph()
14 g.add_edge(a, b)
16 json_str = create_topology_json(g)
18 loaded_g = load_graph_json(json_str)
20 assert len(loaded_g) == 2
21 assert "A" in loaded_g
22 assert "B" in loaded_g
23 assert loaded_g["A"].is_tagged("t1")
24 assert loaded_g["B"] in loaded_g["A"].dependents
27def test_load_graph_json_orphaned_nodes():
28 data = {
29 "nodes": [
30 {"id": "A", "reference": "A", "tags": []},
31 {"id": "B", "reference": "B", "tags": []},
32 ],
33 "edges": [],
34 }
35 json_str = dumps(data)
37 loaded_g = load_graph_json(json_str)
38 assert len(loaded_g) == 2
39 assert "A" in loaded_g
40 assert "B" in loaded_g
43def test_load_graph_json_from_file(tmp_path):
44 output_file = tmp_path / "graph.json"
45 data = {"nodes": [{"id": "A", "reference": "A", "tags": []}], "edges": []}
46 output_file.write_text(dumps(data))
48 loaded_g = load_graph_json(output_file)
49 assert len(loaded_g) == 1
50 assert "A" in loaded_g