Spaces:
Sleeping
Sleeping
| from datetime import datetime, timezone | |
| import inspect | |
| from unittest.mock import patch | |
| def test_worker_publishes_completed_ml_prediction(): | |
| from scripts.hf_queue_worker import _compute_stocks | |
| now = datetime.now(timezone.utc) | |
| ml_result = { | |
| "signal": "BUY", | |
| "source": "ml_model", | |
| "signal_probability": 0.72, | |
| } | |
| with patch("services.predictor_service.get_ml_prediction_sync", return_value=ml_result): | |
| queue, changed = _compute_stocks(["2330"], {}, now) | |
| assert changed is True | |
| assert queue["2330"]["status"] == "done" | |
| assert queue["2330"]["source"] == "mac_worker" | |
| assert queue["2330"]["result"] == ml_result | |
| def test_worker_refuses_quick_rules_placeholder(): | |
| from scripts.hf_queue_worker import _compute_stocks | |
| now = datetime.now(timezone.utc) | |
| quick_result = { | |
| "signal": "HOLD", | |
| "source": "quick_rules", | |
| "signal_probability": 0.5, | |
| } | |
| with patch("services.predictor_service.get_ml_prediction_sync", return_value=quick_result): | |
| queue, changed = _compute_stocks(["2330"], {}, now) | |
| assert changed is True | |
| assert queue["2330"]["status"] == "error" | |
| assert queue["2330"]["source"] == "mac_worker" | |
| assert "quick_rules" in queue["2330"]["error"] | |
| def test_queue_cache_rejects_quick_rules_result(): | |
| from services.hf_queue_service import get_cached_result, is_publishable_result | |
| queue = { | |
| "2330": { | |
| "status": "done", | |
| "completed_at": datetime.now(timezone.utc).isoformat(), | |
| "result": { | |
| "signal": "HOLD", | |
| "source": "quick_rules", | |
| "disclaimer": "Quick estimate (technical rules only).", | |
| }, | |
| } | |
| } | |
| with patch("services.hf_queue_service.read_queue", return_value=queue): | |
| assert is_publishable_result(queue["2330"]["result"]) is False | |
| assert get_cached_result("2330") is None | |
| def test_queue_cache_accepts_ml_result(): | |
| from services.hf_queue_service import get_cached_result, is_publishable_result | |
| result = { | |
| "signal": "BUY", | |
| "source": "ml_model", | |
| "signal_probability": 0.72, | |
| } | |
| queue = { | |
| "2330": { | |
| "status": "done", | |
| "completed_at": datetime.now(timezone.utc).isoformat(), | |
| "result": result, | |
| } | |
| } | |
| with patch("services.hf_queue_service.read_queue", return_value=queue): | |
| assert is_publishable_result(result) is True | |
| assert get_cached_result("2330") == result | |
| def test_hf_startup_warmup_filters_placeholders(): | |
| from main import _warmup_from_queue | |
| source = inspect.getsource(_warmup_from_queue) | |
| assert "is_publishable_result" in source | |