def METHOD_NAME(agent, application_economics, deploy_contract):
    testerchain = agent.blockchain
    deployer, someone, *everybody_else = testerchain.client.accounts
    mock_target, _ = deploy_contract('ReceiveApprovalMethodMock')
    # Approve and call
    tpower = TransactingPower(account=someone, signer=Web3Signer(testerchain.client))
    call_data = b"Good morning, that's a nice tnetennba."
    receipt = agent.approve_and_call(amount=application_economics.min_authorization,
                                     target_address=mock_target.address,
                                     transacting_power=tpower,
                                     call_data=call_data)
    assert receipt['status'] == 1, "Transaction Rejected"
    assert receipt['logs'][0]['address'] == agent.contract_address
    assert mock_target.functions.extraData().call() == call_data
    assert mock_target.functions.sender().call() == someone
    assert mock_target.functions.value().call() == application_economics.min_authorization