upvote feature with tests