74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from mev_inspect.schemas.transfers import Transfer
 | 
						|
from mev_inspect.transfers import remove_child_transfers_of_transfers
 | 
						|
 | 
						|
 | 
						|
def test_remove_child_transfers_of_transfers(get_transaction_hashes, get_addresses):
 | 
						|
    [transaction_hash, other_transaction_hash] = get_transaction_hashes(2)
 | 
						|
 | 
						|
    [
 | 
						|
        alice_address,
 | 
						|
        bob_address,
 | 
						|
        first_token_address,
 | 
						|
        second_token_address,
 | 
						|
        third_token_address,
 | 
						|
    ] = get_addresses(5)
 | 
						|
 | 
						|
    outer_transfer = Transfer(
 | 
						|
        block_number=123,
 | 
						|
        transaction_hash=transaction_hash,
 | 
						|
        trace_address=[0],
 | 
						|
        from_address=alice_address,
 | 
						|
        to_address=bob_address,
 | 
						|
        amount=10,
 | 
						|
        token_address=first_token_address,
 | 
						|
    )
 | 
						|
 | 
						|
    inner_transfer = Transfer(
 | 
						|
        **{
 | 
						|
            **outer_transfer.dict(),
 | 
						|
            **dict(
 | 
						|
                trace_address=[0, 0],
 | 
						|
                token_address=second_token_address,
 | 
						|
            ),
 | 
						|
        }
 | 
						|
    )
 | 
						|
 | 
						|
    other_transfer = Transfer(
 | 
						|
        block_number=123,
 | 
						|
        transaction_hash=transaction_hash,
 | 
						|
        trace_address=[1],
 | 
						|
        from_address=bob_address,
 | 
						|
        to_address=alice_address,
 | 
						|
        amount=10,
 | 
						|
        token_address=third_token_address,
 | 
						|
    )
 | 
						|
 | 
						|
    separate_transaction_transfer = Transfer(
 | 
						|
        **{
 | 
						|
            **inner_transfer.dict(),
 | 
						|
            **dict(transaction_hash=other_transaction_hash),
 | 
						|
        }
 | 
						|
    )
 | 
						|
 | 
						|
    transfers = [
 | 
						|
        outer_transfer,
 | 
						|
        inner_transfer,
 | 
						|
        other_transfer,
 | 
						|
        separate_transaction_transfer,
 | 
						|
    ]
 | 
						|
 | 
						|
    expected_transfers = [
 | 
						|
        outer_transfer,
 | 
						|
        other_transfer,
 | 
						|
        separate_transaction_transfer,
 | 
						|
    ]
 | 
						|
 | 
						|
    removed_transfers = remove_child_transfers_of_transfers(transfers)
 | 
						|
    assert _equal_ignoring_order(removed_transfers, expected_transfers)
 | 
						|
 | 
						|
 | 
						|
def _equal_ignoring_order(first_list, second_list) -> bool:
 | 
						|
    return all(first in second_list for first in first_list) and all(
 | 
						|
        second in first_list for second in second_list
 | 
						|
    )
 |