"""Tests for script explainer module.""" import pytest from unittest.mock import Mock, patch from shellgenius.explainer import ShellExplainer, explain_script, LineExplanation, ScriptExplanation class TestShellExplainer: def test_basic_explanation(self): """Test basic script explanation.""" with patch('shellgenius.explainer.get_ollama_client') as mock_client: mock_client.return_value.generate.return_value = {"success": False} explainer = ShellExplainer() result = explainer.explain("echo hello", detailed=False) assert result.shell_type == "bash" assert len(result.line_explanations) >= 1 def test_detect_shell_purpose(self): """Test detection of script purpose.""" with patch('shellgenius.explainer.get_ollama_client') as mock_client: mock_client.return_value.generate.return_value = {"success": False} explainer = ShellExplainer() git_script = "git clone repo\ngit status" result = explainer.explain(git_script, detailed=False) assert "Git" in result.overall_purpose or "git" in result.overall_purpose.lower() class TestExplainScript: def test_convenience_function(self): """Test the convenience function for explaining scripts.""" with patch('shellgenius.explainer.get_ollama_client') as mock_client: mock_client.return_value.generate.return_value = {"success": False} result = explain_script("echo hello", detailed=False) assert isinstance(result, ScriptExplanation) assert result.shell_type == "bash"