diff --git a/tests/test_factory_registry.py b/tests/test_factory_registry.py index 26c6106..2dba892 100644 --- a/tests/test_factory_registry.py +++ b/tests/test_factory_registry.py @@ -3,14 +3,14 @@ from web3.constants import ADDRESS_ZERO -CHAIN_ID = os.getenv('CHAIN_ID', 34443) +CHAIN_ID = os.getenv("CHAIN_ID", 34443) @pytest.fixture @pytest.mark.skipif(int(CHAIN_ID) in [10, 8453], reason="Only leaf chains") -def factory_registry(FactoryRegistry): +def factory_registry(project): # Deploy the contract using the first test account as the owner - yield FactoryRegistry.at(os.getenv(f'REGISTRY_{CHAIN_ID}')) + yield project.FactoryRegistry.at(os.getenv(f"REGISTRY_{CHAIN_ID}")) @pytest.mark.skipif(int(CHAIN_ID) in [10, 8453], reason="Only leaf chains") @@ -34,4 +34,4 @@ def test_initHashToPoolFactory(factory_registry): factories = factory_registry.poolFactories() result = factory_registry.initHashToPoolFactory(factories[0]) - assert str(result) in os.getenv(f'INIT_HASHES_{CHAIN_ID}') + assert str(result) in os.getenv(f"INIT_HASHES_{CHAIN_ID}") diff --git a/tests/test_lp_sugar.py b/tests/test_lp_sugar.py index 4a35ff4..67578d7 100644 --- a/tests/test_lp_sugar.py +++ b/tests/test_lp_sugar.py @@ -1,54 +1,21 @@ # SPDX-License-Identifier: BUSL-1.1 import os import pytest -from collections import namedtuple from web3.constants import ADDRESS_ZERO -CHAIN_ID = os.getenv('CHAIN_ID', 10) +CHAIN_ID = os.getenv("CHAIN_ID", 10) @pytest.fixture -def sugar_contract(LpSugar, accounts): +def sugar_contract(project): # Since we depend on the rest of the protocol, # we just point to an existing deployment - yield LpSugar.at(os.getenv(f'LP_SUGAR_ADDRESS_{CHAIN_ID}')) + yield project.LpSugar.at(os.getenv(f"LP_SUGAR_ADDRESS_{CHAIN_ID}")) -@pytest.fixture -def TokenStruct(sugar_contract): - method_output = sugar_contract.tokens.abi['outputs'][0] - members = list(map(lambda _e: _e['name'], method_output['components'])) - - yield namedtuple('TokenStruct', members) - - -@pytest.fixture -def LpStruct(sugar_contract): - method_output = sugar_contract.byIndex.abi['outputs'][0] - members = list(map(lambda _e: _e['name'], method_output['components'])) - - yield namedtuple('LpStruct', members) - - -@pytest.fixture -def SwapLpStruct(sugar_contract): - method_output = sugar_contract.forSwaps.abi['outputs'][0] - members = list(map(lambda _e: _e['name'], method_output['components'])) - - yield namedtuple('SwapLpStruct', members) - - -@pytest.fixture -def PositionStruct(sugar_contract): - method_output = sugar_contract.positionsByFactory.abi['outputs'][0] - members = list(map(lambda _e: _e['name'], method_output['components'])) - - yield namedtuple('PositionStruct', members) - - -def test_byIndex(sugar_contract, LpStruct): - lp = LpStruct(*sugar_contract.byIndex(0)) +def test_byIndex(sugar_contract): + lp = sugar_contract.byIndex(0) assert lp is not None assert len(lp) == 28 @@ -56,13 +23,10 @@ def test_byIndex(sugar_contract, LpStruct): assert lp.gauge != ADDRESS_ZERO -def test_forSwaps(sugar_contract, SwapLpStruct, LpStruct): - first_lp = LpStruct(*sugar_contract.byIndex(0)) - second_lp = LpStruct(*sugar_contract.byIndex(1)) - swap_lps = list(map( - lambda _p: SwapLpStruct(*_p), - sugar_contract.forSwaps(10, 0) - )) +def test_forSwaps(sugar_contract): + first_lp = sugar_contract.byIndex(0) + second_lp = sugar_contract.byIndex(1) + swap_lps = sugar_contract.forSwaps(10, 0) assert swap_lps is not None assert len(swap_lps) > 1 @@ -73,17 +37,14 @@ def test_forSwaps(sugar_contract, SwapLpStruct, LpStruct): assert second_lp.lp in lps -def test_tokens(sugar_contract, TokenStruct, LpStruct): - first_lp = LpStruct(*sugar_contract.byIndex(0)) - tokens = list(map( - lambda _p: TokenStruct(*_p), - sugar_contract.tokens(10, 0, ADDRESS_ZERO, []) - )) +def test_tokens(sugar_contract): + first_lp = sugar_contract.byIndex(0) + tokens = sugar_contract.tokens(10, 0, ADDRESS_ZERO, []) assert tokens is not None assert len(tokens) > 1 - token0, token1 = tokens[0: 2] + token0, token1 = tokens[0:2] assert token0.token_address == first_lp.token0 assert token0.symbol is not None @@ -93,11 +54,8 @@ def test_tokens(sugar_contract, TokenStruct, LpStruct): @pytest.mark.skipif(int(CHAIN_ID) not in [10], reason="Only OP") -def test_tokens_long_symbol(sugar_contract, TokenStruct): - tokens = list(map( - lambda _p: TokenStruct(*_p), - sugar_contract.tokens(1, 995, ADDRESS_ZERO, []) - )) +def test_tokens_long_symbol(sugar_contract): + tokens = sugar_contract.tokens(1, 995, ADDRESS_ZERO, []) assert tokens is not None assert len(tokens) > 1 @@ -105,15 +63,12 @@ def test_tokens_long_symbol(sugar_contract, TokenStruct): token = tokens[0] assert token.symbol is not None - assert token.symbol == '-???-' + assert token.symbol == "-???-" @pytest.mark.skipif(int(CHAIN_ID) not in [8453], reason="Only BASE") -def test_tokens_max_long_symbol(sugar_contract, TokenStruct): - tokens = list(map( - lambda _p: TokenStruct(*_p), - sugar_contract.tokens(1, 2508, ADDRESS_ZERO, []) - )) +def test_tokens_max_long_symbol(sugar_contract): + tokens = sugar_contract.tokens(1, 2508, ADDRESS_ZERO, []) assert tokens is not None assert len(tokens) > 1 @@ -121,15 +76,12 @@ def test_tokens_max_long_symbol(sugar_contract, TokenStruct): token = tokens[0] assert token.symbol is not None - assert token.symbol != '-???-' + assert token.symbol != "-???-" @pytest.mark.skipif(int(CHAIN_ID) not in [10], reason="Only OP") -def test_all_long_symbol(sugar_contract, LpStruct): - pools = list(map( - lambda _p: LpStruct(*_p), - sugar_contract.all(1, 995) - )) +def test_all_long_symbol(sugar_contract): + pools = sugar_contract.all(1, 995) assert pools is not None assert len(pools) == 1 @@ -137,16 +89,13 @@ def test_all_long_symbol(sugar_contract, LpStruct): pool = pools[0] assert pool.symbol is not None - assert pool.symbol == '-???-' + assert pool.symbol == "-???-" -def test_all(sugar_contract, LpStruct): - first_lp = LpStruct(*sugar_contract.byIndex(0)) - second_lp = LpStruct(*sugar_contract.byIndex(1)) - lps = list(map( - lambda _p: LpStruct(*_p), - sugar_contract.all(10, 0) - )) +def test_all(sugar_contract): + first_lp = sugar_contract.byIndex(0) + second_lp = sugar_contract.byIndex(1) + lps = sugar_contract.all(10, 0) assert lps is not None assert len(lps) > 1 @@ -161,7 +110,7 @@ def test_all(sugar_contract, LpStruct): @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def test_all_pagination(sugar_contract, LpStruct): +def test_all_pagination(sugar_contract): max_lps = sugar_contract.MAX_LPS() for i in range(0, max_lps, max_lps): @@ -171,12 +120,9 @@ def test_all_pagination(sugar_contract, LpStruct): assert len(lps) > max_lps - 1 -def test_all_limit_offset(sugar_contract, LpStruct): - second_lp = LpStruct(*sugar_contract.byIndex(1)) - lps = list(map( - lambda _p: LpStruct(*_p), - sugar_contract.all(1, 1) - )) +def test_all_limit_offset(sugar_contract): + second_lp = sugar_contract.byIndex(1) + lps = sugar_contract.all(1, 1) assert lps is not None assert len(lps) == 1 @@ -187,15 +133,12 @@ def test_all_limit_offset(sugar_contract, LpStruct): assert lp1.lp == second_lp.lp -def test_positions(sugar_contract, PositionStruct): +def test_positions(sugar_contract): limit = 100 offset = 0 - account = os.getenv(f'TEST_ADDRESS_{CHAIN_ID}') + account = os.getenv(f"TEST_ADDRESS_{CHAIN_ID}") - positions = list(map( - lambda _p: PositionStruct(*_p), - sugar_contract.positions(limit, offset, account) - )) + positions = sugar_contract.positions(limit, offset, account) assert positions is not None assert len(positions) > 0 @@ -207,15 +150,12 @@ def test_positions(sugar_contract, PositionStruct): @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def test_positionsUnstakedConcentrated(sugar_contract, PositionStruct): +def test_positionsUnstakedConcentrated(sugar_contract): limit = 100 offset = 0 - account = os.getenv(f'TEST_ADDRESS_{CHAIN_ID}') + account = os.getenv(f"TEST_ADDRESS_{CHAIN_ID}") - positions = list(map( - lambda _p: PositionStruct(*_p), - sugar_contract.positionsUnstakedConcentrated(limit, offset, account) - )) + positions = sugar_contract.positionsUnstakedConcentrated(limit, offset, account) assert positions is not None assert len(positions) > 0 @@ -227,13 +167,10 @@ def test_positionsUnstakedConcentrated(sugar_contract, PositionStruct): @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def test_positions_ALM(sugar_contract, PositionStruct): - account = os.getenv(f'TEST_ALM_ADDRESS_{CHAIN_ID}') +def test_positions_ALM(sugar_contract): + account = os.getenv(f"TEST_ALM_ADDRESS_{CHAIN_ID}") - positions = list(map( - lambda _p: PositionStruct(*_p), - sugar_contract.positions(1000, 0, account) - )) + positions = sugar_contract.positions(1000, 0, account) assert positions is not None assert len(positions) > 0 diff --git a/tests/test_relay_sugar.py b/tests/test_relay_sugar.py index a2f9642..f7a5842 100644 --- a/tests/test_relay_sugar.py +++ b/tests/test_relay_sugar.py @@ -2,43 +2,32 @@ import os import pytest -from collections import namedtuple from web3.constants import ADDRESS_ZERO -CHAIN_ID = os.getenv('CHAIN_ID', 10) +CHAIN_ID = os.getenv("CHAIN_ID", 10) @pytest.fixture @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def sugar_contract(RelaySugar, accounts): +def sugar_contract(project, accounts): # Since we depend on the rest of the protocol, # we just point to an existing deployment - yield RelaySugar.at(os.getenv(f'RELAY_SUGAR_ADDRESS_{CHAIN_ID}')) - - -@pytest.fixture -@pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def RelayStruct(sugar_contract): - method_output = sugar_contract.all.abi['outputs'][0] - members = list(map(lambda _e: _e['name'], method_output['components'])) - - yield namedtuple('RelayStruct', members) + yield project.RelaySugar.at(os.getenv(f"RELAY_SUGAR_ADDRESS_{CHAIN_ID}")) @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") def test_initial_state(sugar_contract): - assert sugar_contract.voter() == os.getenv(f'VOTER_{CHAIN_ID}') - assert sugar_contract.registries(0) == \ - os.getenv(f'RELAY_REGISTRY_ADDRESSES_{CHAIN_ID}').split(',')[0] + assert sugar_contract.voter() == os.getenv(f"VOTER_{CHAIN_ID}") + assert ( + sugar_contract.registries(0) + == os.getenv(f"RELAY_REGISTRY_ADDRESSES_{CHAIN_ID}").split(",")[0] + ) assert sugar_contract.ve() is not None assert sugar_contract.token() is not None @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def test_all(sugar_contract, RelayStruct): - relays = list(map( - lambda _r: RelayStruct(*_r), - sugar_contract.all(ADDRESS_ZERO) - )) +def test_all(sugar_contract): + relays = sugar_contract.all(ADDRESS_ZERO) assert len(relays) > 5 diff --git a/tests/test_rewards_sugar.py b/tests/test_rewards_sugar.py index 669fa37..07e3f0a 100644 --- a/tests/test_rewards_sugar.py +++ b/tests/test_rewards_sugar.py @@ -1,103 +1,49 @@ # SPDX-License-Identifier: BUSL-1.1 import os import pytest -from collections import namedtuple -CHAIN_ID = os.getenv('CHAIN_ID', 10) +CHAIN_ID = os.getenv("CHAIN_ID", 10) @pytest.fixture -def sugar_contract(RewardsSugar, accounts): +def sugar_contract(project, accounts): # Since we depend on the rest of the protocol, # we just point to an existing deployment - yield RewardsSugar.at(os.getenv(f'REWARDS_SUGAR_ADDRESS_{CHAIN_ID}')) + yield project.RewardsSugar.at(os.getenv(f"REWARDS_SUGAR_ADDRESS_{CHAIN_ID}")) @pytest.fixture -def lp_sugar_contract(LpSugar, accounts): +def lp_sugar_contract(project, accounts): # Since we depend on the rest of the protocol, # we just point to an existing deployment - yield LpSugar.at(os.getenv(f'LP_SUGAR_ADDRESS_{CHAIN_ID}')) - - -@pytest.fixture -def LpStruct(lp_sugar_contract): - method_output = lp_sugar_contract.byIndex.abi['outputs'][0] - members = list(map(lambda _e: _e['name'], method_output['components'])) - - yield namedtuple('LpStruct', members) - - -@pytest.fixture -def LpEpochStruct(sugar_contract): - method_output = sugar_contract.epochsByAddress.abi['outputs'][0] - members = list(map(lambda _e: _e['name'], method_output['components'])) - - yield namedtuple('LpEpochStruct', members) - - -@pytest.fixture -def LpEpochBribeStruct(sugar_contract): - lp_epoch_comp = sugar_contract.epochsByAddress.abi['outputs'][0] - pe_bribe_comp = lp_epoch_comp['components'][4] - members = list(map(lambda _e: _e['name'], pe_bribe_comp['components'])) - - yield namedtuple('LpEpochBribeStruct', members) + yield project.LpSugar.at(os.getenv(f"LP_SUGAR_ADDRESS_{CHAIN_ID}")) @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def test_epochsByAddress_limit_offset( - sugar_contract, - lp_sugar_contract, - LpStruct, - LpEpochStruct, - LpEpochBribeStruct -): - first_lp = LpStruct(*lp_sugar_contract.byIndex(1)) - lp_epochs = list(map( - lambda _p: LpEpochStruct(*_p), - sugar_contract.epochsByAddress(20, 3, first_lp.lp) - )) +def test_epochsByAddress_limit_offset(sugar_contract, lp_sugar_contract): + first_lp = lp_sugar_contract.byIndex(1) + lp_epochs = sugar_contract.epochsByAddress(20, 3, first_lp.lp) assert lp_epochs is not None assert len(lp_epochs) > 10 epoch = lp_epochs[1] - epoch_bribes = list(map( - lambda _b: LpEpochBribeStruct(*_b), - epoch.bribes - )) - epoch_fees = list(map( - lambda _f: LpEpochBribeStruct(*_f), - epoch.fees - )) assert epoch.lp == first_lp.lp assert epoch.votes > 0 assert epoch.emissions > 0 - if len(epoch_bribes) > 0: - assert epoch_bribes[0].amount > 0 - - if len(epoch_fees) > 0: - assert epoch_fees[0].amount > 0 - - -def test_epochsLatest_limit_offset( - sugar_contract, - lp_sugar_contract, - LpStruct, - LpEpochStruct -): - second_lp = LpStruct(*lp_sugar_contract.byIndex(1)) - lp_epoch = list(map( - lambda _p: LpEpochStruct(*_p), - sugar_contract.epochsByAddress(1, 0, second_lp.lp) - )) - latest_epoch = list(map( - lambda _p: LpEpochStruct(*_p), - sugar_contract.epochsLatest(1, 1) - )) + if len(epoch.bribes) > 0: + assert epoch.bribes[0].amount > 0 + + if len(epoch.fees) > 0: + assert epoch.fees[0].amount > 0 + + +def test_epochsLatest_limit_offset(sugar_contract, lp_sugar_contract): + second_lp = lp_sugar_contract.byIndex(1) + lp_epoch = sugar_contract.epochsByAddress(1, 0, second_lp.lp) + latest_epoch = sugar_contract.epochsLatest(1, 1) assert lp_epoch is not None @@ -105,16 +51,16 @@ def test_epochsLatest_limit_offset( if len(latest_epoch) < 1: return - pepoch = LpEpochStruct(*lp_epoch[0]) - lepoch = LpEpochStruct(*latest_epoch[0]) + pepoch = lp_epoch[0] + lepoch = latest_epoch[0] assert lepoch.lp == pepoch.lp assert lepoch.ts == pepoch.ts @pytest.mark.skipif(int(CHAIN_ID) not in [10], reason="Only Optimism") -def test_forRoot(sugar_contract, lp_sugar_contract, LpStruct): - first_lp = LpStruct(*lp_sugar_contract.byIndex(1)) +def test_forRoot(sugar_contract, lp_sugar_contract): + first_lp = lp_sugar_contract.byIndex(1) # Use `lp` instead of `root` for testing addresses = sugar_contract.forRoot(first_lp.lp) diff --git a/tests/test_ve_sugar.py b/tests/test_ve_sugar.py index 1fcb668..e8867d4 100644 --- a/tests/test_ve_sugar.py +++ b/tests/test_ve_sugar.py @@ -2,39 +2,27 @@ import os import pytest -from collections import namedtuple - -CHAIN_ID = os.getenv('CHAIN_ID', 10) +CHAIN_ID = os.getenv("CHAIN_ID", 10) @pytest.fixture @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def sugar_contract(VeSugar, accounts): +def sugar_contract(project): # Since we depend on the rest of the protocol, # we just point to an existing deployment - yield VeSugar.at(os.getenv(f'VE_SUGAR_ADDRESS_{CHAIN_ID}')) - - -@pytest.fixture -@pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def VeNFTStruct(sugar_contract): - method_output = sugar_contract.byId.abi['outputs'][0] - members = list(map(lambda _e: _e['name'], method_output['components'])) - - yield namedtuple('VeNFTStruct', members) + yield project.VeSugar.at(os.getenv(f"VE_SUGAR_ADDRESS_{CHAIN_ID}")) @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") def test_initial_state(sugar_contract): - assert sugar_contract.voter() == os.getenv(f'VOTER_{CHAIN_ID}') - assert sugar_contract.dist() == \ - os.getenv(f'DIST_{CHAIN_ID}') + assert sugar_contract.voter() == os.getenv(f"VOTER_{CHAIN_ID}") + assert sugar_contract.dist() == os.getenv(f"DIST_{CHAIN_ID}") assert sugar_contract.ve() is not None @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def test_byId(sugar_contract, VeNFTStruct): - venft = VeNFTStruct(*sugar_contract.byId(1)) +def test_byId(sugar_contract): + venft = sugar_contract.byId(1) assert venft is not None assert len(venft) == 14 @@ -43,12 +31,9 @@ def test_byId(sugar_contract, VeNFTStruct): @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def test_byAccount(sugar_contract, VeNFTStruct): - venft = VeNFTStruct(*sugar_contract.byId(1)) - acc_venft = list(map( - lambda _v: VeNFTStruct(*_v), - sugar_contract.byAccount(venft.account) - )) +def test_byAccount(sugar_contract): + venft = sugar_contract.byId(1) + acc_venft = sugar_contract.byAccount(venft.account) assert venft is not None assert len(venft) == 14 @@ -56,13 +41,10 @@ def test_byAccount(sugar_contract, VeNFTStruct): @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def test_all(sugar_contract, VeNFTStruct): - first_venft = VeNFTStruct(*sugar_contract.byId(1)) - second_venft = VeNFTStruct(*sugar_contract.byId(2)) - venfts = list(map( - lambda _v: VeNFTStruct(*_v), - sugar_contract.all(30, 0) - )) +def test_all(sugar_contract): + first_venft = sugar_contract.byId(1) + second_venft = sugar_contract.byId(2) + venfts = sugar_contract.all(30, 0) assert venfts is not None assert len(venfts) > 2 @@ -77,12 +59,9 @@ def test_all(sugar_contract, VeNFTStruct): @pytest.mark.skipif(int(CHAIN_ID) not in [10, 8453], reason="Only root chains") -def test_all_limit_offset(sugar_contract, VeNFTStruct): - second_venft = VeNFTStruct(*sugar_contract.byId(1)) - venfts = list(map( - lambda _v: VeNFTStruct(*_v), - sugar_contract.all(1, 1) - )) +def test_all_limit_offset(sugar_contract): + second_venft = sugar_contract.byId(1) + venfts = sugar_contract.all(1, 1) assert venfts is not None assert len(venfts) == 1