Skip to content

Commit adc93c3

Browse files
committed
[ING-239] feat(wallets): add grants_target_top_up to recurring transaction rules
1 parent bb9866d commit adc93c3

4 files changed

Lines changed: 85 additions & 0 deletions

File tree

lago_python_client/models/wallet.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class RecurringTransactionRule(BaseModel):
2121
transaction_metadata: Optional[List[Dict[str, str]]]
2222
transaction_name: Optional[str]
2323
ignore_paid_top_up_limits: Optional[bool]
24+
grants_target_top_up: Optional[bool]
2425
payment_method: Optional[PaymentMethod]
2526
invoice_custom_section: Optional[InvoiceCustomSectionInput]
2627

@@ -41,6 +42,7 @@ class RecurringTransactionRuleResponse(BaseModel):
4142
transaction_metadata: Optional[List[Dict[str, str]]]
4243
transaction_name: Optional[str]
4344
ignore_paid_top_up_limits: Optional[bool]
45+
grants_target_top_up: Optional[bool]
4446
payment_method: Optional[PaymentMethod]
4547
applied_invoice_custom_sections: Optional[AppliedInvoiceCustomSections]
4648

tests/fixtures/wallet.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"target_ongoing_balance": "200.0",
2929
"transaction_name": "Recurring Transaction Rule",
3030
"ignore_paid_top_up_limits": true,
31+
"grants_target_top_up": true,
3132
"payment_method": {
3233
"payment_method_type": "card",
3334
"payment_method_id": "pm_123"

tests/test_customer_wallet_client.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def wallet_object():
2424
target_ongoing_balance="105.0",
2525
transaction_name="Recurring Transaction Rule",
2626
ignore_paid_top_up_limits=True,
27+
grants_target_top_up=True,
2728
)
2829
rules_list = RecurringTransactionRuleList(__root__=[rule])
2930
applies_to = AppliesTo(
@@ -73,6 +74,7 @@ def test_valid_create_wallet_request(httpx_mock: HTTPXMock):
7374
"target_ongoing_balance": "105.0",
7475
"transaction_name": "Recurring Transaction Rule",
7576
"ignore_paid_top_up_limits": True,
77+
"grants_target_top_up": True,
7678
}
7779
],
7880
"invoice_requires_successful_payment": False,
@@ -88,6 +90,7 @@ def test_valid_create_wallet_request(httpx_mock: HTTPXMock):
8890
assert response.recurring_transaction_rules.__root__[0].trigger == "interval"
8991
assert response.recurring_transaction_rules.__root__[0].interval == "monthly"
9092
assert response.recurring_transaction_rules.__root__[0].ignore_paid_top_up_limits is True
93+
assert response.recurring_transaction_rules.__root__[0].grants_target_top_up is True
9194
assert response.applies_to.fee_types[0] == "charge"
9295
assert response.applies_to.billable_metric_codes[0] == "usage"
9396
assert response.paid_top_up_max_amount_cents == 10000
@@ -348,3 +351,41 @@ def test_valid_update_customer_wallet_with_invoice_custom_section_on_recurring_t
348351
.invoice_custom_section_id
349352
== "section_rule_001"
350353
)
354+
355+
356+
def test_valid_update_wallet_with_grants_target_top_up_on_recurring_transaction_rule(httpx_mock: HTTPXMock):
357+
client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
358+
wallet_id = "b7ab2926-1de8-4428-9bcd-779314ac129b"
359+
rule = RecurringTransactionRule(
360+
trigger="interval",
361+
interval="monthly",
362+
method="target",
363+
target_ongoing_balance="200.0",
364+
grants_target_top_up=True,
365+
)
366+
rules_list = RecurringTransactionRuleList(__root__=[rule])
367+
368+
httpx_mock.add_response(
369+
method="PUT",
370+
url="https://api.getlago.com/api/v1/customers/customer_id/wallets/" + wallet_id,
371+
content=mock_response("wallet"),
372+
match_json={
373+
"wallet": {
374+
"name": "name",
375+
"recurring_transaction_rules": [
376+
{
377+
"interval": "monthly",
378+
"trigger": "interval",
379+
"method": "target",
380+
"target_ongoing_balance": "200.0",
381+
"grants_target_top_up": True,
382+
}
383+
],
384+
}
385+
},
386+
)
387+
wallet = Wallet(name="name", recurring_transaction_rules=rules_list)
388+
response = client.customers.wallets.update("customer_id", wallet_id, wallet)
389+
390+
assert response.lago_id == "b7ab2926-1de8-4428-9bcd-779314ac129b"
391+
assert response.recurring_transaction_rules.__root__[0].grants_target_top_up is True

