aboutsummaryrefslogtreecommitdiffstats
path: root/python-packages/json_schemas/test/test_json_schemas.py
blob: 1d1efdd1208fd39364c90063af8554724af6cb9c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"""Tests of zero_ex.json_schemas"""


from zero_ex.order_utils import make_empty_order, order_to_jsdict
from zero_ex.json_schemas import _LOCAL_RESOLVER, assert_valid


NULL_ADDRESS = "0x0000000000000000000000000000000000000000"

EMPTY_ORDER = {
    "makerAddress": NULL_ADDRESS,
    "takerAddress": NULL_ADDRESS,
    "senderAddress": NULL_ADDRESS,
    "feeRecipientAddress": NULL_ADDRESS,
    "makerAssetData": NULL_ADDRESS,
    "takerAssetData": NULL_ADDRESS,
    "salt": "0",
    "makerFee": "0",
    "takerFee": "0",
    "makerAssetAmount": "0",
    "takerAssetAmount": "0",
    "expirationTimeSeconds": "0",
    "exchangeAddress": NULL_ADDRESS,
}


def test_assert_valid_caches_resources():
    """Test that the JSON ref resolver in `assert_valid()` caches resources

    In order to test the cache we much access the private class of
    `json_schemas` and reset the LRU cache on `_LocalRefResolver`.
    For this to happen, we need to disable errror `W0212`
    on _LOCAL_RESOLVER
    """
    _LOCAL_RESOLVER._remote_cache.cache_clear()  # pylint: disable=W0212

    assert_valid(order_to_jsdict(make_empty_order()), "/orderSchema")
    cache_info = (
        _LOCAL_RESOLVER._remote_cache.cache_info()  # pylint: disable=W0212
    )
    assert cache_info.currsize == 4
    assert cache_info.hits > 0