@@ -49,16 +49,21 @@ def test_my_w3(w3, request_mocker):
49
49
50
50
async def test_my_w3(async_w3, request_mocker):
51
51
def _iter_responses():
52
- yield {"error": {"code": -32000, "message": "indexing in progress"}}
53
- yield {"error": {"code": -32000, "message": "indexing in progress"}}
54
- yield {"result": "0x1"}
52
+ while True:
53
+ yield {"error": {"message": "transaction indexing in progress"}}
54
+ yield {"error": {"message": "transaction indexing in progress"}}
55
+ yield {"result": {"status": "0x1"}}
55
56
56
57
iter_responses = _iter_responses()
57
58
58
59
async with request_mocker(
59
60
async_w3,
60
- mock_responses={"eth_getTransactionReceipt": next(iter_responses)}
61
+ mock_responses={
62
+ "eth_getTransactionReceipt": lambda *_: next(iter_responses)
63
+ },
61
64
):
65
+ # assert that the first two error responses are handled and the result
66
+ # is eventually returned when present
62
67
assert await w3.eth.get_transaction_receipt("0x1") == "0x1"
63
68
64
69
@@ -85,9 +90,9 @@ def __init__(
85
90
self .mock_results = mock_results or {}
86
91
self .mock_errors = mock_errors or {}
87
92
self .mock_responses = mock_responses or {}
88
- self ._make_request : Union ["AsyncMakeRequestFn" , "MakeRequestFn" ] = (
89
- w3 . provider . make_request
90
- )
93
+ self ._make_request : Union [
94
+ "AsyncMakeRequestFn" , "MakeRequestFn"
95
+ ] = w3 . provider . make_request
91
96
92
97
def __enter__ (self ) -> "Self" :
93
98
setattr (self .w3 .provider , "make_request" , self ._mock_request_handler )
0 commit comments