118 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""Test calling methods on the Exchange contract."""
 | 
						|
 | 
						|
from eth_utils import to_checksum_address
 | 
						|
from web3 import Web3
 | 
						|
from web3.utils import datatypes
 | 
						|
 | 
						|
from zero_ex.contract_addresses import NETWORK_TO_ADDRESSES, NetworkId
 | 
						|
import zero_ex.contract_artifacts
 | 
						|
from zero_ex.json_schemas import assert_valid
 | 
						|
from zero_ex.order_utils import (
 | 
						|
    Order,
 | 
						|
    OrderInfo,
 | 
						|
    order_to_jsdict,
 | 
						|
    generate_order_hash_hex,
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
def test_get_order_info():
 | 
						|
    """Demonstrate Exchange.getOrderInfo()."""
 | 
						|
    order: Order = {
 | 
						|
        "makerAddress": "0x0000000000000000000000000000000000000000",
 | 
						|
        "takerAddress": "0x0000000000000000000000000000000000000000",
 | 
						|
        "feeRecipientAddress": "0x0000000000000000000000000000000000000000",
 | 
						|
        "senderAddress": "0x0000000000000000000000000000000000000000",
 | 
						|
        "makerAssetAmount": 1000000000000000000,
 | 
						|
        "takerAssetAmount": 1000000000000000000,
 | 
						|
        "makerFee": 0,
 | 
						|
        "takerFee": 0,
 | 
						|
        "expirationTimeSeconds": 12345,
 | 
						|
        "salt": 12345,
 | 
						|
        "makerAssetData": (b"\x00") * 20,
 | 
						|
        "takerAssetData": (b"\x00") * 20,
 | 
						|
    }
 | 
						|
 | 
						|
    web3_instance = Web3(Web3.HTTPProvider("http://127.0.0.1:8545"))
 | 
						|
 | 
						|
    # false positive from pylint: disable=no-member
 | 
						|
    contract_address = NETWORK_TO_ADDRESSES[
 | 
						|
        NetworkId(int(web3_instance.net.version))
 | 
						|
    ].exchange
 | 
						|
 | 
						|
    assert_valid(
 | 
						|
        order_to_jsdict(order, exchange_address=contract_address),
 | 
						|
        "/orderSchema",
 | 
						|
    )
 | 
						|
 | 
						|
    # false positive from pylint: disable=no-member
 | 
						|
    exchange: datatypes.Contract = web3_instance.eth.contract(
 | 
						|
        address=to_checksum_address(contract_address),
 | 
						|
        abi=zero_ex.contract_artifacts.abi_by_name("Exchange"),
 | 
						|
    )
 | 
						|
 | 
						|
    order_info = OrderInfo(*exchange.call().getOrderInfo(order))
 | 
						|
 | 
						|
    assert isinstance(order_info.order_status, int)
 | 
						|
    assert order_info.order_status == 4
 | 
						|
 | 
						|
    assert isinstance(order_info.order_hash, bytes)
 | 
						|
    assert order_info.order_hash.hex() == generate_order_hash_hex(
 | 
						|
        order,
 | 
						|
        exchange_address=NETWORK_TO_ADDRESSES[NetworkId.GANACHE].exchange,
 | 
						|
    )
 | 
						|
 | 
						|
    assert isinstance(order_info.order_taker_asset_filled_amount, int)
 | 
						|
    assert order_info.order_taker_asset_filled_amount == 0
 | 
						|
 | 
						|
 | 
						|
def test_get_orders_info():
 | 
						|
    """Demonstrate Exchange.getOrderInfo()."""
 | 
						|
    order: Order = {
 | 
						|
        "makerAddress": "0x0000000000000000000000000000000000000000",
 | 
						|
        "takerAddress": "0x0000000000000000000000000000000000000000",
 | 
						|
        "feeRecipientAddress": "0x0000000000000000000000000000000000000000",
 | 
						|
        "senderAddress": "0x0000000000000000000000000000000000000000",
 | 
						|
        "makerAssetAmount": 1000000000000000000,
 | 
						|
        "takerAssetAmount": 1000000000000000000,
 | 
						|
        "makerFee": 0,
 | 
						|
        "takerFee": 0,
 | 
						|
        "expirationTimeSeconds": 12345,
 | 
						|
        "salt": 12345,
 | 
						|
        "makerAssetData": (b"\x00") * 20,
 | 
						|
        "takerAssetData": (b"\x00") * 20,
 | 
						|
    }
 | 
						|
 | 
						|
    web3_instance = Web3(Web3.HTTPProvider("http://127.0.0.1:8545"))
 | 
						|
 | 
						|
    # false positive from pylint: disable=no-member
 | 
						|
    contract_address = NETWORK_TO_ADDRESSES[
 | 
						|
        NetworkId(int(web3_instance.net.version))
 | 
						|
    ].exchange
 | 
						|
 | 
						|
    assert_valid(
 | 
						|
        order_to_jsdict(order, exchange_address=contract_address),
 | 
						|
        "/orderSchema",
 | 
						|
    )
 | 
						|
 | 
						|
    # false positive from pylint: disable=no-member
 | 
						|
    exchange: datatypes.Contract = web3_instance.eth.contract(
 | 
						|
        address=to_checksum_address(contract_address),
 | 
						|
        abi=zero_ex.contract_artifacts.abi_by_name("Exchange"),
 | 
						|
    )
 | 
						|
 | 
						|
    orders_info = exchange.call().getOrdersInfo([order])
 | 
						|
 | 
						|
    for order_info in orders_info:
 | 
						|
        order_info = OrderInfo(*order_info)
 | 
						|
        assert isinstance(order_info.order_status, int)
 | 
						|
        assert order_info.order_status == 4
 | 
						|
 | 
						|
        assert isinstance(order_info.order_hash, bytes)
 | 
						|
        assert order_info.order_hash.hex() == generate_order_hash_hex(
 | 
						|
            order,
 | 
						|
            exchange_address=NETWORK_TO_ADDRESSES[NetworkId.GANACHE].exchange,
 | 
						|
        )
 | 
						|
 | 
						|
        assert isinstance(order_info.order_taker_asset_filled_amount, int)
 | 
						|
        assert order_info.order_taker_asset_filled_amount == 0
 |