Files
codebase-knowledge-graph-cli/tests/unit/test_cli.py
7000pctAUTO db00b23b10
Some checks failed
CI / build (push) Has been cancelled
CI / test (push) Has been cancelled
Add test files
2026-02-02 02:43:07 +00:00

110 lines
3.7 KiB
Python

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