add sync coverage tests
This commit is contained in:
@@ -122,6 +122,50 @@ class TestPersistenceServiceIntegration(unittest.TestCase):
|
||||
self.assertEqual(len(cars), 1)
|
||||
self.assertEqual(cars[0].origin_id, "NEW-ID")
|
||||
|
||||
def test_mark_sold_by_urls_marks_missing_records(self) -> None:
|
||||
first = self._record("111")
|
||||
second = self._record("222")
|
||||
first.origin_id = "dubizzle:111"
|
||||
second.origin_id = "dubizzle:222"
|
||||
self.persistence.upsert_car(first)
|
||||
self.persistence.upsert_car(second)
|
||||
|
||||
marked = self.persistence.mark_sold_not_in_listing_by_urls({first.origin_url})
|
||||
|
||||
self.assertEqual(marked, 1)
|
||||
with self.persistence.session_scope() as session:
|
||||
cars = {
|
||||
car.origin_id: car
|
||||
for car in session.execute(select(Car)).scalars().all()
|
||||
}
|
||||
|
||||
self.assertFalse(cars["dubizzle:111"].is_sold)
|
||||
self.assertTrue(cars["dubizzle:222"].is_sold)
|
||||
|
||||
def test_upsert_reactivates_previously_sold_car(self) -> None:
|
||||
record = self._record("333", price=1000)
|
||||
record.origin_id = "dubizzle:333"
|
||||
self.persistence.upsert_car(record)
|
||||
self.persistence.mark_sold_not_in_listing_by_urls({"https://www.dubizzle.com/VehicleDetail/other~US"})
|
||||
|
||||
with self.persistence.session_scope() as session:
|
||||
sold_car = session.execute(
|
||||
select(Car).where(Car.origin_id == "dubizzle:333")
|
||||
).scalar_one()
|
||||
self.assertTrue(sold_car.is_sold)
|
||||
|
||||
revived = self._record("333", price=1500)
|
||||
revived.origin_id = "dubizzle:333"
|
||||
self.persistence.upsert_car(revived)
|
||||
|
||||
with self.persistence.session_scope() as session:
|
||||
active_car = session.execute(
|
||||
select(Car).where(Car.origin_id == "dubizzle:333")
|
||||
).scalar_one()
|
||||
|
||||
self.assertFalse(active_car.is_sold)
|
||||
self.assertEqual(active_car.price, 1500)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user