tests/test_wallet_client.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def wallet_object():
2525
target_ongoing_balance="105.0",
2626
transaction_name="Recurring Transaction Rule",
2727
ignore_paid_top_up_limits=True,
28+
grants_target_top_up=True,
2829
)
2930
rules_list = RecurringTransactionRuleList(__root__=[rule])
3031
applies_to = AppliesTo(
@@ -92,6 +93,7 @@ def test_valid_create_wallet_request(httpx_mock: HTTPXMock):
9293
"target_ongoing_balance": "105.0",
9394
"transaction_name": "Recurring Transaction Rule",
9495
"ignore_paid_top_up_limits": True,
96+
"grants_target_top_up": True,
9597
}
9698
],
9799
"invoice_requires_successful_payment": False,
@@ -107,6 +109,7 @@ def test_valid_create_wallet_request(httpx_mock: HTTPXMock):
107109
assert response.recurring_transaction_rules.__root__[0].trigger == "interval"
108110
assert response.recurring_transaction_rules.__root__[0].interval == "monthly"
109111
assert response.recurring_transaction_rules.__root__[0].ignore_paid_top_up_limits is True
112+
assert response.recurring_transaction_rules.__root__[0].grants_target_top_up is True
110113
assert response.applies_to.fee_types[0] == "charge"
111114
assert response.applies_to.billable_metric_codes[0] == "usage"
112115
assert response.paid_top_up_max_amount_cents == 10000
@@ -594,3 +597,41 @@ def test_valid_update_wallet_with_invoice_custom_section_on_recurring_transactio
594597
.invoice_custom_section_id
595598
== "section_rule_001"
596599
)
600+
601+
602+
def test_valid_update_wallet_with_grants_target_top_up_on_recurring_transaction_rule(httpx_mock: HTTPXMock):
603+
client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
604+
wallet_id = "b7ab2926-1de8-4428-9bcd-779314ac129b"
605+
rule = RecurringTransactionRule(
606+
trigger="interval",
607+
interval="monthly",
608+
method="target",
609+
target_ongoing_balance="200.0",
610+
grants_target_top_up=True,
611+
)
612+
rules_list = RecurringTransactionRuleList(__root__=[rule])
613+
614+
httpx_mock.add_response(
615+
method="PUT",
616+
url="https://api.getlago.com/api/v1/wallets/" + wallet_id,
617+
content=mock_response(),
618+
match_json={
619+
"wallet": {
620+
"name": "name",
621+
"recurring_transaction_rules": [
622+
{
623+
"interval": "monthly",
624+
"trigger": "interval",
625+
"method": "target",
626+
"target_ongoing_balance": "200.0",
627+
"grants_target_top_up": True,
628+
}
629+
],
630+
}
631+
},
632+
)
633+
wallet = Wallet(name="name", recurring_transaction_rules=rules_list)
634+
response = client.wallets.update(wallet, wallet_id)
635+
636+
assert response.lago_id == "b7ab2926-1de8-4428-9bcd-779314ac129b"
637+
assert response.recurring_transaction_rules.__root__[0].grants_target_top_up is True

0 commit comments

Comments
 (0)