Use Russian transport
This commit is contained in:
@@ -47,20 +47,24 @@ class _Persistence:
|
||||
|
||||
|
||||
class TestMobileDeRequirements(unittest.TestCase):
|
||||
def test_english_urls_and_header_preserve_existing_query(self) -> None:
|
||||
def test_russian_transport_and_english_public_url_preserve_query(self) -> None:
|
||||
search = MobileDeClient.build_search_url_from_existing(
|
||||
"https://www.mobile.de/ru/search.html?ms=3500&lang=de&custom=keep",
|
||||
"https://suchen.mobile.de/fahrzeuge/search.html?ms=3500&lang=en&custom=keep",
|
||||
page_number=3,
|
||||
)
|
||||
detail = MobileDeClient.build_detail_url("123")
|
||||
self.assertEqual(DEFAULT_HEADERS["accept-language"], "en-US,en;q=0.9")
|
||||
transport_detail = MobileDeClient.build_transport_detail_url("123")
|
||||
public_detail = MobileDeClient.build_detail_url("123")
|
||||
self.assertEqual(DEFAULT_HEADERS["accept-language"], "ru-RU,ru;q=0.9,de;q=0.8,en;q=0.7")
|
||||
self.assertEqual(urlsplit(search).scheme, "https")
|
||||
self.assertEqual(urlsplit(search).netloc, "suchen.mobile.de")
|
||||
self.assertEqual(urlsplit(search).path, "/fahrzeuge/search.html")
|
||||
self.assertEqual(urlsplit(detail).path, "/fahrzeuge/details.html")
|
||||
self.assertEqual(parse_qs(urlsplit(search).query)["lang"], ["en"])
|
||||
self.assertEqual(urlsplit(search).netloc, "www.mobile.de")
|
||||
self.assertEqual(urlsplit(search).path, "/ru/транспортные-средства/поиск.html")
|
||||
self.assertEqual(urlsplit(transport_detail).path, "/ru/транспортные-средства/подробности.html")
|
||||
self.assertEqual(urlsplit(public_detail).netloc, "suchen.mobile.de")
|
||||
self.assertEqual(urlsplit(public_detail).path, "/fahrzeuge/details.html")
|
||||
self.assertEqual(parse_qs(urlsplit(search).query)["lang"], ["ru"])
|
||||
self.assertEqual(parse_qs(urlsplit(search).query)["custom"], ["keep"])
|
||||
self.assertEqual(parse_qs(urlsplit(detail).query)["lang"], ["en"])
|
||||
self.assertEqual(parse_qs(urlsplit(transport_detail).query)["lang"], ["ru"])
|
||||
self.assertEqual(parse_qs(urlsplit(public_detail).query)["lang"], ["en"])
|
||||
|
||||
def test_parser_id_is_deterministic_and_matches_project_format(self) -> None:
|
||||
origin_id = "mobile.de:123"
|
||||
@@ -69,9 +73,11 @@ class TestMobileDeRequirements(unittest.TestCase):
|
||||
self.assertEqual(parser_id, MobileDeMapper._parser_id(origin_id))
|
||||
self.assertNotEqual(parser_id, origin_id)
|
||||
|
||||
def test_mapper_contains_no_cyrillic_literals(self) -> None:
|
||||
def test_mapper_translates_russian_source_values_to_english_enums(self) -> None:
|
||||
mapper_path = Path(__file__).parents[1] / "mobilede_scraper" / "mobile_de" / "mapper.py"
|
||||
self.assertIsNone(re.search(r"[А-Яа-яЁё]", mapper_path.read_text(encoding="utf-8")))
|
||||
mapper_text = mapper_path.read_text(encoding="utf-8")
|
||||
self.assertIn('"автоматическая": "AT"', mapper_text)
|
||||
self.assertIn('"черный": "black"', mapper_text)
|
||||
|
||||
def test_upsert_uses_origin_id_and_migrates_legacy_parser_id(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
|
||||
Reference in New Issue
Block a user