def METHOD_NAME(fee_sub, token, request_manager):
    mint_amount = 5
    sent_amount = 2
    chain_id = ape.chain.chain_id
    (sender, target) = alloc_accounts(2)
    wrong_token_address = make_address()
    total_fee = request_manager.totalFee(chain_id, token.address, sent_amount)
    old_contract_balance = token.balanceOf(fee_sub.address)
    with ape.reverts("Token not to be subsidized"):
        fee_sub.createRequest(
            chain_id,
            wrong_token_address,
            wrong_token_address,
            target,
            sent_amount,
            1800,
            sender=sender,
        )
    with ape.reverts("Transfer amount too small to be subsidized"):
        fee_sub.createRequest(
            chain_id, token.address, token.address, target, 1, 1800, sender=sender
        )
    token.mint(sender, mint_amount, sender=sender)
    with ape.reverts("Insufficient allowance"):
        fee_sub.createRequest(
            chain_id, token.address, token.address, target, 2, 1800, sender=sender
        )
    token.approve(fee_sub.address, mint_amount, sender=sender)
    assert token.balanceOf(sender) == mint_amount
    request = fee_sub.createRequest(
        chain_id, token.address, token.address, target, sent_amount, 1800, sender=sender
    )
    request_id = request.return_value
    assert token.balanceOf(sender) == mint_amount - sent_amount  # no fee
    assert token.balanceOf(fee_sub.address) == old_contract_balance - total_fee
    assert (
        request_manager.requests(request_id).sender == fee_sub.address
    )  # sender is fee sub contract