diff --git a/dibbler/queries/users_owning_product.py b/dibbler/queries/product_owners.py similarity index 96% rename from dibbler/queries/users_owning_product.py rename to dibbler/queries/product_owners.py index a4947a9..b751519 100644 --- a/dibbler/queries/users_owning_product.py +++ b/dibbler/queries/product_owners.py @@ -18,14 +18,14 @@ from dibbler.models import ( from dibbler.queries.product_stock import _product_stock_query -def _users_owning_product_query( +def _product_owners_query( product_id: int, use_cache: bool = True, until: datetime | None = None, cte_name: str = "rec_cte", ) -> CTE: """ - The inner query for calculating the users owning a given product. + The inner query for inferring the owners of a given product. """ if use_cache: @@ -134,7 +134,7 @@ def _users_owning_product_query( return recursive_cte.union_all(recursive_elements) -def users_owning_product( +def product_owners( sql_session: Session, product: Product, use_cache: bool = True, @@ -146,12 +146,11 @@ def users_owning_product( If 'until' is given, only transactions up to that time are considered. """ - recursive_cte = _users_owning_product_query( + recursive_cte = _product_owners_query( product_id=product.id, use_cache=use_cache, until=until, ) - result = sql_session.scalars( select( recursive_cte.c.user_id, diff --git a/tests/queries/test_product_owners.py b/tests/queries/test_product_owners.py new file mode 100644 index 0000000..3dc0a7d --- /dev/null +++ b/tests/queries/test_product_owners.py @@ -0,0 +1,12 @@ +from sqlalchemy.orm import Session + +def test_product_owners_no_transactions(sql_session: Session) -> None: ... +def test_product_owners_add_products(sql_session: Session) -> None: ... +def test_product_owners_add_and_buy_products(sql_session: Session) -> None: ... +def test_product_owners_add_and_throw_products(sql_session: Session) -> None: ... +def test_product_owners_multiple_users(sql_session: Session) -> None: ... +def test_product_owners_adjust_stock_down(sql_session: Session) -> None: ... +def test_product_owners_adjust_stock_up(sql_session: Session) -> None: ... +def test_product_owners_negative_stock(sql_session: Session) -> None: ... +def test_product_owners_add_products_from_negative_stock(sql_session: Session) -> None: ... +def test_product_owners_interleaved_users(sql_session: Session) -> None: ...