Update model translations
This commit is contained in:
@@ -27,7 +27,8 @@ class TestEncarMapper(unittest.TestCase):
|
||||
self.assertEqual(record.origin_id, "encar:41421262")
|
||||
self.assertEqual(record.parser_id, "encar:41421262")
|
||||
self.assertEqual(record.brand, "Hyundai")
|
||||
self.assertEqual(record.model, "G90 (RS4)")
|
||||
# Скобки удаляются — на оригинальном сайте Encar их нет.
|
||||
self.assertEqual(record.model, "G90")
|
||||
self.assertEqual(record.year, 2023)
|
||||
self.assertEqual(record.price, 85900000) # 8590 만원 × 10000
|
||||
self.assertEqual(record.mileage, 37923)
|
||||
@@ -83,10 +84,52 @@ class TestEncarMapper(unittest.TestCase):
|
||||
self.assertEqual(record.parser_id, "encar:41878507")
|
||||
self.assertIn("carid=41878507", record.origin_url)
|
||||
|
||||
def test_translate_model_keeps_english_text(self):
|
||||
mapper = EncarMapper()
|
||||
|
||||
self.assertEqual(mapper._translate_model("All New Carnival"), "All New Carnival")
|
||||
self.assertEqual(mapper._translate_model("New Kia Ray"), "New Kia Ray")
|
||||
self.assertEqual(mapper._translate_model("K5 Hybrid 3rd gen"), "K5 Hybrid 3rd gen")
|
||||
|
||||
def test_translate_model_handles_korean_fragments(self):
|
||||
mapper = EncarMapper()
|
||||
|
||||
cases = {
|
||||
# Скобки и их содержимое отбрасываются как на сайте Encar.
|
||||
"5시리즈 (G30)": "5 Series",
|
||||
"S-클래스 W223": "S-Class W223",
|
||||
"Sonata 디 엣지(DN8)": "Sonata The Edge",
|
||||
"렉스턴 Sport 칸": "Rexton Sport Khan",
|
||||
"티볼리 Air": "Tivoli Air",
|
||||
"코란도 투리스모": "Korando Turismo",
|
||||
"Kia Carnival 4세대": "Kia Carnival 4th gen",
|
||||
"Cadillac 에스컬레이드 5세대": "Cadillac Escalade 5th gen",
|
||||
"K7 프리미어": "K7 Premier",
|
||||
}
|
||||
|
||||
for raw, expected in cases.items():
|
||||
with self.subTest(raw=raw):
|
||||
self.assertEqual(mapper._translate_model(raw), expected)
|
||||
|
||||
def test_translate_model_drops_untranslated_korean(self):
|
||||
mapper = EncarMapper()
|
||||
|
||||
cases = {
|
||||
# "레이" (Ray) не должен резать слово "슈팅브레이크" изнутри.
|
||||
"슈팅브레이크": "",
|
||||
"The New G70 슈팅브레이크": "The New G70",
|
||||
"G70 (슈팅브레이크)": "G70",
|
||||
}
|
||||
|
||||
for raw, expected in cases.items():
|
||||
with self.subTest(raw=raw):
|
||||
self.assertEqual(mapper._translate_model(raw), expected)
|
||||
|
||||
|
||||
class TestEncarScraper(unittest.TestCase):
|
||||
def test_collect_listing_limits_results(self):
|
||||
scraper = EncarScraper()
|
||||
|
||||
scraper._fetch_listing_page = MagicMock(side_effect=[
|
||||
{"SearchResults": [{"Id": 1}, {"Id": 2}]},
|
||||
])
|
||||
|
||||
@@ -195,11 +195,14 @@ class TestAPILoad(unittest.TestCase):
|
||||
persistence: PersistenceService = app.state.persistence
|
||||
persistence.upsert_cars_batch([_make_car(i, images=4) for i in range(200)])
|
||||
|
||||
cls.app = app
|
||||
cls.client = TestClient(app)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
import os
|
||||
cls.client.close()
|
||||
cls.app.state.persistence.engine.dispose()
|
||||
if os.path.exists("test_api_load.db"):
|
||||
os.remove("test_api_load.db")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user