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()