Fix sold checks with transport URLs

This commit is contained in:
qananasikq
2026-08-21 19:28:18 +03:00
parent 6b16496301
commit 4a6910c1fa
6 changed files with 43 additions and 10 deletions
+12
View File
@@ -126,6 +126,18 @@ class TestMobileDeDetailTransports(unittest.TestCase):
self.assertEqual(record.year, 2022)
self.assertEqual(record.mileage, 18285)
self.assertEqual(len(record.images), 1)
self.assertEqual(
record.origin_url,
MobileDeClient.build_transport_detail_url("461936419"),
)
def test_search_listing_uses_russian_transport_detail_url(self) -> None:
listing = MobileDeClient._map_listing({"id": "461936419"})
self.assertEqual(
listing.url,
MobileDeClient.build_transport_detail_url("461936419"),
)
def test_legacy_transport_is_explicitly_opt_in(self) -> None:
client = MobileDeClient()
+20 -1
View File
@@ -277,7 +277,7 @@ class TestWorkerRuntimeTaskHelpers(unittest.TestCase):
redis_client = self._FakeRedis()
persistence = MagicMock()
persistence.get_active_cars_batch_for_sold_probe.return_value = [
(index, f"https://example.test/{index}", datetime.now(timezone.utc))
(index, f"mobile.de:{index}", datetime.now(timezone.utc))
for index in range(1, 6)
]
client = MagicMock()
@@ -300,9 +300,28 @@ class TestWorkerRuntimeTaskHelpers(unittest.TestCase):
self.assertEqual(result["blocked"], 3)
self.assertEqual(result["skipped"], 2)
self.assertEqual(probe.call_count, 3)
self.assertEqual(
[call.kwargs["origin_id"] for call in probe.call_args_list],
["mobile.de:1", "mobile.de:2", "mobile.de:3"],
)
persistence.mark_cars_sold_by_ids.assert_not_called()
self.assertIn(tasks.MOBILEDE_SOLD_PROBE_ANTIBOT_BLOCK_KEY, redis_client.store)
def test_sold_probe_uses_russian_transport_url_from_origin_id(self) -> None:
client = MagicMock()
verdict, status_code = tasks._mobilede_probe_active_listing_status(
client,
car_id=1,
origin_id="mobile.de:461936419",
)
self.assertEqual((verdict, status_code), ("available", 200))
client.fetch_html.assert_called_once_with(
"https://www.mobile.de/ru/транспортные-средства/подробности.html?id=461936419&vc=Car&s=Car&lang=ru",
timeout=30,
)
def test_runtime_numeric_filters_intersect_planner_segment(self) -> None:
self.assertEqual(
search_sync._intersect_numeric_bounds("10000", "30000", 15000, 25000),