aboutsummaryrefslogtreecommitdiff
path: root/test_utils/models
diff options
context:
space:
mode:
Diffstat (limited to 'test_utils/models')
-rw-r--r--test_utils/models/conftest.py31
-rw-r--r--test_utils/models/gr/conftest.py10
-rw-r--r--test_utils/models/thl/conftest.py61
3 files changed, 49 insertions, 53 deletions
diff --git a/test_utils/models/conftest.py b/test_utils/models/conftest.py
index ed4da08..d71593f 100644
--- a/test_utils/models/conftest.py
+++ b/test_utils/models/conftest.py
@@ -286,36 +286,7 @@ def session(
return session
-@pytest.fixture
-def product(request: Request, product_manager: ProductManager) -> Product:
-
- team = getattr(request, "team", None)
- business = getattr(request, "business", None)
-
- return product_manager.create_dummy(
- team_id=team.uuid if team else None,
- business_id=business.uuid if business else None,
- )
-
-
-@pytest.fixture
-def product_factory(product_manager: ProductManager) -> Callable[..., Product]:
-
- def _inner(
- team: Team | None = None,
- business: Business | None = None,
- commission_pct: Decimal = Decimal("0.05"),
- ) -> Product:
- return product_manager.create_dummy(
- team_id=team.uuid if team else None,
- business_id=business.uuid if business else None,
- commission_pct=commission_pct,
- )
-
- return _inner
-
-
-@pytest.fixture
+@pytest.fixture()
def payout_config(request: Request) -> PayoutConfig:
from generalresearch.models.thl.product import (
PayoutConfig,
diff --git a/test_utils/models/gr/conftest.py b/test_utils/models/gr/conftest.py
index a5abf74..3dd73a1 100644
--- a/test_utils/models/gr/conftest.py
+++ b/test_utils/models/gr/conftest.py
@@ -207,8 +207,10 @@ def gr_team_factory(
**kwargs,
) -> Team:
+ name = name or f"<Team ({uuid4().hex[:6]})>"
+
if save:
- return gr_team_manager.create(uuid=uuid, name=name, **kwargs)
+ return gr_team_manager.create(name=name, uuid=uuid, **kwargs)
else:
raise ValueError("BusinessBankAccount Business not supported yet")
@@ -325,12 +327,12 @@ def gr_user_token_header(gr_user_token: GRToken) -> dict[str, str]:
@pytest.fixture()
def gr_membership_factory(
- gr_team: Team,
- gr_user: GRUser,
gr_membership_manager: MembershipManager,
) -> Callable[..., Membership]:
- def _inner(save: bool = True, **kwargs) -> Membership:
+ def _inner(
+ gr_team: Team, gr_user: GRUser, save: bool = True, **kwargs
+ ) -> Membership:
if save:
return gr_membership_manager.create(team=gr_team, gr_user=gr_user, **kwargs)
else:
diff --git a/test_utils/models/thl/conftest.py b/test_utils/models/thl/conftest.py
index 3545509..badd87c 100644
--- a/test_utils/models/thl/conftest.py
+++ b/test_utils/models/thl/conftest.py
@@ -39,6 +39,7 @@ if TYPE_CHECKING:
from generalresearch.managers.thl.userhealth import AuditLogManager, IPRecordManager
from generalresearch.managers.thl.wall import WallManager
from generalresearch.models.definitions import DeviceType
+ from generalresearch.models.gr.team import Team
from generalresearch.models.legacy.bucket import Bucket
from generalresearch.models.thl.ipinfo import IPGeoname, IPInformation
from generalresearch.models.thl.payout import UserPayoutEvent
@@ -144,12 +145,18 @@ def wall_factory(
return _inner
-@pytest.fixture
+# --- Product ---
+
+
+@pytest.fixture()
def product_factory(product_manager: ProductManager) -> Callable[..., Product]:
def _inner(
+ save: bool = True,
+ team: Team | None = None,
+ # business: Business | None = None,
+ # commission_pct: Decimal = Decimal("0.05"),
product_id: UUIDStr | None = None,
- team_id: UUIDStr | None = None,
business_id: UUIDStr | None = None,
name: str | None = None,
redirect_url: str | None = None,
@@ -165,30 +172,46 @@ def product_factory(product_manager: ProductManager) -> Callable[..., Product]:
) -> Product:
"""To be used in tests, where we don't care about certain fields"""
product_id = product_id if product_id else uuid4().hex
- team_id = team_id if team_id else uuid4().hex
+ team_id = team.uuid if team else uuid4().hex
name = name if name else f"name-{product_id[:12]}"
redirect_url = redirect_url if redirect_url else "https://www.example.com/"
- return product_manager.create(
- product_id=product_id,
- team_id=team_id,
- business_id=business_id,
- name=name,
- redirect_url=redirect_url,
- harmonizer_domain=harmonizer_domain,
- commission_pct=commission_pct,
- sources_config=sources_config,
- payout_config=payout_config,
- session_config=session_config,
- profiling_config=profiling_config,
- user_wallet_config=user_wallet_config,
- user_create_config=user_create_config,
- user_health_config=user_health_config,
- )
+ if save:
+ return product_manager.create(
+ product_id=product_id,
+ team_id=team_id,
+ business_id=business_id,
+ name=name,
+ redirect_url=redirect_url,
+ harmonizer_domain=harmonizer_domain,
+ commission_pct=commission_pct,
+ sources_config=sources_config,
+ payout_config=payout_config,
+ session_config=session_config,
+ profiling_config=profiling_config,
+ user_wallet_config=user_wallet_config,
+ user_create_config=user_create_config,
+ user_health_config=user_health_config,
+ )
+ else:
+ raise ValueError("Unsaved Product not yet supported")
return _inner
+@pytest.fixture()
+def product(product_factory: Callable[..., Product]) -> Product:
+ return product_factory(save=True)
+
+
+@pytest.fixture()
+def unsaved_product(product_factory: Callable[..., Product]) -> Product:
+ return product_factory(save=False)
+
+
+# --- Session ---
+
+
@pytest.fixture
def session_factory(session_manager: SessionManager):