def METHOD_NAME(
    app_api_client,
    permission_manage_apps,
    permission_manage_users,
    permission_manage_gift_card,
    gift_card,
    staff_user,
):
    # given
    assert not gift_card.events.all()
    gift_card_id = graphene.Node.to_global_id("GiftCard", gift_card.id)
    message = "nuclear note"
    variables = {"id": gift_card_id, "message": message}
    # when
    response = app_api_client.post_graphql(
        GIFT_CARD_ADD_NOTE_MUTATION,
        variables,
        permissions=[
            permission_manage_apps,
            permission_manage_users,
            permission_manage_gift_card,
        ],
    )
    # then
    content = get_graphql_content(response)
    data = content["data"]["giftCardAddNote"]
    assert data["giftCard"]["id"] == gift_card_id
    assert data["event"]["user"] is None
    assert data["event"]["app"]["name"] == app_api_client.app.name
    assert data["event"]["message"] == message
    event = gift_card.events.get()
    assert event.type == GiftCardEvents.NOTE_ADDED
    assert event.user is None
    assert event.app == app_api_client.app
    assert event.parameters == {"message": message}