"""
Tests de charge legere pour la persistence (100 snapshots).
"""

from datetime import datetime

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

from pricewatch.app.core.schema import DebugInfo, DebugStatus, FetchMethod, ProductSnapshot
from pricewatch.app.db.models import Base, Product
from pricewatch.app.db.repository import ProductRepository


def test_bulk_save_100_snapshots():
    """Le repository persiste 100 snapshots sans erreur."""
    engine = create_engine("sqlite:///:memory:")
    Base.metadata.create_all(engine)
    session = sessionmaker(bind=engine)()

    try:
        repo = ProductRepository(session)
        for idx in range(100):
            snapshot = ProductSnapshot(
                source="amazon",
                url=f"https://example.com/product/{idx}",
                fetched_at=datetime(2026, 1, 14, 14, 0, 0),
                title=f"Produit {idx}",
                price=10.0 + idx,
                currency="EUR",
                reference=f"REF-{idx}",
                debug=DebugInfo(method=FetchMethod.HTTP, status=DebugStatus.SUCCESS),
            )
            repo.save_snapshot(snapshot)
        session.commit()

        assert session.query(Product).count() == 100
    finally:
        session.close()
        engine.dispose()
