# standard imports
import logging
import copy
import datetime

# external imports
import celery

# cic-eth imports
from cic_eth_aux.erc20_demurrage_token import (
        DemurrageCalculationTask,
        aux_setup,
        )
from cic_eth_aux.erc20_demurrage_token.api import Api as AuxApi

logg = logging.getLogger()


def test_demurrage_calulate_task(
        default_chain_spec,
        eth_rpc,
        cic_registry,
        celery_session_worker,
        register_demurrage_token,
        demurrage_token_symbol,
        contract_roles,
        load_config,
        ):
 
    config = copy.copy(load_config)
    config.add(str(default_chain_spec), 'CIC_CHAIN_SPEC', exists_ok=True)
    config.add(demurrage_token_symbol, 'CIC_DEFAULT_TOKEN_SYMBOL', exists_ok=True)
    aux_setup(eth_rpc, load_config, sender_address=contract_roles['CONTRACT_DEPLOYER'])

    since = datetime.datetime.utcnow() - datetime.timedelta(minutes=1)
    s = celery.signature(
            'cic_eth_aux.erc20_demurrage_token.get_adjusted_balance',
            [
                demurrage_token_symbol,
                1000,
                since.timestamp(),
                ],
            queue=None,
            )
    t = s.apply_async()
    r = t.get_leaf()
    assert t.successful()
    assert r == 980



def test_demurrage_calculate_api(
        default_chain_spec,
        eth_rpc,
        cic_registry,
        celery_session_worker,
        register_demurrage_token,
        demurrage_token_symbol,
        contract_roles,
        load_config,
        ):

        api = AuxApi(str(default_chain_spec), queue=None)
        since = datetime.datetime.utcnow() - datetime.timedelta(minutes=1)
        t = api.get_adjusted_balance(demurrage_token_symbol, 1000, since.timestamp())
        r = t.get_leaf()
        assert t.successful()
        assert r == 980