Skip to content

Commit 54432b0

Browse files
committed
fix: ensure new Account's have field defaults populated
1 parent ae84ae2 commit 54432b0

File tree

1 file changed

+8
-9
lines changed
  • src/algopy_testing/_value_generators

1 file changed

+8
-9
lines changed

src/algopy_testing/_value_generators/avm.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import algopy_testing
1111
from algopy_testing._context_helpers import lazy_context
1212
from algopy_testing.constants import ALWAYS_APPROVE_TEAL_PROGRAM, MAX_BYTES_SIZE, MAX_UINT64
13-
from algopy_testing.models.account import AccountContextData, AccountFields
13+
from algopy_testing.models.account import AccountFields
1414
from algopy_testing.models.application import ApplicationContextData, ApplicationFields
1515
from algopy_testing.models.asset import AssetFields
1616
from algopy_testing.utils import generate_random_int
@@ -88,14 +88,13 @@ def account(
8888

8989
new_account_address = address or algosdk.account.generate_account()[1]
9090
new_account = algopy.Account(new_account_address)
91-
new_account_fields = AccountFields(**account_fields)
92-
new_account_data = AccountContextData(
93-
fields=new_account_fields,
94-
opted_asset_balances=opted_asset_balances or {},
95-
opted_apps={app.id: app for app in opted_apps},
96-
)
97-
98-
lazy_context.ledger.account_data[new_account_address] = new_account_data
91+
# defaultdict of account_data ensures we get a new initialized account
92+
account_data = lazy_context.ledger.account_data[new_account_address]
93+
# update so defaults are preserved
94+
account_data.fields.update(account_fields)
95+
# can set these since it is a new account
96+
account_data.opted_asset_balances = opted_asset_balances or {}
97+
account_data.opted_apps = {app.id: app for app in opted_apps}
9998
return new_account
10099

101100
def asset(

0 commit comments

Comments
 (0)