86 lines
2.5 KiB
Python
86 lines
2.5 KiB
Python
from pathlib import Path
|
|
from codemap.core import GraphBuilder, MermaidGenerator
|
|
from codemap.parsers import ParsedFile
|
|
|
|
|
|
def test_mermaid_generator_basic():
|
|
builder = GraphBuilder()
|
|
|
|
files = [
|
|
ParsedFile(file_path=Path("/app/main.py"), module_name="main", dependencies=[], file_type="python"),
|
|
ParsedFile(file_path=Path("/app/utils.py"), module_name="utils", dependencies=[], file_type="python"),
|
|
]
|
|
|
|
builder.build_from_files(files)
|
|
graph_data = builder.get_graph_data()
|
|
|
|
generator = MermaidGenerator(graph_data)
|
|
output = generator.generate_flowchart()
|
|
|
|
assert "graph TD" in output
|
|
assert "main" in output
|
|
assert "utils" in output
|
|
|
|
|
|
def test_mermaid_generator_with_packages():
|
|
builder = GraphBuilder()
|
|
|
|
files = [
|
|
ParsedFile(file_path=Path("/app/src/main.py"), module_name="main", dependencies=[], file_type="python"),
|
|
ParsedFile(file_path=Path("/app/src/utils.py"), module_name="utils", dependencies=[], file_type="python"),
|
|
]
|
|
|
|
builder.build_from_files(files)
|
|
graph_data = builder.get_graph_data()
|
|
|
|
generator = MermaidGenerator(graph_data)
|
|
output = generator.generate_flowchart(include_packages=True)
|
|
|
|
assert "subgraph" in output
|
|
|
|
|
|
def test_mermaid_generator_class_diagram():
|
|
builder = GraphBuilder()
|
|
|
|
files = [
|
|
ParsedFile(file_path=Path("/app/main.py"), module_name="main", dependencies=[], file_type="python"),
|
|
]
|
|
|
|
builder.build_from_files(files)
|
|
graph_data = builder.get_graph_data()
|
|
|
|
generator = MermaidGenerator(graph_data)
|
|
output = generator.generate_class_diagram()
|
|
|
|
assert "classDiagram" in output
|
|
|
|
|
|
def test_mermaid_generator_pie_chart():
|
|
builder = GraphBuilder()
|
|
|
|
files = [
|
|
ParsedFile(file_path=Path("/app/main.py"), module_name="main", dependencies=[], file_type="python"),
|
|
ParsedFile(file_path=Path("/app/main.js"), module_name="main", dependencies=[], file_type="javascript"),
|
|
ParsedFile(file_path=Path("/app/main.go"), module_name="main", dependencies=[], file_type="go"),
|
|
]
|
|
|
|
builder.build_from_files(files)
|
|
graph_data = builder.get_graph_data()
|
|
|
|
generator = MermaidGenerator(graph_data)
|
|
output = generator.generate_pie_chart()
|
|
|
|
assert "pie" in output
|
|
assert "python" in output
|
|
assert "javascript" in output
|
|
assert "go" in output
|
|
|
|
|
|
def test_safe_id():
|
|
builder = GraphBuilder()
|
|
generator = MermaidGenerator(builder.get_graph_data())
|
|
|
|
safe = generator._safe_id("/app/my-project/file.name.js")
|
|
assert " " not in safe
|
|
assert safe[0].isalpha() or safe[0] == "_"
|