"""Testy checklist zgodności z regulaminem.""" from types import SimpleNamespace from core.compliance.regulation_checklist import compliance_checklist def _section(section_type: str, content: str = "Treść sekcji"): return SimpleNamespace(section_type=section_type, content=content) def test_checklist_passes_when_sections_match(): project = SimpleNamespace( external_context={ "required_sections": ["Opis projektu", "Budżet"], "required_attachments": [], "regulation_section_titles": { "opis_projektu": "Opis projektu", "budzet": "Budżet", }, } ) sections = [ _section("opis_projektu", "Pełny opis projektu innowacyjnego."), _section("budzet", "Szczegółowy budżet projektu."), ] result = compliance_checklist(project, sections) assert result.coverage_score >= 70 assert result.passed is True assert not result.missing_sections def test_checklist_detects_missing_sections(): project = SimpleNamespace( external_context={ "required_sections": ["Opis projektu", "Budżet", "Harmonogram"], "required_attachments": [], } ) sections = [_section("opis_projektu")] result = compliance_checklist(project, sections) assert len(result.missing_sections) >= 2 assert result.coverage_score < 70 assert result.passed is False def test_checklist_skipped_for_legacy_project(): project = SimpleNamespace(external_context={"company_data": {"nip": "123"}}) result = compliance_checklist(project, []) assert result.coverage_score == 100 assert result.passed is True assert "pominięta" in result.recommendation.lower() def test_checklist_missing_attachments(): project = SimpleNamespace( external_context={ "required_sections": [], "required_attachments": ["Kosztorys", "Oświadczenie MŚP"], } ) result = compliance_checklist(project, []) assert len(result.missing_attachments) == 2 assert result.coverage_score == 0