""" Import verification tests for services reorganization. These tests verify that all import paths work correctly after moving service files into subdirectories. """ import pytest # ============================================================ # New import path tests (should work after reorganization) # ============================================================ class TestDiagnosisImports: """Verify diagnosis subdirectory imports.""" def test_geo_diagnosis_import(self): from app.services.diagnosis.geo_diagnosis import GEODiagnosisService assert GEODiagnosisService is not None def test_geo_diagnosis_dataclasses(self): from app.services.diagnosis.geo_diagnosis import ( GEODiagnosisInput, GEODiagnosisResult, GEODimensionScore, GEORecommendation, DiagnosisItem, ) assert GEODiagnosisInput is not None assert GEODiagnosisResult is not None def test_seo_diagnosis_import(self): from app.services.diagnosis.seo_diagnosis import SEODiagnosisService assert SEODiagnosisService is not None def test_seo_diagnosis_dataclasses(self): from app.services.diagnosis.seo_diagnosis import ( SEODiagnosisResult, SEODimensionScore, SEORecommendation, DiagnosisStatus, DimensionName, ) assert SEODiagnosisResult is not None assert DiagnosisStatus is not None class TestScoringImports: """Verify scoring subdirectory imports.""" def test_scoring_service_import(self): from app.services.scoring.scoring_service import ScoringService assert ScoringService is not None def test_scoring_dataclasses(self): from app.services.scoring.scoring_service import ( ScoringResultV2, DimensionScore, ) assert ScoringResultV2 is not None assert DimensionScore is not None def test_get_health_level_reexport(self): """scoring_service re-exports get_health_level from app.utils.health""" from app.services.scoring.scoring_service import get_health_level assert callable(get_health_level) class TestAlertImports: """Verify alert subdirectory imports.""" def test_alert_engine_import(self): from app.services.alert.alert_engine import AlertEngine assert AlertEngine is not None def test_alert_context_import(self): from app.services.alert.alert_engine import AlertContext assert AlertContext is not None class TestCitationImports: """Verify citation subdirectory imports.""" def test_citation_import(self): from app.services.citation.citation import get_citations assert callable(get_citations) def test_citation_stats_import(self): from app.services.citation.citation import get_citation_stats assert callable(get_citation_stats) def test_citation_pattern_import(self): from app.services.citation.citation_pattern import CitationPatternEngine assert CitationPatternEngine is not None def test_citation_pattern_dataclasses(self): from app.services.citation.citation_pattern import ( CitationPattern, PatternAnalysisReport, ) assert CitationPattern is not None assert PatternAnalysisReport is not None class TestLLMImports: """Verify llm subdirectory imports (new additions).""" def test_smart_router_import(self): from app.services.llm.smart_router import SmartRouter assert SmartRouter is not None def test_engine_selector_import(self): from app.services.llm.engine_selector import EngineSelector assert EngineSelector is not None def test_smart_router_dataclasses(self): from app.services.llm.smart_router import ( CostTier, EngineCostProfile, ENGINE_COST_PROFILES, ) assert CostTier is not None assert ENGINE_COST_PROFILES is not None def test_llm_init_includes_new_exports(self): """Verify llm/__init__.py includes SmartRouter and EngineSelector.""" from app.services.llm import SmartRouter, EngineSelector assert SmartRouter is not None assert EngineSelector is not None class TestDetectionImports: """Verify detection subdirectory imports.""" def test_detection_scheduler_import(self): from app.services.detection.detection_scheduler import DetectionSchedulerService assert DetectionSchedulerService is not None def test_task_not_found_error_import(self): from app.services.detection.detection_scheduler import TaskNotFoundError assert TaskNotFoundError is not None class TestAdvisorImports: """Verify advisor subdirectory imports.""" def test_optimization_advisor_import(self): from app.services.advisor.optimization_advisor import generate_suggestions assert callable(generate_suggestions) def test_advisor_dataclasses(self): from app.services.advisor.optimization_advisor import ( SuggestionItem, BrandAnalysisContext, ) assert SuggestionItem is not None assert BrandAnalysisContext is not None class TestAnalysisImports: """Verify analysis subdirectory imports.""" def test_sentiment_service_import(self): from app.services.analysis.sentiment_service import SentimentAnalysisService assert SentimentAnalysisService is not None def test_sentiment_result_import(self): from app.services.analysis.sentiment_service import SentimentResult assert SentimentResult is not None def test_get_sentiment_service_import(self): from app.services.analysis.sentiment_service import get_sentiment_service assert callable(get_sentiment_service)