@@ -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+
488540def 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