def METHOD_NAME(
    staff_api_client, customer_user, permission_manage_users, graphql_address_data
):
    # given
    query = ADDRESS_CREATE_MUTATION
    graphql_address_data["city"] = "Dummy"
    user_id = graphene.Node.to_global_id("User", customer_user.id)
    variables = {"user": user_id, "address": graphql_address_data}
    # when
    response = staff_api_client.post_graphql(
        query, variables, permissions=[permission_manage_users]
    )
    content = get_graphql_content(response)
    # then
    assert content["data"]["addressCreate"]["errors"] == []
    data = content["data"]["addressCreate"]
    assert data["address"]["city"] == "DUMMY"
    assert data["address"]["country"]["code"] == "PL"
    assert data["address"]["metadata"] == [{"key": "public", "value": "public_value"}]
    address_obj = Address.objects.get(city="DUMMY")
    assert address_obj.metadata == {"public": "public_value"}
    assert address_obj.user_addresses.first() == customer_user
    assert data["user"]["id"] == user_id
    customer_user.refresh_from_db()
    for field in ["city", "country"]:
        assert variables["address"][field].lower() in customer_user.search_document