69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from openlane_scraper.scraper import OpenLaneScraper
|
|
from openlane_scraper.storage.schemas import ImageRecord
|
|
|
|
|
|
class TestScraperImageHelpers(unittest.TestCase):
|
|
def test_build_image_records_supports_image_large_and_image(self) -> None:
|
|
payload = [
|
|
{
|
|
"image": "https://img.cdn/vehicle-medium-1.jpg",
|
|
"image_large": "https://img.cdn/vehicle-large-1.jpg",
|
|
},
|
|
{
|
|
"image": "https://img.cdn/vehicle-medium-2.jpg",
|
|
"large_resolution_url": "https://img.cdn/vehicle-large-2.jpg",
|
|
"low_resolution_url": "https://img.cdn/vehicle-low-2.jpg",
|
|
},
|
|
]
|
|
|
|
records = OpenLaneScraper._build_image_records(payload)
|
|
|
|
self.assertEqual(len(records), 2)
|
|
self.assertEqual(records[0].fullres_image, "https://img.cdn/vehicle-large-1.jpg")
|
|
self.assertEqual(records[0].preview_image, "https://img.cdn/vehicle-medium-1.jpg")
|
|
self.assertEqual(records[1].fullres_image, "https://img.cdn/vehicle-large-2.jpg")
|
|
self.assertEqual(records[1].preview_image, "https://img.cdn/vehicle-low-2.jpg")
|
|
|
|
def test_merge_image_records_keeps_unique_and_reindexes(self) -> None:
|
|
existing = [
|
|
ImageRecord(
|
|
fullres_image="https://img.cdn/1.jpg",
|
|
preview_image="https://img.cdn/1_small.jpg",
|
|
order_index=10,
|
|
),
|
|
ImageRecord(
|
|
fullres_image="https://img.cdn/2.jpg",
|
|
preview_image="https://img.cdn/2_small.jpg",
|
|
order_index=11,
|
|
),
|
|
]
|
|
fetched = [
|
|
ImageRecord(
|
|
fullres_image="https://img.cdn/2.jpg",
|
|
preview_image="https://img.cdn/2_small_new.jpg",
|
|
order_index=0,
|
|
),
|
|
ImageRecord(
|
|
fullres_image="https://img.cdn/3.jpg",
|
|
preview_image="https://img.cdn/3_small.jpg",
|
|
order_index=1,
|
|
),
|
|
]
|
|
|
|
merged = OpenLaneScraper._merge_image_records(existing, fetched)
|
|
|
|
self.assertEqual([img.fullres_image for img in merged], [
|
|
"https://img.cdn/2.jpg",
|
|
"https://img.cdn/3.jpg",
|
|
"https://img.cdn/1.jpg",
|
|
])
|
|
self.assertEqual([img.order_index for img in merged], [0, 1, 2])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|