aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstuppie2026-09-04 12:54:13 -0600
committerstuppie2026-09-04 12:54:13 -0600
commitf8f1f07b193845d92c7f6ef8ae95b9696db6330f (patch)
treec27e9d60dd6f71d309ef5c3f992d29500d1cd093
parent4b705346968e38671ac9601cfa8444c944ecc8bd (diff)
downloadgeneralresearch-f8f1f07b193845d92c7f6ef8ae95b9696db6330f.tar.gz
generalresearch-f8f1f07b193845d92c7f6ef8ae95b9696db6330f.zip
fix a lot of tests
-rw-r--r--generalresearch/currency.py12
-rw-r--r--generalresearch/grliq/models/forensic_data.py14
-rw-r--r--generalresearch/incite/mergers/foundations/enriched_wall.py3
-rw-r--r--pyproject.toml2
-rw-r--r--test_utils/managers/gr/conftest.py2
-rw-r--r--test_utils/managers/thl/conftest.py5
-rw-r--r--test_utils/models/gr/conftest.py14
-rw-r--r--tests/conftest.py2
-rw-r--r--tests/models/custom_types/test_dsn.py5
-rw-r--r--tests/models/gr/test_authentication.py63
-rw-r--r--tests/models/gr/test_business.py25
-rw-r--r--tests/models/gr/test_team.py8
-rw-r--r--tests/models/test_finance.py14
-rw-r--r--tests/models/thl/test_contest/test_leaderboard_contest.py8
-rw-r--r--tests/models/thl/test_payout_format.py8
-rw-r--r--tests/models/thl/test_product.py21
16 files changed, 84 insertions, 122 deletions
diff --git a/generalresearch/currency.py b/generalresearch/currency.py
index 716cb0f..7a9d037 100644
--- a/generalresearch/currency.py
+++ b/generalresearch/currency.py
@@ -29,12 +29,12 @@ class USDCent(int):
if isinstance(value, float):
warnings.warn(
- "USDCent init with a float. Rounding behavior may " "be unexpected"
+ "USDCent init with a float. Rounding behavior may be unexpected"
)
if isinstance(value, Decimal):
warnings.warn(
- "USDCent init with a Decimal. Rounding behavior may " "be unexpected"
+ "USDCent init with a Decimal. Rounding behavior may be unexpected"
)
if value < 0:
@@ -61,7 +61,7 @@ class USDCent(int):
res = super().__abs__()
return self.__class__(res)
- def __truediv__(self):
+ def __truediv__(self, value):
raise ValueError("Division not allowed for USDCent")
def __str__(self):
@@ -97,12 +97,12 @@ class USDMill(int):
if isinstance(value, float):
warnings.warn(
- "USDMill init with a float. Rounding behavior " "may be unexpected"
+ "USDMill init with a float. Rounding behavior may be unexpected"
)
if isinstance(value, Decimal):
warnings.warn(
- "USDMill init with a Decimal. Rounding behavior " "may be unexpected"
+ "USDMill init with a Decimal. Rounding behavior may be unexpected"
)
if value < 0:
@@ -129,7 +129,7 @@ class USDMill(int):
res = super().__abs__()
return self.__class__(res)
- def __truediv__(self):
+ def __truediv__(self, value):
raise ValueError("Division not allowed for USDMill")
def __str__(self):
diff --git a/generalresearch/grliq/models/forensic_data.py b/generalresearch/grliq/models/forensic_data.py
index 6a07774..9d69e41 100644
--- a/generalresearch/grliq/models/forensic_data.py
+++ b/generalresearch/grliq/models/forensic_data.py
@@ -53,9 +53,9 @@ from generalresearch.models.custom_types import (
IPvAnyAddressStr,
UUIDStr,
)
+from generalresearch.models.thl.ipinfo import GeoIPInformation
if TYPE_CHECKING:
- from generalresearch.models.thl.ipinfo import GeoIPInformation
from generalresearch.models.thl.session import Session
fake = Faker()
@@ -776,14 +776,14 @@ class GrlIqData(BaseModel):
# product_id and product_user_id are parsed from the post body. make sure
# they match the session whose mid was specified
assert self.product_id == session.user.product_id, "product_id mismatch"
- assert (
- self.product_user_id == session.user.product_user_id
- ), "product_user_id mismatch"
+ assert self.product_user_id == session.user.product_user_id, (
+ "product_user_id mismatch"
+ )
# validate the Session's mid is "recent"
- assert (datetime.now(tz=UTC) - session.started) < timedelta(
- minutes=90
- ), "expired session"
+ assert (datetime.now(tz=UTC) - session.started) < timedelta(minutes=90), (
+ "expired session"
+ )
def model_dump_sql(self, **kwargs) -> dict[str, Any]:
d = {}
diff --git a/generalresearch/incite/mergers/foundations/enriched_wall.py b/generalresearch/incite/mergers/foundations/enriched_wall.py
index 396c2be..70139c2 100644
--- a/generalresearch/incite/mergers/foundations/enriched_wall.py
+++ b/generalresearch/incite/mergers/foundations/enriched_wall.py
@@ -40,7 +40,6 @@ class EnrichedWallMergeItem(MergeCollectionItem):
session_coll: SessionDFCollection,
pg_config: PostgresConfig,
client: Client | None = None,
- client_resources: dict[str, Any] | None = None,
) -> None:
ir: pd.Interval = self.interval
@@ -160,7 +159,6 @@ class EnrichedWallMergeItem(MergeCollectionItem):
ddf=ddf,
is_partial=True,
validate_after=False,
- client_resources=client_resources,
)
else:
df = self.validate_df(df=df)
@@ -169,7 +167,6 @@ class EnrichedWallMergeItem(MergeCollectionItem):
client,
ddf=ddf,
is_partial=False,
- client_resources=client_resources,
)
diff --git a/pyproject.toml b/pyproject.toml
index bb23838..13fa584 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -9,12 +9,12 @@ description = "Python Utilities for General Research"
readme = "README.md"
requires-python = ">=3.8"
dependencies = [
- "fastapi",
"Faker",
"PyMySQL",
"psycopg",
"cachetools",
"decorator",
+ "influxdb",
"limits",
"more-itertools",
"numpy",
diff --git a/test_utils/managers/gr/conftest.py b/test_utils/managers/gr/conftest.py
index cc1053c..09e08f5 100644
--- a/test_utils/managers/gr/conftest.py
+++ b/test_utils/managers/gr/conftest.py
@@ -29,6 +29,8 @@ if TYPE_CHECKING:
@pytest.fixture(scope="session")
def gr_redis_config_db() -> str:
+ # need to update 'databases' in /etc/redis/redis.conf
+ # or this won't work and you'll have no indication why ...
return str(randint(99, 1_023))
diff --git a/test_utils/managers/thl/conftest.py b/test_utils/managers/thl/conftest.py
index 8ca4383..98dd574 100644
--- a/test_utils/managers/thl/conftest.py
+++ b/test_utils/managers/thl/conftest.py
@@ -93,6 +93,11 @@ def thl_redis_config(
@pytest.fixture(scope="session")
+def thl_redis_client(thl_redis_config):
+ return thl_redis_config.create_redis_client()
+
+
+@pytest.fixture(scope="session")
def thl_web_rr(django_db_factory: Callable[..., PostgresDsn]) -> PostgresConfig:
_dsn = django_db_factory("generalresearch.thl_django")
diff --git a/test_utils/models/gr/conftest.py b/test_utils/models/gr/conftest.py
index 1dbea0c..a48656b 100644
--- a/test_utils/models/gr/conftest.py
+++ b/test_utils/models/gr/conftest.py
@@ -12,7 +12,7 @@ from pydantic_extra_types.phone_numbers import PhoneNumber
from generalresearch.models.custom_types import UUIDStr
if TYPE_CHECKING:
- from generalresearch.managers.gr.authentication import GRTokenManager, GRUserManager
+ from generalresearch.managers.gr.authentication import GRUserManager
from generalresearch.managers.gr.business import (
BusinessAddressManager,
BusinessBankAccountManager,
@@ -289,9 +289,9 @@ def gr_user_token_factory(
gr_user.prefetch_token(pg_config=gr_db)
res = gr_user.token
- assert (
- res is not None
- ), "GRToken should exist after creation and prefetching"
+ assert res is not None, (
+ "GRToken should exist after creation and prefetching"
+ )
return res
else:
@@ -335,8 +335,10 @@ def gr_membership_factory(
@pytest.fixture()
-def gr_membership(gr_membership_factory: Callable[..., Membership]) -> Membership:
- return gr_membership_factory(save=True)
+def gr_membership(
+ gr_membership_factory: Callable[..., Membership], gr_team: Team, gr_user: GRUser
+) -> Membership:
+ return gr_membership_factory(gr_team=gr_team, gr_user=gr_user, save=True)
@pytest.fixture()
diff --git a/tests/conftest.py b/tests/conftest.py
index 4777e15..b69d7ea 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -12,7 +12,6 @@ pytest_plugins = [
"test_utils.managers.contest.conftest",
"test_utils.managers.gr.conftest",
"test_utils.managers.ledger.conftest",
- "test_utils.managers.network.conftest",
"test_utils.managers.thl.conftest",
"test_utils.managers.upk.conftest",
# -- Models
@@ -20,7 +19,6 @@ pytest_plugins = [
"test_utils.models.contest.conftest",
"test_utils.models.gr.conftest",
"test_utils.models.ledger.conftest",
- "test_utils.models.network.conftest",
"test_utils.models.thl.conftest",
"test_utils.models.upk.conftest",
# -- Marketplaces
diff --git a/tests/models/custom_types/test_dsn.py b/tests/models/custom_types/test_dsn.py
index 2aae579..eff02d3 100644
--- a/tests/models/custom_types/test_dsn.py
+++ b/tests/models/custom_types/test_dsn.py
@@ -1,14 +1,12 @@
from __future__ import annotations
-from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
from pydantic import BaseModel, Field, MySQLDsn, ValidationError
from pydantic_core import Url
-if TYPE_CHECKING:
- from generalresearch.models.custom_types import DaskDsn, SentryDsn
+from generalresearch.models.custom_types import DaskDsn, SentryDsn
# --- Test Pydantic Models ---
@@ -23,7 +21,6 @@ class SettingsModel(BaseModel):
class TestDaskDsn:
-
def test_base(self):
from dask.distributed import Client
diff --git a/tests/models/gr/test_authentication.py b/tests/models/gr/test_authentication.py
index 059a0a4..881571c 100644
--- a/tests/models/gr/test_authentication.py
+++ b/tests/models/gr/test_authentication.py
@@ -10,7 +10,6 @@ from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
-from redis import Redis
from generalresearch.models.gr.authentication import Claims, GRToken, GRUser
from generalresearch.models.gr.team import Team
@@ -26,7 +25,6 @@ SSO_ISSUER = ""
class TestGRUser:
-
def test_init(self, gr_user: GRUser):
assert isinstance(gr_user, GRUser)
@@ -43,7 +41,7 @@ class TestGRUser:
def test_teams(
self,
gr_user: GRUser,
- membership: Membership,
+ gr_membership: Membership,
gr_db: PostgresConfig,
gr_redis_config: RedisConfig,
):
@@ -60,16 +58,16 @@ class TestGRUser:
self,
gr_user_token: GRToken,
gr_user: GRUser,
- membership: Membership,
+ gr_membership: Membership,
product_factory: Callable[..., Product],
- membership_factory: Callable[..., Membership],
- team: Team,
+ gr_membership_factory: Callable[..., Membership],
+ gr_team: Team,
thl_web_rr: PostgresConfig,
gr_redis_config: RedisConfig,
gr_db: PostgresConfig,
):
- product_factory(team=team)
- membership_factory(team=team, gr_user=gr_user)
+ product_factory(team=gr_team)
+ gr_membership_factory(team=gr_team, gr_user=gr_user)
gr_user.prefetch_teams(
pg_config=gr_db,
@@ -82,8 +80,8 @@ class TestGRUser:
self,
gr_user: GRUser,
product_factory: Callable[..., Product],
- team: Team,
- membership: Membership,
+ gr_team: Team,
+ gr_membership: Membership,
gr_db: PostgresConfig,
thl_web_rr: PostgresConfig,
gr_redis_config: RedisConfig,
@@ -94,15 +92,15 @@ class TestGRUser:
# Create a new Team membership, and then create a Product that
# is part of that team
- membership.prefetch_team(pg_config=gr_db, redis_config=gr_redis_config)
- assert isinstance(membership.team, Team)
+ gr_membership.prefetch_team(pg_config=gr_db, redis_config=gr_redis_config)
+ assert isinstance(gr_membership.team, Team)
- p: Product = product_factory(team=team)
+ p: Product = product_factory(team=gr_team)
assert p.id_int
- assert team.uuid == membership.team.uuid
- assert p.team_id == team.uuid
- assert p.team_uuid == membership.team.uuid
- assert gr_user.id == membership.user_id
+ assert gr_team.uuid == gr_membership.team.uuid
+ assert p.team_id == gr_team.uuid
+ assert p.team_uuid == gr_membership.team.uuid
+ assert gr_user.id == gr_membership.user_id
gr_user.prefetch_products(
pg_config=gr_db,
@@ -115,7 +113,6 @@ class TestGRUser:
class TestGRUserMethods:
-
def test_cache_key(self, gr_user: GRUser):
assert isinstance(gr_user.cache_key, str)
assert ":" in gr_user.cache_key
@@ -124,13 +121,13 @@ class TestGRUserMethods:
def test_to_redis(
self,
gr_user: GRUser,
- team: Team,
+ gr_team: Team,
gr_business: Business,
product_factory: Callable[..., Product],
- membership_factory: Callable[..., Membership],
+ gr_membership_factory: Callable[..., Membership],
):
- product_factory(team=team, business=gr_business)
- membership_factory(team=team, gr_user=gr_user)
+ product_factory(team=gr_team, business=gr_business)
+ gr_membership_factory(team=gr_team, gr_user=gr_user)
res = gr_user.to_redis()
assert isinstance(res, str)
@@ -171,16 +168,16 @@ class TestGRUserMethods:
gr_db: PostgresConfig,
thl_web_rr: PostgresConfig,
product_factory: Callable[..., Product],
- team: Team,
- membership_factory: Callable[..., Membership],
+ gr_team: Team,
+ gr_membership_factory: Callable[..., Membership],
thl_redis_config: RedisConfig,
):
from generalresearch.models.gr.authentication import GRUser
client = gr_redis_config.create_redis_client()
- p1 = product_factory(team=team)
- membership_factory(team=team, gr_user=gr_user)
+ p1 = product_factory(team=gr_team)
+ gr_membership_factory(team=gr_team, gr_user=gr_user)
gr_user.set_cache(
pg_config=gr_db, thl_web_rr=thl_web_rr, redis_config=gr_redis_config
@@ -206,10 +203,10 @@ class TestGRUserMethods:
gr_db: PostgresConfig,
thl_web_rr: PostgresConfig,
product_factory: Callable[..., Product],
- team: Team,
+ gr_team: Team,
gr_redis_config: RedisConfig,
):
- product_factory(team=team)
+ product_factory(team=gr_team)
client = gr_redis_config.create_redis_client()
gr_user.set_cache(
@@ -227,10 +224,10 @@ class TestGRUserMethods:
thl_web_rr: PostgresConfig,
product_factory: Callable[..., Product],
gr_business: Business,
- team: Team,
+ gr_team: Team,
gr_redis_config: RedisConfig,
):
- product_factory(team=team, business=gr_business)
+ product_factory(team=gr_team, business=gr_business)
gr_user.set_cache(
pg_config=gr_db, thl_web_rr=thl_web_rr, redis_config=gr_redis_config
@@ -247,10 +244,10 @@ class TestGRUserMethods:
gr_db: PostgresConfig,
thl_web_rr: PostgresConfig,
product_factory: Callable[..., Product],
- team: Team,
+ gr_team: Team,
gr_redis_config: RedisConfig,
):
- product_factory(team=team)
+ product_factory(team=gr_team)
gr_user.set_cache(
pg_config=gr_db, thl_web_rr=thl_web_rr, redis_config=gr_redis_config
@@ -262,7 +259,6 @@ class TestGRUserMethods:
class TestGRToken:
-
@pytest.fixture
def gr_token(self, gr_user: GRUser):
now = datetime.now(tz=UTC)
@@ -290,7 +286,6 @@ class TestGRToken:
class TestClaims:
-
def test_init(self):
d = {
diff --git a/tests/models/gr/test_business.py b/tests/models/gr/test_business.py
index 030a214..5d0de4f 100644
--- a/tests/models/gr/test_business.py
+++ b/tests/models/gr/test_business.py
@@ -119,11 +119,11 @@ class TestBusiness:
def duration(self) -> timedelta | None:
return None
- def test_init(self, business: Business):
+ def test_init(self, gr_business: Business):
- assert isinstance(business, Business)
- assert isinstance(business.id, int)
- assert isinstance(business.uuid, str)
+ assert isinstance(gr_business, Business)
+ assert isinstance(gr_business.id, int)
+ assert isinstance(gr_business.uuid, str)
def test_str_and_repr(
self,
@@ -208,17 +208,17 @@ class TestBusiness:
def test_addresses(
self,
- business: Business,
+ gr_business: Business,
gr_db: PostgresConfig,
):
from generalresearch.models.gr.business import BusinessAddress
- assert business.addresses is None
+ assert gr_business.addresses is None
- business.prefetch_addresses(pg_config=gr_db)
- assert isinstance(business.addresses, list)
- assert len(business.addresses) == 1
- assert isinstance(business.addresses[0], BusinessAddress)
+ gr_business.prefetch_addresses(pg_config=gr_db)
+ assert isinstance(gr_business.addresses, list)
+ assert len(gr_business.addresses) == 1
+ assert isinstance(gr_business.addresses[0], BusinessAddress)
def test_teams(
self,
@@ -674,8 +674,6 @@ class TestBusinessBalance:
started=start + timedelta(days=2),
)
- payout_event_manager.set_account_lookup_table(thl_lm=thl_ledger_manager)
-
brokerage_product_payout_event_factory(
product=u1.product,
amount=USDCent(5),
@@ -770,7 +768,6 @@ class TestBusinessBalance:
wall_req_cpi=Decimal("2.50"),
started=start + timedelta(days=2),
)
- payout_event_manager.set_account_lookup_table(thl_lm=thl_ledger_manager)
brokerage_product_payout_event_factory(
product=u1.product,
@@ -887,7 +884,6 @@ class TestBusinessBalance:
wall_req_cpi=Decimal(".75"),
started=start + timedelta(days=1),
)
- payout_event_manager.set_account_lookup_table(thl_lm=thl_ledger_manager)
brokerage_product_payout_event_factory(
product=u1.product,
amount=USDCent(71),
@@ -1041,7 +1037,6 @@ class TestBusinessBalance:
wall_req_cpi=Decimal("2.50"),
started=start + timedelta(days=2),
)
- payout_event_manager.set_account_lookup_table(thl_lm=thl_ledger_manager)
brokerage_product_payout_event_factory(
product=u1.product,
diff --git a/tests/models/gr/test_team.py b/tests/models/gr/test_team.py
index 8ebedb6..b5f1781 100644
--- a/tests/models/gr/test_team.py
+++ b/tests/models/gr/test_team.py
@@ -42,7 +42,6 @@ if TYPE_CHECKING:
class TestTeam:
-
def test_init(self, gr_team: Team):
assert isinstance(gr_team, Team)
@@ -54,7 +53,7 @@ class TestTeam:
):
assert gr_team.memberships is None
- gr_team.prefetch_memberships(membership_manager=gr_membership_manager)
+ gr_team.prefetch_memberships(gr_membership_manager=gr_membership_manager)
assert isinstance(gr_team.memberships, list)
assert len(gr_team.memberships) == 0
@@ -67,7 +66,7 @@ class TestTeam:
):
assert gr_team.memberships is None
- gr_team.prefetch_memberships(membership_manager=gr_membership_manager)
+ gr_team.prefetch_memberships(gr_membership_manager=gr_membership_manager)
assert isinstance(gr_team.memberships, list)
assert len(gr_team.memberships) == 1
assert gr_team.memberships[0].user_id == gr_user.id
@@ -75,7 +74,7 @@ class TestTeam:
# Create another new Membership
gr_membership_manager.create(team=gr_team, gr_user=gr_user_factory())
assert len(gr_team.memberships) == 1
- gr_team.prefetch_memberships(membership_manager=gr_membership_manager)
+ gr_team.prefetch_memberships(gr_membership_manager=gr_membership_manager)
assert len(gr_team.memberships) == 2
def test_gr_users(
@@ -146,7 +145,6 @@ class TestTeam:
class TestTeamMethods:
-
def test_cache_key(self, gr_team: Team):
assert isinstance(gr_team.cache_key, str)
assert ":" in gr_team.cache_key
diff --git a/tests/models/test_finance.py b/tests/models/test_finance.py
index 502c596..a1da961 100644
--- a/tests/models/test_finance.py
+++ b/tests/models/test_finance.py
@@ -13,9 +13,6 @@ import pytest
from dask.distributed import Client as DaskClient
# noinspection PyUnresolvedReferences
-from distributed.utils_test import (
- client_no_amm,
-)
from faker import Faker
from generalresearch.incite.schemas.mergers.pop_ledger import (
@@ -26,8 +23,6 @@ from generalresearch.models.thl.finance import (
POPFinancial,
ProductBalances,
)
-from test_utils.incite.collections.conftest import ledger_collection
-from test_utils.incite.mergers.conftest import pop_ledger_merge
if TYPE_CHECKING:
from generalresearch.incite.collections.thl_web import LedgerDFCollection
@@ -43,7 +38,6 @@ fake = Faker()
class TestProductBalanceInitialize:
-
def test_unknown_fields(self):
with pytest.raises(expected_exception=ValueError):
ProductBalances.model_validate(
@@ -251,7 +245,6 @@ class TestProductBalanceInitialize:
class TestBusinessBalanceInitialize:
-
def test_validate_product_ids(self):
instance1 = ProductBalances.model_validate(
{"bp_payment.CREDIT": 500, "bp_adjustment.DEBIT": 40}
@@ -668,9 +661,11 @@ class TestBusinessBalanceInitialize:
),
)
class TestProductFinanceData:
-
def test_base(
self,
+ ledger_collection: LedgerDFCollection,
+ pop_ledger_merge,
+ client_no_amm,
duration: timedelta,
product: Product,
user_factory: Callable[..., User],
@@ -681,9 +676,9 @@ class TestProductFinanceData:
# -- Build & Setup
u: User = user_factory(product=product, created=ledger_collection.start)
+ assert u.product
for item in ledger_collection.items:
-
for _ in range(3):
rand_item_time = fake.date_time_between(
start_date=item.start,
@@ -737,7 +732,6 @@ class TestProductFinanceData:
class TestPOPFinancialData:
-
def test_base(
self,
client_no_amm: DaskClient,
diff --git a/tests/models/thl/test_contest/test_leaderboard_contest.py b/tests/models/thl/test_contest/test_leaderboard_contest.py
index c49776b..f787bdf 100644
--- a/tests/models/thl/test_contest/test_leaderboard_contest.py
+++ b/tests/models/thl/test_contest/test_leaderboard_contest.py
@@ -33,7 +33,7 @@ class TestLeaderboardContest(TestContest):
@pytest.fixture
def leaderboard_contest(
- self, product: Product, thl_redis: Redis, user_manager: UserManager
+ self, product: Product, thl_redis_client: Redis, user_manager: UserManager
) -> LeaderboardContest:
board_key = f"leaderboard:{product.uuid}:us:weekly:2025-05-26:complete_count"
@@ -67,14 +67,14 @@ class TestLeaderboardContest(TestContest):
),
],
)
- c._redis_client = thl_redis
+ c._redis_client = thl_redis_client
c._user_manager = user_manager
return c
def test_init(
self,
leaderboard_contest: LeaderboardContest,
- thl_redis: Redis,
+ thl_redis_client: Redis,
user_1: User,
user_2: User,
):
@@ -82,7 +82,7 @@ class TestLeaderboardContest(TestContest):
assert leaderboard_contest.end_condition.ends_at is not None
lbm = LeaderboardManager(
- redis_client=thl_redis,
+ redis_client=thl_redis_client,
board_code=model.board_code,
country_iso=model.country_iso,
freq=model.freq,
diff --git a/tests/models/thl/test_payout_format.py b/tests/models/thl/test_payout_format.py
index 56eafe3..fe7aea5 100644
--- a/tests/models/thl/test_payout_format.py
+++ b/tests/models/thl/test_payout_format.py
@@ -1,20 +1,14 @@
from __future__ import annotations
-from typing import TYPE_CHECKING
-
import pytest
from pydantic import BaseModel
from generalresearch.models.thl.payout_format import (
PayoutFormatField,
+ PayoutFormatType,
format_payout_format,
)
-if TYPE_CHECKING:
- from generalresearch.models.thl.payout_format import (
- PayoutFormatType,
- )
-
class PayoutFormatTestClass(BaseModel):
payout_format: PayoutFormatType = PayoutFormatField
diff --git a/tests/models/thl/test_product.py b/tests/models/thl/test_product.py
index 223430f..25affcf 100644
--- a/tests/models/thl/test_product.py
+++ b/tests/models/thl/test_product.py
@@ -48,7 +48,6 @@ if TYPE_CHECKING:
class TestProduct:
-
def test_init(self):
# By default, just a Pydantic instance doesn't have an id_int
instance = Product.model_validate(
@@ -70,13 +69,13 @@ class TestProduct:
# By default, just a Pydantic instance doesn't have an id_int
instance = product_factory()
assert isinstance(instance.id_int, int)
+ assert isinstance(instance, Product)
res = instance.model_dump_json()
- assert isinstance(res, Product)
# we json skip & exclude
- res = instance.model_dump()
- assert isinstance(res, Product)
+ p = Product.model_validate_json(res)
+ assert isinstance(p, Product)
def test_redirect_url(self):
p = Product.model_validate(
@@ -150,12 +149,6 @@ class TestProduct:
redirect_url="https://www.google.com/hey",
)
- assert isinstance(p.payout_config.payout_transformation, PayoutTransformation)
- assert isinstance(
- p.payout_config.payout_transformation.kwargs,
- PayoutTransformationPercentArgs,
- )
-
p.payout_config.payout_transformation = PayoutTransformation.model_validate(
{
"f": "payout_transformation_percent",
@@ -598,7 +591,6 @@ class TestGlobalProductConfigFor:
class TestProductFinancials:
-
@pytest.fixture
def start(self) -> datetime:
return datetime(year=2018, month=3, day=14, hour=0, tzinfo=UTC)
@@ -639,7 +631,6 @@ class TestProductFinancials:
u1: User = user_factory(product=p1)
bp_wallet = thl_ledger_manager.get_account_or_create_bp_wallet(product=p1)
thl_ledger_manager.get_account_or_create_user_wallet(user=u1)
- brokerage_product_payout_event_manager.set_account_lookup_table(thl_lm=thl_lm)
assert (
len(
@@ -818,7 +809,6 @@ class TestProductFinancials:
class TestProductBalance:
-
@pytest.fixture
def start(self) -> datetime:
return datetime(year=2018, month=3, day=14, hour=0, tzinfo=UTC)
@@ -867,7 +857,6 @@ class TestProductBalance:
pop_ledger_merge.build(client=client_no_amm, ledger_coll=ledger_collection)
# 2. Payout and build Parquets 2nd time
- payout_event_manager.set_account_lookup_table(thl_lm=thl_ledger_manager)
brokerage_product_payout_event_factory(
product=product,
amount=USDCent(71),
@@ -928,7 +917,6 @@ class TestProductBalance:
# 2. Payout and build Parquets 2nd time but this payout is "now"
# so it hasn't already been archived
- payout_event_manager.set_account_lookup_table(thl_lm=thl_ledger_manager)
brokerage_product_payout_event_factory(
product=product,
amount=USDCent(71),
@@ -947,7 +935,6 @@ class TestProductBalance:
class TestProductPOPFinancial:
-
@pytest.fixture
def start(self) -> datetime:
return datetime(year=2018, month=3, day=14, hour=0, tzinfo=UTC)
@@ -1020,7 +1007,6 @@ class TestProductPOPFinancial:
class TestProductCache:
-
@pytest.fixture
def start(self) -> datetime:
return datetime(year=2018, month=3, day=14, hour=0, tzinfo=UTC)
@@ -1143,7 +1129,6 @@ class TestProductCache:
)
# 2. Payout
- payout_event_manager.set_account_lookup_table(thl_lm=thl_ledger_manager)
brokerage_product_payout_event_factory(
product=product,
amount=USDCent(71),