Skip to content

Commit eafd934

Browse files
committed
fix: update is_approved in _add_token_transfer accumulation branch
Signed-off-by: Mohit Yadav <ymohit799057@gmail.com>
1 parent 47ecff2 commit eafd934

2 files changed

Lines changed: 54 additions & 1 deletion

File tree

src/hiero_sdk_python/tokens/abstract_token_transfer_transaction.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ def _add_token_transfer(
155155
if transfer.account_id == account_id:
156156
transfer.amount += amount
157157
transfer.expected_decimals = expected_decimals
158+
transfer.is_approved = is_approved
158159
return
159160

160161
self.token_transfers[token_id].append(

tests/unit/transfer_transaction_test.py

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ def test_approved_token_transfer_accumulation(mock_account_ids):
465465
transfer_1 = transfer_tx.token_transfers[token_id_1][0]
466466
transfer_2 = transfer_tx.token_transfers[token_id_1][1]
467467
assert transfer_1.amount == 500
468-
assert transfer_1.is_approved is False
468+
assert transfer_1.is_approved is True
469469
assert transfer_1.expected_decimals is None
470470
assert transfer_2.amount == 300
471471
assert transfer_2.is_approved is False
@@ -485,6 +485,58 @@ def test_approved_token_transfer_accumulation(mock_account_ids):
485485
assert transfer_2.expected_decimals is None # unchanged
486486

487487

488+
def test_is_approved_updated_normal_then_approved(mock_account_ids):
489+
"""is_approved becomes True when an approved call follows a normal one (last-call-wins)."""
490+
account_id_1, account_id_2, _, token_id_1, _ = mock_account_ids
491+
transfer_tx = TransferTransaction()
492+
493+
transfer_tx.add_token_transfer(token_id_1, account_id_1, 500)
494+
transfer_tx.add_token_transfer(token_id_1, account_id_2, -500)
495+
496+
transfer_1 = transfer_tx.token_transfers[token_id_1][0]
497+
assert transfer_1.is_approved is False
498+
499+
transfer_tx.add_approved_token_transfer(token_id_1, account_id_1, 200)
500+
transfer_tx.add_token_transfer(token_id_1, account_id_2, -200)
501+
502+
transfer_1 = transfer_tx.token_transfers[token_id_1][0]
503+
assert transfer_1.amount == 700
504+
assert transfer_1.is_approved is True
505+
506+
507+
def test_is_approved_updated_approved_then_normal(mock_account_ids):
508+
"""is_approved becomes False when a normal call follows an approved one (last-call-wins)."""
509+
account_id_1, account_id_2, _, token_id_1, _ = mock_account_ids
510+
transfer_tx = TransferTransaction()
511+
512+
transfer_tx.add_approved_token_transfer(token_id_1, account_id_1, 500)
513+
transfer_tx.add_token_transfer(token_id_1, account_id_2, -500)
514+
515+
transfer_1 = transfer_tx.token_transfers[token_id_1][0]
516+
assert transfer_1.is_approved is True
517+
518+
transfer_tx.add_token_transfer(token_id_1, account_id_1, 200)
519+
transfer_tx.add_token_transfer(token_id_1, account_id_2, -200)
520+
521+
transfer_1 = transfer_tx.token_transfers[token_id_1][0]
522+
assert transfer_1.amount == 700
523+
assert transfer_1.is_approved is False
524+
525+
526+
def test_add_approved_token_transfer_no_decimals(mock_account_ids):
527+
"""add_approved_token_transfer (non-decimal variant) sets is_approved=True."""
528+
account_id_1, account_id_2, _, token_id_1, _ = mock_account_ids
529+
transfer_tx = TransferTransaction()
530+
531+
transfer_tx.add_approved_token_transfer(token_id_1, account_id_1, -1000)
532+
transfer_tx.add_token_transfer(token_id_1, account_id_2, 1000)
533+
534+
transfer = transfer_tx.token_transfers[token_id_1][0]
535+
assert transfer.amount == -1000
536+
assert transfer.is_approved is True
537+
assert transfer.expected_decimals is None
538+
539+
488540
def test_approved_token_transfer_validation(mock_account_ids):
489541
"""Test validation for approved token transfers with decimals."""
490542
account_id_1, _, _, token_id_1, _ = mock_account_ids

0 commit comments

Comments
 (0)