78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
import pytest
|
|
from pathlib import Path
|
|
from app.db.store import Store
|
|
from app.db.models import Listing, Seller, TrustScore, MarketComp
|
|
|
|
|
|
@pytest.fixture
|
|
def store(tmp_path):
|
|
return Store(tmp_path / "test.db")
|
|
|
|
|
|
def test_store_creates_tables(store):
|
|
# If no exception on init, tables exist
|
|
pass
|
|
|
|
|
|
def test_save_and_get_seller(store):
|
|
seller = Seller(
|
|
platform="ebay",
|
|
platform_seller_id="user123",
|
|
username="techseller",
|
|
account_age_days=730,
|
|
feedback_count=450,
|
|
feedback_ratio=0.991,
|
|
category_history_json="{}",
|
|
)
|
|
store.save_seller(seller)
|
|
result = store.get_seller("ebay", "user123")
|
|
assert result is not None
|
|
assert result.username == "techseller"
|
|
assert result.feedback_count == 450
|
|
|
|
|
|
def test_save_and_get_listing(store):
|
|
listing = Listing(
|
|
platform="ebay",
|
|
platform_listing_id="ebay-123",
|
|
title="RTX 4090 FE",
|
|
price=950.00,
|
|
currency="USD",
|
|
condition="used",
|
|
seller_platform_id="user123",
|
|
url="https://ebay.com/itm/123",
|
|
photo_urls=["https://i.ebayimg.com/1.jpg"],
|
|
listing_age_days=3,
|
|
)
|
|
store.save_listing(listing)
|
|
result = store.get_listing("ebay", "ebay-123")
|
|
assert result is not None
|
|
assert result.title == "RTX 4090 FE"
|
|
assert result.price == 950.00
|
|
|
|
|
|
def test_save_and_get_market_comp(store):
|
|
comp = MarketComp(
|
|
platform="ebay",
|
|
query_hash="abc123",
|
|
median_price=1050.0,
|
|
sample_count=12,
|
|
expires_at="2026-03-26T00:00:00",
|
|
)
|
|
store.save_market_comp(comp)
|
|
result = store.get_market_comp("ebay", "abc123")
|
|
assert result is not None
|
|
assert result.median_price == 1050.0
|
|
|
|
|
|
def test_get_market_comp_returns_none_for_expired(store):
|
|
comp = MarketComp(
|
|
platform="ebay",
|
|
query_hash="expired",
|
|
median_price=900.0,
|
|
sample_count=5,
|
|
expires_at="2020-01-01T00:00:00", # past
|
|
)
|
|
store.save_market_comp(comp)
|
|
result = store.get_market_comp("ebay", "expired")
|
|
assert result is None
|