def METHOD_NAME(
        client, librarian_martigny, lib_martigny,
        item_at_desk_martigny_patron_and_loan_at_desk,
        loc_public_martigny, circulation_policies, loc_public_fully,
        item_on_loan_martigny_patron_and_loan_on_loan,
        item_in_transit_martigny_patron_and_loan_for_pickup,
        item_in_transit_martigny_patron_and_loan_to_house):
    """Test the frontend update pickup location calls of other loan states."""
    login_user_via_session(client, librarian_martigny.user)
    # CHANGE_PICKUP_LOCATION_2_1: update denied on ITEM_ON_LOAN loans.
    item, patron, loan = item_at_desk_martigny_patron_and_loan_at_desk
    res, data = postdata(
        client,
        'api_item.update_loan_pickup_location',
        dict(
            pid=loan.pid,
            pickup_location_pid=loc_public_fully.pid
        )
    )
    assert res.status_code == 403
    # CHANGE_PICKUP_LOCATION_3_1: update denied on ITEM_AT_DESK loans.
    item, patron, loan = item_on_loan_martigny_patron_and_loan_on_loan
    res, data = postdata(
        client,
        'api_item.update_loan_pickup_location',
        dict(
            pid=loan.pid,
            pickup_location_pid=loc_public_fully.pid
        )
    )
    assert res.status_code == 403
    # CHANGE_PICKUP_LOCATION_4: update allowed on IN_TRANSIT_FOR_PICKUP loans.
    item, patron, loan = item_in_transit_martigny_patron_and_loan_for_pickup
    res, data = postdata(
        client,
        'api_item.update_loan_pickup_location',
        dict(
            pid=loan.pid,
            pickup_location_pid=loc_public_fully.pid
        )
    )
    assert res.status_code == 200
    # CHANGE_PICKUP_LOCATION_5: update denied on IN_TRANSIT_TO_HOUSE loans.
    item, patron, loan = item_in_transit_martigny_patron_and_loan_to_house
    res, data = postdata(
        client,
        'api_item.update_loan_pickup_location',
        dict(
            pid=loan.pid,
            pickup_location_pid=loc_public_fully.pid
        )
    )
    assert res.status_code == 403