Description
Core AI modules have zero test coverage:
gitstats/ai_summarizer.py (~350 lines) — contains complex logic for data preparation, caching, summary generation
gitstats/ai_providers.py (~280 lines) — contains 4 providers (OpenAI, Claude, Gemini, Ollama), factory class, and retry logic
Proposed Fix
Add the following test cases:
ai_summarizer.py
prepare_index_data(): verify correct extraction of stats data, bot filtering
prepare_activity_data(): verify peak activity detection
prepare_authors_data(): verify bot filtering and author sorting
prepare_lines_data(): verify line stats calculation
_filter_human_authors(): verify recognition of various bot patterns
_get_cache_key(): verify cache key generation
generate_summary(): mock AI provider, verify cache hit/miss logic
ai_providers.py
AIProviderFactory.create(): known/unknown provider names
_get_model_with_fallback(): edge cases
_retry_with_backoff retry logic for each provider
Affected Code
gitstats/ai_summarizer.py
gitstats/ai_providers.py
Description
Core AI modules have zero test coverage:
gitstats/ai_summarizer.py(~350 lines) — contains complex logic for data preparation, caching, summary generationgitstats/ai_providers.py(~280 lines) — contains 4 providers (OpenAI, Claude, Gemini, Ollama), factory class, and retry logicProposed Fix
Add the following test cases:
ai_summarizer.py
prepare_index_data(): verify correct extraction of stats data, bot filteringprepare_activity_data(): verify peak activity detectionprepare_authors_data(): verify bot filtering and author sortingprepare_lines_data(): verify line stats calculation_filter_human_authors(): verify recognition of various bot patterns_get_cache_key(): verify cache key generationgenerate_summary(): mock AI provider, verify cache hit/miss logicai_providers.py
AIProviderFactory.create(): known/unknown provider names_get_model_with_fallback(): edge cases_retry_with_backoffretry logic for each providerAffected Code
gitstats/ai_summarizer.pygitstats/ai_providers.py