Normalize Russian vehicle data
This commit is contained in:
@@ -434,6 +434,17 @@ class TestMobileDeMapper(unittest.TestCase):
|
||||
|
||||
self.assertEqual(record.drive, "FWD")
|
||||
|
||||
def test_bmw_sdrive_maps_to_two_wheel_drive(self) -> None:
|
||||
record = self.mapper.detail_to_car_record(
|
||||
"1014",
|
||||
{
|
||||
"shortTitle": "BMW X1",
|
||||
"subTitle": "sDrive18i Advantage",
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(record.drive, "2WD")
|
||||
|
||||
def test_russian_search_values_map_to_english_contract(self) -> None:
|
||||
record = self.mapper.listing_to_car_record(
|
||||
MobileDeListing(
|
||||
@@ -469,6 +480,64 @@ class TestMobileDeMapper(unittest.TestCase):
|
||||
self.assertFalse(record.is_damaged)
|
||||
self.assertFalse(record.new_car)
|
||||
|
||||
def test_russian_gold_color_maps_to_english_contract(self) -> None:
|
||||
record = self.mapper.listing_to_car_record(
|
||||
MobileDeListing(
|
||||
id="2002",
|
||||
url="https://suchen.mobile.de/fahrzeuge/details.html?id=2002",
|
||||
title="BMW X2",
|
||||
raw={"attr": {"ecol": "Золотистый Металлик Матовый"}},
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(record.color, "gold")
|
||||
|
||||
def test_truncated_white_color_maps_to_english_contract(self) -> None:
|
||||
record = self.mapper.listing_to_car_record(
|
||||
MobileDeListing(
|
||||
id="2003",
|
||||
url="https://suchen.mobile.de/fahrzeuge/details.html?id=2003",
|
||||
title="BMW 320",
|
||||
raw={"attr": {"ecol": "Wei"}},
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(record.color, "white")
|
||||
|
||||
def test_unknown_color_maps_to_other(self) -> None:
|
||||
record = self.mapper.listing_to_car_record(
|
||||
MobileDeListing(
|
||||
id="2004",
|
||||
url="https://suchen.mobile.de/fahrzeuge/details.html?id=2004",
|
||||
title="BMW 320",
|
||||
raw={"attr": {"ecol": "Неизвестное покрытие"}},
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(record.color, "other")
|
||||
|
||||
def test_right_hand_drive_maps_from_russian_feature(self) -> None:
|
||||
record = self.mapper.detail_to_car_record(
|
||||
"2005",
|
||||
{
|
||||
"shortTitle": "BMW 320",
|
||||
"features": ["Правый руль"],
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(record.steering_wheel, "RIGHT")
|
||||
|
||||
def test_right_hand_drive_maps_from_explicit_flag(self) -> None:
|
||||
record = self.mapper.detail_to_car_record(
|
||||
"2006",
|
||||
{
|
||||
"shortTitle": "BMW 320",
|
||||
"rightHandDrive": True,
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(record.steering_wheel, "RIGHT")
|
||||
|
||||
def test_russian_detail_values_and_exact_gallery_map_to_english_contract(self) -> None:
|
||||
first = "img.classistatic.de/api/v1/mo-prod/images/a1/a1111111-1111-4111-8111-111111111111"
|
||||
second = "img.classistatic.de/api/v1/mo-prod/images/b2/b2222222-2222-4222-8222-222222222222"
|
||||
@@ -482,6 +551,11 @@ class TestMobileDeMapper(unittest.TestCase):
|
||||
"model": {"localized": "Macan"},
|
||||
"price": {"grs": {"amount": 59900, "currency": "EUR"}},
|
||||
"isConditionNew": "false",
|
||||
"isDamageCase": True,
|
||||
"features": [
|
||||
"Привод на четыре колеса",
|
||||
"Машина некурящего водителя",
|
||||
],
|
||||
"attributes": [
|
||||
{"tag": "firstRegistration", "value": "04/2022"},
|
||||
{"tag": "mileage", "value": "149 300 км"},
|
||||
@@ -503,8 +577,12 @@ class TestMobileDeMapper(unittest.TestCase):
|
||||
self.assertEqual(record.gearbox, "AT")
|
||||
self.assertEqual(record.body_type, "SUV")
|
||||
self.assertEqual(record.engine_volume, 2894)
|
||||
self.assertEqual(record.drive, "4WD")
|
||||
self.assertTrue(record.one_owner)
|
||||
self.assertTrue(record.is_damaged)
|
||||
self.assertTrue(record.non_smoking)
|
||||
self.assertTrue(record.repair_history)
|
||||
self.assertFalse(record.rental)
|
||||
self.assertFalse(record.new_car)
|
||||
self.assertEqual(len(record.images), 2)
|
||||
self.assertEqual(
|
||||
@@ -515,6 +593,42 @@ class TestMobileDeMapper(unittest.TestCase):
|
||||
],
|
||||
)
|
||||
|
||||
def test_detail_is_new_ad_does_not_mean_new_car(self) -> None:
|
||||
record = self.mapper.detail_to_car_record(
|
||||
"2003",
|
||||
{
|
||||
"shortTitle": "BMW X5",
|
||||
"make": {"localized": "BMW"},
|
||||
"model": {"localized": "X5"},
|
||||
"isNew": True,
|
||||
"isConditionNew": False,
|
||||
"attributes": [
|
||||
{"tag": "firstRegistration", "value": "05/2023"},
|
||||
{"tag": "mileage", "value": "108 398 км"},
|
||||
{"tag": "damageCondition", "value": "Подержанный"},
|
||||
],
|
||||
},
|
||||
)
|
||||
|
||||
self.assertFalse(record.new_car)
|
||||
|
||||
def test_russian_mechanics_and_bmw_ix_body_are_mapped(self) -> None:
|
||||
record = self.mapper.detail_to_car_record(
|
||||
"2004",
|
||||
{
|
||||
"shortTitle": "BMW iX3",
|
||||
"make": {"localized": "BMW"},
|
||||
"model": {"localized": "iX3"},
|
||||
"attributes": [
|
||||
{"tag": "transmission", "value": "Механика"},
|
||||
{"tag": "category", "value": "Иное"},
|
||||
],
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(record.gearbox, "MT")
|
||||
self.assertEqual(record.body_type, "SUV")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user