-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(tests): make all tests green and asyncify (#165)
- Loading branch information
1 parent
490263b
commit 646c0bf
Showing
6 changed files
with
98 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,5 +6,4 @@ dank_mids.egg-info | |
.pytest_cache | ||
.eggs | ||
.mypy_cache | ||
__pycache__ | ||
*.log* | ||
__pycache__ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,3 @@ | ||
eth-brownie>1.16.0 | ||
pytest | ||
pytest-asyncio-cooperative |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,54 +1,85 @@ | ||
# sourcery skip: no-loop-in-tests | ||
import asyncio | ||
import pytest | ||
|
||
from brownie import Contract, web3 | ||
import brownie | ||
import eth_retry | ||
from decimal import Decimal | ||
from multicall.utils import await_awaitable | ||
|
||
from dank_mids import dank_web3, patch_contract, setup_dank_w3_from_sync | ||
import dank_mids | ||
from dank_mids.brownie_patch.call import _patch_call | ||
|
||
|
||
def test_patch_call(): | ||
# must use from_explorer for gh testing workflow | ||
# NOTE: we don't want tests to fail due to api limits | ||
get_contract = eth_retry.auto_retry(brownie.Contract.from_explorer) | ||
get_dank_contract = eth_retry.auto_retry(dank_mids.Contract.from_explorer) | ||
|
||
@pytest.mark.asyncio_cooperative | ||
async def test_patch_call(): | ||
# must use from_explorer for gh testing workflow | ||
weth = Contract.from_explorer('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2') | ||
_patch_call(weth.totalSupply, dank_web3) | ||
weth = get_contract('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2') | ||
_patch_call(weth.totalSupply, dank_mids.web3) | ||
assert hasattr(weth.totalSupply, 'coroutine') | ||
assert await_awaitable(weth.totalSupply.coroutine(block_identifier=13_000_000)) == 6620041514474872981393155 | ||
assert await weth.totalSupply.coroutine(block_identifier=13_000_000) == 6620041514474872981393155 | ||
|
||
def test_gather(): | ||
@pytest.mark.asyncio_cooperative | ||
async def test_gather(): | ||
# must use from_explorer for gh testing workflow | ||
weth = Contract.from_explorer('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2') | ||
_patch_call(weth.totalSupply, dank_web3) | ||
weth = get_contract('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2') | ||
_patch_call(weth.totalSupply, dank_mids.web3) | ||
assert hasattr(weth.totalSupply, 'coroutine') | ||
for result in await_awaitable(asyncio.gather(*[weth.totalSupply.coroutine(block_identifier=13_000_000) for _ in range(10_000)])): | ||
for result in await asyncio.gather(*[weth.totalSupply.coroutine(block_identifier=13_000_000) for _ in range(10_000)]): | ||
assert result == 6620041514474872981393155 | ||
|
||
def test_patch_contract(): | ||
# ContractCall | ||
# must use from_explorer for gh testing workflow | ||
@pytest.mark.asyncio_cooperative | ||
async def test_patch_contract_call(): | ||
# specify w3 | ||
weth = patch_contract(Contract.from_explorer('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), dank_web3) | ||
weth = dank_mids.patch_contract(get_contract('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), dank_mids.web3) | ||
assert hasattr(weth.totalSupply, 'coroutine') | ||
assert await_awaitable(weth.totalSupply.coroutine(block_identifier=13_000_000)) == 6620041514474872981393155 | ||
assert await_awaitable(weth.totalSupply.coroutine(block_identifier=13_000_000, decimals=18)) == Decimal(6620041.514474872981393155) | ||
assert await_awaitable(weth.totalSupply) | ||
assert await weth.totalSupply.coroutine(block_identifier=13_000_000) == 6620041514474872981393155 | ||
assert await weth.totalSupply.coroutine(block_identifier=13_000_000, decimals=18) == Decimal("6620041.514474872981393155") | ||
|
||
# ContractTx | ||
@pytest.mark.asyncio_cooperative | ||
async def test_patch_contract_tx(): | ||
# must use from_explorer for gh testing workflow | ||
# dont specify w3 | ||
uni_v3_quoter = patch_contract(Contract.from_explorer('0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6')) | ||
uni_v3_quoter = dank_mids.patch_contract(get_contract('0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6')) | ||
assert hasattr(uni_v3_quoter.quoteExactInput, 'coroutine') | ||
assert await ( | ||
uni_v3_quoter.quoteExactInput.coroutine(b"\xc0*\xaa9\xb2#\xfe\x8d\n\x0e\\O'\xea\xd9\x08<ul\xc2\x00\x01\xf4\xa0\xb8i\x91\xc6!\x8b6\xc1\xd1\x9dJ.\x9e\xb0\xce6\x06\xebH", 1e18, block_identifier=13_000_000) | ||
) == 3169438072 | ||
assert await ( | ||
uni_v3_quoter.quoteExactInput.coroutine(b"\xc0*\xaa9\xb2#\xfe\x8d\n\x0e\\O'\xea\xd9\x08<ul\xc2\x00\x01\xf4\xa0\xb8i\x91\xc6!\x8b6\xc1\xd1\x9dJ.\x9e\xb0\xce6\x06\xebH", 1e18, block_identifier=13_000_000, decimals=8) | ||
) == Decimal("31.69438072") | ||
|
||
@pytest.mark.asyncio_cooperative | ||
async def test_dank_contract_call(): | ||
dank_weth = get_dank_contract('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2') | ||
assert isinstance(dank_weth, dank_mids.Contract) | ||
assert isinstance(dank_weth.totalSupply, dank_mids.DankContractCall) | ||
assert await dank_weth.totalSupply.coroutine(block_identifier=13_000_000) == 6620041514474872981393155 | ||
assert await dank_weth.totalSupply.coroutine(block_identifier=13_000_000, decimals=18) == Decimal("6620041.514474872981393155") | ||
assert await dank_weth.totalSupply | ||
|
||
@pytest.mark.asyncio_cooperative | ||
async def test_dank_contract_tx(): | ||
# ContractTx | ||
# must use from_explorer for gh testing workflow | ||
uni_v3_quoter = get_dank_contract('0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6') | ||
assert isinstance(uni_v3_quoter, dank_mids.Contract) | ||
assert isinstance(uni_v3_quoter.quoteExactInput, dank_mids.DankContractTx) | ||
assert hasattr(uni_v3_quoter.quoteExactInput, 'coroutine') | ||
assert await_awaitable( | ||
assert await ( | ||
uni_v3_quoter.quoteExactInput.coroutine(b"\xc0*\xaa9\xb2#\xfe\x8d\n\x0e\\O'\xea\xd9\x08<ul\xc2\x00\x01\xf4\xa0\xb8i\x91\xc6!\x8b6\xc1\xd1\x9dJ.\x9e\xb0\xce6\x06\xebH", 1e18, block_identifier=13_000_000) | ||
) == 3169438072 | ||
assert await_awaitable( | ||
assert await ( | ||
uni_v3_quoter.quoteExactInput.coroutine(b"\xc0*\xaa9\xb2#\xfe\x8d\n\x0e\\O'\xea\xd9\x08<ul\xc2\x00\x01\xf4\xa0\xb8i\x91\xc6!\x8b6\xc1\xd1\x9dJ.\x9e\xb0\xce6\x06\xebH", 1e18, block_identifier=13_000_000, decimals=8) | ||
) == Decimal(31.69438072) | ||
) == Decimal("31.69438072") | ||
|
||
def test_call_setup_twice_on_same_web3(): | ||
w3_a = setup_dank_w3_from_sync(web3) | ||
w3_a = dank_mids.setup_dank_w3_from_sync(brownie.web3) | ||
w3_a.test = True | ||
w3_b = setup_dank_w3_from_sync(web3) | ||
w3_b = dank_mids.setup_dank_w3_from_sync(brownie.web3) | ||
assert hasattr(w3_b, 'test') | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters