From 14acd9ed8e7eea5190b582a1024b9e8a18d18a96 Mon Sep 17 00:00:00 2001 From: Yosuke Otosu Date: Wed, 22 Mar 2023 17:45:02 +0900 Subject: [PATCH] fix: set previous locked balance when checkpoint is used --- batch/indexer_token_holders.py | 4 +++- tests/test_batch_indexer_token_holders.py | 22 ++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/batch/indexer_token_holders.py b/batch/indexer_token_holders.py index 5c4b4796..7dde048c 100644 --- a/batch/indexer_token_holders.py +++ b/batch/indexer_token_holders.py @@ -159,7 +159,9 @@ def __load_checkpoint( ) for holder in _holders: self.balance_book.store( - account_address=holder.account_address, amount=holder.hold_balance + account_address=holder.account_address, + amount=holder.hold_balance, + locked=holder.locked_balance, ) block_from = _checkpoint.block_number + 1 return block_from diff --git a/tests/test_batch_indexer_token_holders.py b/tests/test_batch_indexer_token_holders.py index cb202ff2..76b8f17c 100644 --- a/tests/test_batch_indexer_token_holders.py +++ b/tests/test_batch_indexer_token_holders.py @@ -936,7 +936,9 @@ def test_normal_3( ) assert user1_record.hold_balance == 17000 + assert user1_record.locked_balance == 0 assert user2_record.hold_balance == 13000 + assert user2_record.locked_balance == 0 assert ( len( @@ -1701,7 +1703,9 @@ def test_normal_6( ) assert user1_record.hold_balance == 17000 + assert user1_record.locked_balance == 0 assert user2_record.hold_balance == 13000 + assert user2_record.locked_balance == 0 assert ( len( @@ -1916,6 +1920,12 @@ def test_normal_8( issuer_private_key, [exchange_contract.address, 10000], ) + STContractUtils.lock( + token_contract.address, + user_address_1, + user_pk_1, + [issuer_address, 10000, ""], + ) # Insert collection record with above token and current block number list_id = str(uuid.uuid4()) @@ -1927,6 +1937,12 @@ def test_normal_8( db.commit() processor.collect() + STContractUtils.unlock( + token_contract.address, + issuer_address, + issuer_private_key, + [user_address_1, user_address_2, 10000, ""], + ) STContractUtils.transfer( token_contract.address, issuer_address, @@ -1969,8 +1985,10 @@ def test_normal_8( .first() ) - assert user1_record.hold_balance == 40000 - assert user2_record.hold_balance == 20000 + assert user1_record.hold_balance == 30000 + assert user1_record.locked_balance == 0 + assert user2_record.hold_balance == 30000 + assert user2_record.locked_balance == 0 assert ( len(