Normalize image galleries
This commit is contained in:
+39
-18
@@ -11,10 +11,12 @@ class TestMobileDeMapper(unittest.TestCase):
|
||||
self.mapper = MobileDeMapper()
|
||||
|
||||
def test_deduplicates_images(self) -> None:
|
||||
first = "https://img.classistatic.de/api/v1/mo-prod/images/a1/a1111111-1111-4111-8111-111111111111"
|
||||
second = "https://img.classistatic.de/api/v1/mo-prod/images/b2/b2222222-2222-4222-8222-222222222222"
|
||||
urls = [
|
||||
"https://img.classistatic.de/api/v1/mo-prod/images/1",
|
||||
"https://img.classistatic.de/api/v1/mo-prod/images/1",
|
||||
"//img.classistatic.de/api/v1/mo-prod/images/2",
|
||||
f"{first}?rule=mo-80w",
|
||||
f"{first}?rule=mo-1600",
|
||||
second.replace("https:", ""),
|
||||
]
|
||||
|
||||
record = self.mapper.listing_to_car_record(
|
||||
@@ -27,8 +29,10 @@ class TestMobileDeMapper(unittest.TestCase):
|
||||
)
|
||||
|
||||
self.assertEqual(len(record.images), 2)
|
||||
self.assertEqual(record.images[0].fullres_image, f"{urls[0]}?rule=mo-640.jpg")
|
||||
self.assertEqual(record.images[1].fullres_image, "https://img.classistatic.de/api/v1/mo-prod/images/2?rule=mo-640.jpg")
|
||||
self.assertEqual(record.images[0].fullres_image, f"{first}?rule=mo-1600")
|
||||
self.assertEqual(record.images[0].preview_image, f"{first}?rule=mo-360")
|
||||
self.assertEqual(record.images[1].fullres_image, f"{second}?rule=mo-1600")
|
||||
self.assertEqual(record.images[1].preview_image, f"{second}?rule=mo-360")
|
||||
|
||||
def test_extracts_nested_gallery_images_without_detail_fetch(self) -> None:
|
||||
record = self.mapper.listing_to_car_record(
|
||||
@@ -37,11 +41,11 @@ class TestMobileDeMapper(unittest.TestCase):
|
||||
url="https://suchen.mobile.de/fahrzeuge/details.html?id=124",
|
||||
title="Honda Civic",
|
||||
raw={
|
||||
"image": "https://img.classistatic.de/api/v1/mo-prod/images/main",
|
||||
"images": [{"ref": "img.classistatic.de/api/v1/mo-prod/images/ref-1"}],
|
||||
"image": "https://img.classistatic.de/api/v1/mo-prod/images/a1/a1111111-1111-4111-8111-111111111111",
|
||||
"images": [{"ref": "img.classistatic.de/api/v1/mo-prod/images/b2/b2222222-2222-4222-8222-222222222222"}],
|
||||
"mediaGallery": [
|
||||
{"uri": "//img.classistatic.de/api/v1/mo-prod/images/gallery-1"},
|
||||
{"picture": {"src": "https://img.classistatic.de/api/v1/mo-prod/images/gallery-2"}},
|
||||
{"uri": "//img.classistatic.de/api/v1/mo-prod/images/c3/c3333333-3333-4333-8333-333333333333"},
|
||||
{"picture": {"src": "https://img.classistatic.de/api/v1/mo-prod/images/d4/d4444444-4444-4444-8444-444444444444"}},
|
||||
],
|
||||
"trackingUrl": "https://example.test/not-an-image",
|
||||
},
|
||||
@@ -51,28 +55,45 @@ class TestMobileDeMapper(unittest.TestCase):
|
||||
self.assertEqual(
|
||||
[image.fullres_image for image in record.images],
|
||||
[
|
||||
"https://img.classistatic.de/api/v1/mo-prod/images/main?rule=mo-640.jpg",
|
||||
"https://img.classistatic.de/api/v1/mo-prod/images/ref-1?rule=mo-640.jpg",
|
||||
"https://img.classistatic.de/api/v1/mo-prod/images/gallery-1?rule=mo-640.jpg",
|
||||
"https://img.classistatic.de/api/v1/mo-prod/images/gallery-2?rule=mo-640.jpg",
|
||||
"https://img.classistatic.de/api/v1/mo-prod/images/a1/a1111111-1111-4111-8111-111111111111?rule=mo-1600",
|
||||
"https://img.classistatic.de/api/v1/mo-prod/images/b2/b2222222-2222-4222-8222-222222222222?rule=mo-1600",
|
||||
"https://img.classistatic.de/api/v1/mo-prod/images/c3/c3333333-3333-4333-8333-333333333333?rule=mo-1600",
|
||||
"https://img.classistatic.de/api/v1/mo-prod/images/d4/d4444444-4444-4444-8444-444444444444?rule=mo-1600",
|
||||
],
|
||||
)
|
||||
|
||||
def test_keeps_existing_mobilede_image_rule(self) -> None:
|
||||
def test_replaces_existing_mobilede_image_rule(self) -> None:
|
||||
source = "https://img.classistatic.de/api/v1/mo-prod/images/a1/a1111111-1111-4111-8111-111111111111"
|
||||
record = self.mapper.listing_to_car_record(
|
||||
MobileDeListing(
|
||||
id="125",
|
||||
url="https://suchen.mobile.de/fahrzeuge/details.html?id=125",
|
||||
title="BMW 320",
|
||||
raw={"images": [{"uri": "img.classistatic.de/api/v1/mo-prod/images/abc?rule=mo-1024.jpg"}]},
|
||||
raw={"images": [{"uri": f"{source}?rule=mo-80w"}]},
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
[image.fullres_image for image in record.images],
|
||||
["https://img.classistatic.de/api/v1/mo-prod/images/abc?rule=mo-1024.jpg"],
|
||||
self.assertEqual(record.images[0].fullres_image, f"{source}?rule=mo-1600")
|
||||
self.assertEqual(record.images[0].preview_image, f"{source}?rule=mo-360")
|
||||
|
||||
def test_rejects_non_vehicle_mobilede_images(self) -> None:
|
||||
record = self.mapper.listing_to_car_record(
|
||||
MobileDeListing(
|
||||
id="126",
|
||||
url="https://suchen.mobile.de/fahrzeuge/details.html?id=126",
|
||||
title="BMW 320",
|
||||
raw={
|
||||
"images": [
|
||||
"https://img.classistatic.de/api/v1/mo-prod/images/co2class-G?rule=mo-640",
|
||||
"https://img.classistatic.de/images/logo.svg",
|
||||
"https://example.test/image.jpg",
|
||||
]
|
||||
},
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(record.images, [])
|
||||
|
||||
def test_origin_id_uses_canonical_prefix(self) -> None:
|
||||
record = self.mapper.listing_to_car_record(
|
||||
MobileDeListing(
|
||||
|
||||
Reference in New Issue
Block a user