def METHOD_NAME(
    testerchain, test_registry, threshold_staking, application_economics
):
    application_agent = ContractAgency.get_agent(
        PREApplicationAgent,
        registry=test_registry,
        provider_uri=TEST_ETH_PROVIDER_URI,
    )
    staking_provider_account, operator_account, *other = testerchain.unassigned_accounts
    tx = threshold_staking.functions.setRoles(staking_provider_account).transact()
    testerchain.wait_for_receipt(tx)
    tx = threshold_staking.functions.setStakes(staking_provider_account, application_economics.min_authorization, 0, 0).transact()
    testerchain.wait_for_receipt(tx)
    # The staking provider hasn't bond an operator yet
    assert NULL_ADDRESS == application_agent.get_operator_from_staking_provider(staking_provider=staking_provider_account)
    tpower = TransactingPower(account=staking_provider_account, signer=Web3Signer(testerchain.client))
    _txhash = application_agent.bond_operator(transacting_power=tpower,
                                              staking_provider=staking_provider_account,
                                              operator=operator_account)
    # We can check the staker-worker relation from both sides
    assert operator_account == application_agent.get_operator_from_staking_provider(staking_provider=staking_provider_account)
    assert staking_provider_account == application_agent.get_staking_provider_from_operator(operator_address=operator_account)
    # No staker-worker relationship
    random_address = to_checksum_address(os.urandom(20))
    assert NULL_ADDRESS == application_agent.get_operator_from_staking_provider(staking_provider=random_address)
    assert NULL_ADDRESS == application_agent.get_staking_provider_from_operator(operator_address=random_address)