from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from app.db.base import Base
from app.crud.orders import create_order, get_order, delete_order


def setup_in_memory_db():
    engine = create_engine("sqlite:///:memory:", future=True)
    TestingSessionLocal = sessionmaker(bind=engine)
    Base.metadata.create_all(bind=engine)
    return TestingSessionLocal()


def test_create_and_get_order():
    db = setup_in_memory_db()
    data = {"order_number": "ORD-001", "client_id": 1}
    order = create_order(db, order_data=data)
    assert order.id is not None

    fetched = get_order(db, order.id)
    assert fetched is not None
    assert fetched.order_number == data["order_number"]


def test_delete_order():
    db = setup_in_memory_db()
    data = {"order_number": "ORD-002", "client_id": 2}
    order = create_order(db, order_data=data)
    deleted = delete_order(db, order)
    assert deleted is True
    assert get_order(db, order.id) is None
