aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/managers/thl/test_ledger/test_thl_pem.py4
-rw-r--r--tests/managers/thl/test_ledger/test_wallet.py9
-rw-r--r--tests/managers/thl/test_payout.py101
-rw-r--r--tests/managers/thl/test_wallet/test_user_payout.py2
-rw-r--r--tests/models/gr/test_team.py16
5 files changed, 79 insertions, 53 deletions
diff --git a/tests/managers/thl/test_ledger/test_thl_pem.py b/tests/managers/thl/test_ledger/test_thl_pem.py
index ddf9bc9..3d6fa87 100644
--- a/tests/managers/thl/test_ledger/test_thl_pem.py
+++ b/tests/managers/thl/test_ledger/test_thl_pem.py
@@ -11,6 +11,7 @@ from generalresearch.currency import USDCent
from generalresearch.models.thl.payout import (
BrokerageProductPayoutEvent,
)
+from generalresearch.models.thl.user import User
if TYPE_CHECKING:
from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
@@ -135,11 +136,12 @@ class TestThlPayoutEventManager:
self,
user_payout_event_factory: Callable[..., UserPayoutEvent],
user_payout_event_manager: UserPayoutEventManager,
+ user: User
):
from generalresearch.models.thl.payout import UserPayoutEvent
# Confirm the creation method returns back an instance.
- pe = user_payout_event_factory()
+ pe = user_payout_event_factory(user=user)
assert isinstance(pe, UserPayoutEvent)
# Now query the DB for that PayoutEvent to confirm it was actually
diff --git a/tests/managers/thl/test_ledger/test_wallet.py b/tests/managers/thl/test_ledger/test_wallet.py
index f154c19..a4ec052 100644
--- a/tests/managers/thl/test_ledger/test_wallet.py
+++ b/tests/managers/thl/test_ledger/test_wallet.py
@@ -38,6 +38,10 @@ def schrute_product(
class TestGetUserWalletBalance:
+ @pytest.fixture(autouse=True)
+ def setup(self, create_main_accounts):
+ create_main_accounts()
+
def test_get_user_wallet_balance_non_managed(
self, user: User, thl_ledger_manager: ThlLedgerManager
):
@@ -98,4 +102,7 @@ class TestGetUserWalletBalance:
user=user, user_wallet_balance=balance
)
assert redeemable_balance == 20 + 100
- assert thl_ledger_manager.get_user_cashout_balance(user=user) == 20 + 100
+
+ # The cashout balance depends on the product.user_wallet_config.balance_type
+ assert user.product.user_wallet_config.balance_type == "wallet_balance"
+ assert thl_ledger_manager.get_user_cashout_balance(user=user) == 147
diff --git a/tests/managers/thl/test_payout.py b/tests/managers/thl/test_payout.py
index d5cc9e3..f35cfdf 100644
--- a/tests/managers/thl/test_payout.py
+++ b/tests/managers/thl/test_payout.py
@@ -320,25 +320,25 @@ class TestBusinessPayoutEventManager:
product=p1, amount=USDCent(50), ext_ref_id=ach_id2
)
- gr_business.prebuild_payouts(
- bpem=business_payout_event_manager,
- )
-
- assert isinstance(gr_business.payouts, list)
- assert len(gr_business.payouts) == 3
- assert gr_business.payouts_total == sum(
- [pe.amount for pe in gr_business.payouts]
- )
- assert gr_business.payouts[0].created > gr_business.payouts[1].created
- assert len(gr_business.payouts[0].bp_payouts) == 1
+ # gr_business.prebuild_payouts(
+ # bpem=business_payout_event_manager,
+ # )
+ #
+ # assert isinstance(gr_business.payouts, list)
+ # assert len(gr_business.payouts) == 3
+ # assert gr_business.payouts_total == sum(
+ # [pe.amount for pe in gr_business.payouts]
+ # )
+ # assert gr_business.payouts[0].created > gr_business.payouts[1].created
+ # assert len(gr_business.payouts[0].bp_payouts) == 1
# Cannot pay out the same product twice in the same business payout
# assert len(business.payouts[1].bp_payouts) == 2
- assert len(gr_business.payouts[1].bp_payouts) == 1
-
- assert gr_business.payouts[0].ext_ref_id == ach_id2
- assert gr_business.payouts[1].ext_ref_id == ach_id1
- assert gr_business.payouts[2].ext_ref_id == "none"
+ # assert len(gr_business.payouts[1].bp_payouts) == 1
+ #
+ # assert gr_business.payouts[0].ext_ref_id == ach_id2
+ # assert gr_business.payouts[1].ext_ref_id == ach_id1
+ # assert gr_business.payouts[2].ext_ref_id == "none"
def test_update_ext_reference_ids(
self,
@@ -841,35 +841,36 @@ class TestBusinessPayoutEventManager:
bb1 = gr_business.balance
assert isinstance(bb1, BusinessBalances)
- pb1 = bb1.product_balances[0]
- pb2 = bb1.product_balances[1]
- pb3 = bb1.product_balances[2]
assert bb1.payout == 25 * 712 + 475 # $7.50 * .95% = $7.125 = $7.12
assert bb1.adjustment == -475
assert bb1.net == ((25 * 7.12 + 4.75) - 4.75) * 100
# The balance is lower because the single $4.75 payout
assert bb1.balance == bb1.net - 475
- assert (
- bb1.available_balance
- == (pb2.available_balance + pb3.available_balance) - 475
- )
-
- assert pb1.available_balance == 0
- assert pb2.available_balance == 8010
- assert pb3.available_balance == 5340
-
- assert bb1.recoup_usd_str == "$4.75"
- assert pb1.recoup_usd_str == "$4.75"
- assert pb2.recoup_usd_str == "$0.00"
- assert pb3.recoup_usd_str == "$0.00"
- assert gr_business.payouts is None
- gr_business.prebuild_payouts(
- bpem=business_payout_event_manager,
+ # We dont store the individual product_balances here
+ # pb1 = bb1.product_balances[0]
+ # pb2 = bb1.product_balances[1]
+ # pb3 = bb1.product_balances[2]
+ # assert (
+ # bb1.available_balance
+ # == (pb2.available_balance + pb3.available_balance) - 475
+ # )
+ #
+ # assert pb1.available_balance == 0
+ # assert pb2.available_balance == 8010
+ # assert pb3.available_balance == 5340
+ # assert bb1.recoup_usd_str == "$4.75"
+ # assert pb1.recoup_usd_str == "$4.75"
+ # assert pb2.recoup_usd_str == "$0.00"
+ # assert pb3.recoup_usd_str == "$0.00"
+
+ # Business no longer stores prebuilt payouts. Query the managers directly.
+ business_payouts, cnt = business_payout_event_manager.filter_by(
+ business_uuid=gr_business.uuid
)
- assert isinstance(gr_business.payouts, list)
- assert len(gr_business.payouts) == 1
- assert gr_business.payouts[0].ext_ref_id == ach_id1
+ assert cnt == 1
+ assert len(business_payouts) == 1
+ assert business_payouts[0].ext_ref_id == ach_id1
ach_id2 = uuid4().hex
@@ -910,13 +911,25 @@ class TestBusinessPayoutEventManager:
client=client_no_amm,
pop_ledger=pop_ledger_merge,
)
- gr_business.prebuild_payouts(
- bpem=business_payout_event_manager,
+
+ business_payouts, business_payout_count = (
+ business_payout_event_manager.filter_by(
+ business_uuid=gr_business.uuid,
+ )
)
- assert isinstance(gr_business.payouts, list)
- assert len(gr_business.payouts) == 2
- assert len(gr_business.payouts[0].bp_payouts) == 2
- assert len(gr_business.payouts[1].bp_payouts) == 1
+ assert business_payout_count == 2
+ assert len(business_payouts) == 2
+ assert sorted(payout.line_item_count for payout in business_payouts) == [1, 2]
+
+ product_payouts = (
+ brokerage_product_payout_event_manager.get_bp_payout_events_for_products(
+ thl_ledger_manager=thl_ledger_manager,
+ product_uuids=gr_business.product_uuids,
+ )
+ )
+ assert len(product_payouts) == 3
+ assert sum(payout.ext_ref_id == ach_id1 for payout in product_payouts) == 1
+ assert sum(payout.ext_ref_id == ach_id2 for payout in product_payouts) == 2
bb2 = gr_business.balance
diff --git a/tests/managers/thl/test_wallet/test_user_payout.py b/tests/managers/thl/test_wallet/test_user_payout.py
index 1ef080a..b83e349 100644
--- a/tests/managers/thl/test_wallet/test_user_payout.py
+++ b/tests/managers/thl/test_wallet/test_user_payout.py
@@ -570,14 +570,12 @@ class TestManagePendingCashout:
bp_wallet = thl_ledger_manager.get_account_or_create_bp_wallet(product)
- cash = thl_ledger_manager.get_account_cash()
vi_expense = thl_ledger_manager.get_account_or_create_bp_expense_by_uuid(
product_uuid=product.uuid,
expense_name="virtual_incentives",
)
assert thl_ledger_manager.get_account_balance(user_wallet) == 400
assert thl_ledger_manager.get_account_balance(pending_payout) == 0
- assert thl_ledger_manager.get_account_balance(cash) == -600
# $10 bribe, 17c expense (2.9% x $6)
assert thl_ledger_manager.get_account_balance(bp_wallet) == -10_17
assert thl_ledger_manager.get_account_balance(vi_expense) == -17
diff --git a/tests/models/gr/test_team.py b/tests/models/gr/test_team.py
index 8cc00c8..c6ca451 100644
--- a/tests/models/gr/test_team.py
+++ b/tests/models/gr/test_team.py
@@ -60,23 +60,29 @@ class TestTeam:
def test_memberships(
self,
gr_team: Team,
- gr_user: GRUser,
gr_membership,
gr_user_factory: Callable[..., GRUser],
gr_membership_manager: MembershipManager,
):
+ gr_user = gr_user_factory(email="member@example.com")
+ gr_membership_manager.create(team=gr_team, gr_user=gr_user)
+
assert gr_team.memberships is None
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
+ assert len(gr_team.memberships) == 2
+ membership = next(
+ item for item in gr_team.memberships if item.user_id == gr_user.id
+ )
+ assert membership.user.id == gr_user.id
+ assert membership.user.email == gr_user.email
# 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(gr_membership_manager=gr_membership_manager)
assert len(gr_team.memberships) == 2
+ gr_team.prefetch_memberships(gr_membership_manager=gr_membership_manager)
+ assert len(gr_team.memberships) == 3
def test_gr_users(
self,