Spaces:
Sleeping
Sleeping
Download backend/tests/test_criticality.py from shield137/shockmap-api: direct link, hf CLI and curl.
- Browser
- Download file 2.77 kB
-
https://huggingface.co/spaces/shield137/shockmap-api/resolve/main/backend/tests/test_criticality.py
- Command line
-
hf download hf://spaces/shield137/shockmap-api/backend/tests/test_criticality.py
-
curl -L -o test_criticality.py https://huggingface.co/spaces/shield137/shockmap-api/resolve/main/backend/tests/test_criticality.py
2.77 kB
| import pytest | |
| from app.services.criticality import compute_score, compute_breakdown | |
| from app.models.drug import Drug, NLEMTier | |
| def drug_factory(): | |
| def _create_drug( | |
| id="test-drug", | |
| name="Test Drug", | |
| generic_name="Generic", | |
| nlem_tier=NLEMTier.TIER_1, | |
| patient_population_estimate=1000000, | |
| primary_apis=None, | |
| has_substitute=True, | |
| therapeutic_class="Analgesic" | |
| ): | |
| return Drug( | |
| id=id, | |
| name=name, | |
| generic_name=generic_name, | |
| nlem_tier=nlem_tier, | |
| patient_population_estimate=patient_population_estimate, | |
| primary_apis=primary_apis or [], | |
| has_substitute=has_substitute, | |
| therapeutic_class=therapeutic_class | |
| ) | |
| return _create_drug | |
| def test_tier_1_monopoly_high_pop_no_substitute_in_high_range(drug_factory): | |
| # Paracetamol-like scenario: Tier 1, 200M pop, Monopoly (10000 HHI), No substitute | |
| drug = drug_factory( | |
| nlem_tier=NLEMTier.TIER_1, | |
| patient_population_estimate=200_000_000, | |
| has_substitute=False | |
| ) | |
| score = compute_score(drug, 10000) | |
| # Expected: 75 (tier) * 1.5 (hhi) * (0.7 + 0.3 * 1.0) (pop) * 1.2 (sub) = 75 * 1.5 * 1.0 * 1.2 = 135 | |
| # Clamped at 100 | |
| assert 85 <= score <= 100 | |
| def test_tier_3_diversified_substitute(drug_factory): | |
| # Specialized drug: Tier 3, 10k pop, Diversified (1000 HHI), Has substitute | |
| drug = drug_factory( | |
| nlem_tier=NLEMTier.TIER_3, | |
| patient_population_estimate=10_000, | |
| has_substitute=True | |
| ) | |
| score = compute_score(drug, 1000) | |
| # Expected: 25 * 1.05 * (0.7 + 0.3 * 0.5) * 1.0 = 25 * 1.05 * 0.85 = 22.3 | |
| assert 15 <= score <= 35 | |
| def test_zero_population_handled(drug_factory): | |
| drug = drug_factory(patient_population_estimate=0) | |
| score = compute_score(drug, 5000) | |
| assert isinstance(score, float) | |
| assert score > 0 | |
| def test_hhi_above_10000_clamped(drug_factory): | |
| drug = drug_factory() | |
| score_10k = compute_score(drug, 10000) | |
| score_15k = compute_score(drug, 15000) | |
| assert score_10k == score_15k | |
| def test_invalid_tier_raises(drug_factory): | |
| drug = drug_factory() | |
| # Manually bypass pydantic validation for testing logic in service | |
| drug.nlem_tier = type('Enum', (), {'value': 'INVALID'}) | |
| with pytest.raises(ValueError, match="Invalid NLEM tier"): | |
| compute_score(drug, 5000) | |
| def test_breakdown_keys(drug_factory): | |
| drug = drug_factory() | |
| breakdown = compute_breakdown(drug, 5000) | |
| expected_keys = { | |
| "nlem_tier_score", | |
| "hhi_multiplier", | |
| "population_factor", | |
| "substitute_penalty", | |
| "final_score" | |
| } | |
| assert set(breakdown.keys()) == expected_keys | |