@@ -0,0 +1,45 @@
|
||||
from apps.jobs.services.distance import CommuteEstimate, estimate_commute, haversine_km
|
||||
from apps.jobs.services.features import extract_deterministic_features, term_ratio
|
||||
|
||||
|
||||
def test_feature_extraction_and_distance_are_deterministic():
|
||||
text = (
|
||||
"Voor een gemeente zoeken we een consultant. Rijbewijs B en 5 jaar ervaring vereist. "
|
||||
"De rol bevat helpdesk en telefonische support bij klanten."
|
||||
)
|
||||
features = extract_deterministic_features("Support Engineer", text)
|
||||
assert features["support_ratio"] > 0
|
||||
assert features["consultancy_ratio"] > 0
|
||||
assert features["travel_ratio"] > 0
|
||||
assert features["public_sector_signal"] > 0
|
||||
assert features["experience_years_max"] == 5
|
||||
assert term_ratio("", ["x"]) == 0
|
||||
assert 60 < haversine_km(50.9307, 5.3325, 50.8503, 4.3517) < 80
|
||||
|
||||
|
||||
def test_conservative_commute_estimate_is_marked_as_estimate():
|
||||
result = estimate_commute(20.0)
|
||||
assert isinstance(result, CommuteEstimate)
|
||||
assert result.is_estimate
|
||||
assert result.minutes > 0
|
||||
assert result.source == "road"
|
||||
|
||||
|
||||
def test_custom_commute_estimator_is_accepted():
|
||||
class CustomEstimator:
|
||||
name = "custom"
|
||||
version = "test"
|
||||
|
||||
def estimate(self, distance_km: float) -> CommuteEstimate:
|
||||
return CommuteEstimate(
|
||||
minutes=int(distance_km * 2),
|
||||
km=distance_km,
|
||||
source=self.name,
|
||||
source_version=self.version,
|
||||
confidence=0.7,
|
||||
is_estimate=False,
|
||||
)
|
||||
|
||||
result = estimate_commute(12.0, estimator=CustomEstimator())
|
||||
assert result.minutes == 24
|
||||
assert result.source_version == "test"
|
||||
Reference in New Issue
Block a user