Add test files
Some checks failed
CI / build (push) Has been cancelled
CI / test (push) Has been cancelled

This commit is contained in:
2026-02-02 02:43:07 +00:00
parent 6b6f285ae2
commit db00b23b10

109
tests/unit/test_cli.py Normal file
View File

@@ -0,0 +1,109 @@
import pytest
import tempfile
import os
from click.testing import CliRunner
from unittest.mock import patch, MagicMock
from pathlib import Path
from src.cli.main import cli, analyze, visualize, complexity, deps, export
from src.graph.builder import GraphBuilder, GraphType
class TestCLI:
def setup_method(self):
self.runner = CliRunner()
def test_cli_help(self):
result = self.runner.invoke(cli, ["--help"])
assert result.exit_code == 0
assert "Usage:" in result.output
@patch("src.cli.main._parse_files")
@patch("src.cli.main._get_parser")
def test_analyze_command(self, mock_get_parser, mock_parse_files):
mock_parser = MagicMock()
mock_get_parser.return_value = mock_parser
mock_result = MagicMock()
mock_result.file_path = Path("/test.py")
mock_result.entities = []
mock_result.imports = []
mock_parse_files.return_value = [mock_result]
mock_graph_builder = MagicMock()
mock_graph_builder.get_nodes.return_value = []
with patch("src.cli.main.GraphBuilder") as MockGraphBuilder:
MockGraphBuilder.return_value = mock_graph_builder
with tempfile.TemporaryDirectory() as tmpdir:
result = self.runner.invoke(cli, ["analyze", tmpdir])
assert result.exit_code == 0
@patch("src.cli.main._parse_files")
@patch("src.cli.main._get_parser")
def test_visualize_command(self, mock_get_parser, mock_parse_files):
mock_parser = MagicMock()
mock_get_parser.return_value = mock_parser
mock_result = MagicMock()
mock_result.file_path = Path("/test.py")
mock_result.entities = []
mock_result.imports = []
mock_parse_files.return_value = [mock_result]
mock_graph_builder = MagicMock()
mock_graph_builder.get_nodes.return_value = []
with patch("src.cli.main.GraphBuilder") as MockGraphBuilder:
MockGraphBuilder.return_value = mock_graph_builder
with tempfile.TemporaryDirectory() as tmpdir:
result = self.runner.invoke(visualize, [tmpdir])
assert result.exit_code == 0
@patch("src.cli.main._parse_files")
@patch("src.cli.main._get_parser")
def test_complexity_command(self, mock_get_parser, mock_parse_files):
mock_parser = MagicMock()
mock_get_parser.return_value = mock_parser
mock_result = MagicMock()
mock_result.file_path = Path("/test.py")
mock_result.entities = []
mock_result.imports = []
mock_parse_files.return_value = [mock_result]
with tempfile.TemporaryDirectory() as tmpdir:
result = self.runner.invoke(complexity, [tmpdir])
assert result.exit_code == 0
@patch("src.cli.main._parse_files")
@patch("src.cli.main._get_parser")
def test_deps_command(self, mock_get_parser, mock_parse_files):
mock_parser = MagicMock()
mock_get_parser.return_value = mock_parser
mock_result = MagicMock()
mock_result.file_path = Path("/test.py")
mock_result.entities = []
mock_result.imports = []
mock_parse_files.return_value = [mock_result]
mock_graph_builder = MagicMock()
mock_graph_builder.get_nodes.return_value = []
mock_graph_builder.edges = []
with patch("src.cli.main.GraphBuilder") as MockGraphBuilder:
MockGraphBuilder.return_value = mock_graph_builder
with tempfile.TemporaryDirectory() as tmpdir:
result = self.runner.invoke(deps, [tmpdir])
assert result.exit_code == 0
def test_verbose_flag(self):
result = self.runner.invoke(cli, ["--verbose", "--help"])
assert result.exit_code == 0