mev-inspect-py/tests/test_block.py
m-r-g-t b3438d7353
feat: remove need for pg within mev-inspect env (#344)
* instructions for running without kubernetes ('monolithic mode')

* added docker instructions

* chore: remove pgsql as hard dependency

* chore: update deps

* docs: updated docs to remove local pg engine for docker install

* docs: reword docs

* ci: update poetry source

* fix: refactor tests for mypy

* fix: search miner for eth2

* feat: improve eth2 miner fn

* refactor: unnecessary comma

* test: add miner generation tests

---------

Co-authored-by: pintail <you@example.com>
2023-10-11 16:16:44 -04:00

66 lines
2.0 KiB
Python

from unittest.mock import MagicMock, patch
import pytest
from mev_inspect.block import _find_or_fetch_miner_address
from tests.utils import load_test_block
@pytest.fixture
def mocked_web3():
with patch("mev_inspect.block.Web3") as mock_web3:
yield mock_web3
@pytest.mark.asyncio
# pylint: disable=redefined-outer-name
async def test_eth1_block_miner(mocked_web3):
# Create a mock Web3 instance
mock_web3_instance = mocked_web3.return_value
# Set up the mock for web3.eth.get_block
mock_eth = mock_web3_instance.eth
mock_eth.get_block.return_value = {
"miner": "0x4a536c1f6a5d5a9c1aeca9f6d04fbbf5f0d8f4e3"
}
# Load a sample block and remove the miner
block_number = 10921991
block = load_test_block(block_number)
block.miner = None
# Test that the miner is fetched
miner_address = await _find_or_fetch_miner_address(
w3=mock_web3_instance, traces=block.traces, block_number=block_number
) # Use 'await'
# this is within the traces object
assert miner_address == "0x52bc44d5378309ee2abf1539bf71de1b7d7be3b5"
@pytest.mark.asyncio
# pylint: disable=redefined-outer-name
async def test_eth2_block_miner(mocked_web3):
# Create a mock Web3 instance
mock_web3_instance = mocked_web3.return_value
# Create a coroutine function to mock w3.eth.get_block
# pylint: disable=unused-argument
async def mock_get_block(block_number):
return {"miner": "0x4a536c1f6a5d5a9c1aeca9f6d04fbbf5f0d8f4e3"}
# Mock w3.eth.get_block with the coroutine function
mock_web3_instance.eth.get_block = MagicMock(side_effect=mock_get_block)
# Load a sample block and remove the miner
block_number = 10921990
block = load_test_block(block_number)
block.miner = None
# Test that the miner is fetched
miner_address = await _find_or_fetch_miner_address(
w3=mock_web3_instance, traces=block.traces, block_number=block_number
) # Use 'await'
assert miner_address == "0x4a536c1f6a5d5a9c1aeca9f6d04fbbf5f0d8f4e3"