Preserve confirmed vehicle details
This commit is contained in:
@@ -40,6 +40,9 @@ class TestPersistenceServiceIntegration(unittest.TestCase):
|
||||
origin_url=f"https://www.MOBILEDE.com/VehicleDetail/{origin_id}~US",
|
||||
origin_id=origin_id,
|
||||
slug=f"toyota-camry-{origin_id}",
|
||||
details_confirmed=True,
|
||||
images_confirmed=True,
|
||||
preserve_existing_details=False,
|
||||
images=[
|
||||
ImageRecord(
|
||||
fullres_image="https://vis.MOBILEDE.com/resizer?imageKeys=1&width=845&height=633",
|
||||
@@ -131,6 +134,89 @@ class TestPersistenceServiceIntegration(unittest.TestCase):
|
||||
self.assertEqual(result["images_upserted"], 1)
|
||||
self.assertEqual(len(images), 1)
|
||||
|
||||
def test_search_update_preserves_confirmed_details_and_gallery(self) -> None:
|
||||
detail = self._record("mobile.de:confirmed", price=1000)
|
||||
detail.drive = "4WD"
|
||||
detail.gearbox = "AT"
|
||||
detail.body_type = "SUV"
|
||||
detail.engine_volume = 1998
|
||||
detail.color = "black"
|
||||
detail.mileage = 45000
|
||||
detail.images = [
|
||||
ImageRecord(
|
||||
fullres_image=f"https://example.test/detail-{index}.jpg",
|
||||
preview_image=f"https://example.test/detail-{index}-preview.jpg",
|
||||
order_index=index,
|
||||
)
|
||||
for index in range(3)
|
||||
]
|
||||
self.persistence.upsert_car(detail)
|
||||
|
||||
search = self._record("mobile.de:confirmed", price=1200)
|
||||
search.details_confirmed = False
|
||||
search.images_confirmed = False
|
||||
search.preserve_existing_details = True
|
||||
search.drive = None
|
||||
search.gearbox = None
|
||||
search.body_type = "OTHER"
|
||||
search.engine_volume = None
|
||||
search.color = "other"
|
||||
search.mileage = 0
|
||||
search.images = [
|
||||
ImageRecord(
|
||||
fullres_image="https://example.test/search.jpg",
|
||||
preview_image="https://example.test/search-preview.jpg",
|
||||
order_index=0,
|
||||
)
|
||||
]
|
||||
self.persistence.upsert_car(search)
|
||||
|
||||
with self.persistence.session_scope() as session:
|
||||
car = session.execute(select(Car).where(Car.origin_id == detail.origin_id)).scalar_one()
|
||||
images = session.execute(
|
||||
select(Image).where(Image.car_id == car.id).order_by(Image.order_index)
|
||||
).scalars().all()
|
||||
|
||||
self.assertEqual(car.price, 1200)
|
||||
self.assertEqual(car.drive, "4WD")
|
||||
self.assertEqual(car.gearbox, "AT")
|
||||
self.assertEqual(car.body_type, "SUV")
|
||||
self.assertEqual(car.engine_volume, 1998)
|
||||
self.assertEqual(car.color, "black")
|
||||
self.assertEqual(car.mileage, 45000)
|
||||
self.assertEqual([image.fullres_image for image in images], [
|
||||
"https://example.test/detail-0.jpg",
|
||||
"https://example.test/detail-1.jpg",
|
||||
"https://example.test/detail-2.jpg",
|
||||
])
|
||||
|
||||
def test_confirmed_detail_update_replaces_values_and_gallery(self) -> None:
|
||||
first = self._record("mobile.de:detail-refresh")
|
||||
first.drive = "FWD"
|
||||
first.body_type = "SEDAN"
|
||||
self.persistence.upsert_car(first)
|
||||
|
||||
refreshed = self._record("mobile.de:detail-refresh", price=2000)
|
||||
refreshed.drive = "RWD"
|
||||
refreshed.body_type = "COUPE"
|
||||
refreshed.images = [
|
||||
ImageRecord(
|
||||
fullres_image="https://example.test/refreshed.jpg",
|
||||
preview_image="https://example.test/refreshed-preview.jpg",
|
||||
order_index=0,
|
||||
)
|
||||
]
|
||||
self.persistence.upsert_car(refreshed)
|
||||
|
||||
with self.persistence.session_scope() as session:
|
||||
car = session.execute(select(Car).where(Car.origin_id == first.origin_id)).scalar_one()
|
||||
images = session.execute(select(Image).where(Image.car_id == car.id)).scalars().all()
|
||||
|
||||
self.assertEqual(car.price, 2000)
|
||||
self.assertEqual(car.drive, "RWD")
|
||||
self.assertEqual(car.body_type, "COUPE")
|
||||
self.assertEqual([image.fullres_image for image in images], ["https://example.test/refreshed.jpg"])
|
||||
|
||||
def test_start_sync_run_marks_stale_running_runs_as_failed(self) -> None:
|
||||
first_run_id = self.persistence.start_sync_run("lane-a")
|
||||
second_run_id = self.persistence.start_sync_run("lane-b")
|
||||
|
||||
Reference in New Issue
Block a user