"""Testy dopasowania programów — rule-based bez LLM.""" import pytest from core.grants.recommendations import score_grant_for_company from core.match.match_program_service import _build_company_profile, _program_type_from_grant def test_build_company_profile_adds_clarifying_when_no_description(): company, gaps, questions = _build_company_profile( "1234567890", "", {"company_data": {"name": "Test Sp. z o.o.", "pkd": ["62.01.Z"]}, "gaps": []}, ) assert company["name"] == "Test Sp. z o.o." assert any("opisu" in g.lower() or "cel" in g.lower() for g in gaps) assert len(questions) >= 1 def test_program_type_never_unknown(): grant = { "zrodlo": "PARP — Nabory", "operator": "PARP", "source": "wyszukiwarka:PARP — Nabory", } assert _program_type_from_grant(grant) != "UNKNOWN" assert "PARP" in _program_type_from_grant(grant) def test_score_grant_returns_real_name(): company = { "size": "mikro", "region": "mazowieckie", "pkd": ["62.01.Z"], "entity_type": "przedsiębiorca", } grant = { "id": "test-1", "name": "Program rozwoju IT dla MŚP", "status": "active", "eligible_regions": ["mazowieckie", "cała Polska"], "eligible_company_sizes": ["mikro", "małe"], "beneficiary_tags": ["mśp", "przedsiębiorca"], "operator": "PARP", "zrodlo": "PARP — Nabory", "description": "Wsparcie cyfryzacji firm IT", "eligible_pkd": ["62"], } rec = score_grant_for_company(grant, company) assert rec["grant_name"] == "Program rozwoju IT dla MŚP" assert rec["grant_id"] == "test-1" assert rec["relevance_score"] >= 40