41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
def test_promo_crawlers_append_full_snapshots_for_unchanged_items():
|
|
scheduler_source = (ROOT / "scheduler.py").read_text(encoding="utf-8")
|
|
|
|
assert 'status_change=status_change if is_changed else "ACTIVE"' in scheduler_source
|
|
assert "snapshot_count = 0" in scheduler_source
|
|
assert "snapshot_count += 1" in scheduler_source
|
|
assert '"snapshot_records": snapshot_count' in scheduler_source
|
|
assert "無變動快照已寫入" in scheduler_source
|
|
assert "Snapshot Written" in scheduler_source
|
|
assert "Skip Write" not in scheduler_source
|
|
assert "無變動跳過" not in scheduler_source
|
|
|
|
|
|
def test_promo_product_model_contains_crawled_fields_needed_for_history():
|
|
model_source = (ROOT / "database/edm_models.py").read_text(encoding="utf-8")
|
|
|
|
for field in [
|
|
"batch_id",
|
|
"crawled_at",
|
|
"time_slot",
|
|
"activity_time_text",
|
|
"session_time_text",
|
|
"i_code",
|
|
"name",
|
|
"price",
|
|
"discount_text",
|
|
"url",
|
|
"image_url",
|
|
"previous_price",
|
|
"remain_qty",
|
|
"status_change",
|
|
"page_type",
|
|
]:
|
|
assert field in model_source
|