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

1from json import dumps 

2 

3from graphable.graph import Graph, Graphable 

4from graphable.parsers.json import load_graph_json 

5from graphable.views.json import create_topology_json 

6 

7 

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) 

15 

16 json_str = create_topology_json(g) 

17 

18 loaded_g = load_graph_json(json_str) 

19 

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 

25 

26 

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) 

36 

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 

41 

42 

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)) 

47 

48 loaded_g = load_graph_json(output_file) 

49 assert len(loaded_g) == 1 

50 assert "A" in loaded_g