# standard imports
import logging

# third-party imports
import pytest
from eth_accounts_index import AccountRegistry
from cic_registry import CICRegistry

logg = logging.getLogger(__name__)


@pytest.fixture(scope='session')
def accounts_registry(
        default_chain_spec,
        cic_registry,
        w3,
        ):
    abi = AccountRegistry.abi()
    constructor = w3.eth.contract(abi=abi, bytecode=AccountRegistry.bytecode())
    tx_hash = constructor.constructor().transact()
    r = w3.eth.getTransactionReceipt(tx_hash) 
    logg.debug('accounts registry deployed {}'.format(r.contractAddress))
    account_registry = AccountRegistry(w3, r.contractAddress)

    c = w3.eth.contract(abi=abi, address=r.contractAddress)
    c.functions.addWriter(w3.eth.accounts[0]).transact()

    CICRegistry.add_contract(default_chain_spec, c, 'AccountRegistry')

    return account_registry