gendesign/tradein-mvp/backend/tests
lekss361 702cb2b7d0 feat(tradein): extend save_listings INSERT to persist Cian-specific columns (PR #450 follow-up)
Extends base.py save_listings() to persist all 13 Cian-specific columns
added to ScrapedLot in PR #447 and listings DDL in migration 019:
living_area_m2, bedrooms_count, balconies_count, loggias_count,
description_minhash, cadastral_number, building_cadastral_number,
phones, is_homeowner, is_pro_seller, bargain_allowed, sale_type,
metro_stations.

ON CONFLICT DO UPDATE SET extended to refresh all new columns on re-scrape.
Avito/DomRF backward compat: optional fields default None → SQL NULL.

Adds 6 unit tests (test_base_save_listings.py) covering Cian INSERT,
Avito null compat, ON CONFLICT UPDATE SQL text, empty phones/metro → NULL.
2026-05-23 15:58:02 +03:00
..
__init__.py feat(tradein): avito_imv.py — Avito IMV evaluation API client (2 requests) (#444) 2026-05-23 12:16:47 +00:00
test_avito_detail_parse.py feat(tradein): avito_detail.py — detail page parser (30+ fields incl. domoteka) (#443) 2026-05-23 12:17:15 +00:00
test_avito_houses_parse.py feat(tradein): avito_houses.py — Houses Catalog parser (state + reviews + history + recs) (#449) 2026-05-23 12:37:24 +00:00
test_avito_imv_parse.py feat(tradein): avito_imv.py — Avito IMV evaluation API client (2 requests) (#444) 2026-05-23 12:16:47 +00:00
test_base_save_listings.py feat(tradein): extend save_listings INSERT to persist Cian-specific columns (PR #450 follow-up) 2026-05-23 15:58:02 +03:00
test_cian_serp_scraper.py feat(tradein): cian.py SERP refactor — state-based extraction (137 fields, no jitter) (#450) 2026-05-23 12:52:04 +00:00
test_cian_state_parser.py feat(tradein): cian_state_parser shared utility + ScrapedLot Cian fields (#447) 2026-05-23 12:35:01 +00:00