public void GetOnNonExistingVote_ReturnsNull() { var author = UserFactory.CreateUser(); var question = SaveQuestion(author); Assert.IsNull(QuestionVoteRepository.GetVote(author, question)); }
public void BulkCount() { var author = UserFactory.CreateUser(); var voter1 = UserFactory.CreateUser(); var voter2 = UserFactory.CreateUser(); var voter3 = UserFactory.CreateUser(); var question1 = SaveQuestion(author); var question2 = SaveQuestion(author); QuestionVoteRepository.CreateOrUpdateVote(voter1, question1, VoteType.ThumbUp); QuestionVoteRepository.CreateOrUpdateVote(voter2, question1, VoteType.ThumbUp); QuestionVoteRepository.CreateOrUpdateVote(voter3, question1, VoteType.ThumbDown); QuestionVoteRepository.CreateOrUpdateVote(voter1, question2, VoteType.ThumbDown); QuestionVoteRepository.CreateOrUpdateVote(voter2, question2, VoteType.ThumbDown); var votes = QuestionVoteRepository.GetVoteCount(new[] { question1.Id, question2.Id }); Assert.AreEqual(2, votes.Count); Assert.AreEqual(1, votes[question1.Id]); Assert.AreEqual(-2, votes[question2.Id]); AssertVotesOnQuestion(1, question1); AssertVotesOnQuestion(-2, question2); }
public void UnvotedQuestion_CountVotesIsZero() { var user = UserFactory.CreateUser(); var question = SaveQuestion(user); var voteCount = QuestionVoteRepository.GetVoteCount(question.Id); Assert.AreEqual(0, voteCount.ThumbUps); Assert.AreEqual(0, voteCount.ThumbDowns); AssertVotesOnQuestion(0, question); }
public void RemoveVote_RemovesCorrectVote() { var author = UserFactory.CreateUser(); var voter = UserFactory.CreateUser(); var question = SaveQuestion(author); QuestionVoteRepository.CreateOrUpdateVote(voter, question, VoteType.ThumbUp); Assert.AreEqual(1, TallyVotes(question.Id)); AssertVotesOnQuestion(1, question); QuestionVoteRepository.RemoveVote(voter.Id, question.Id); Assert.AreEqual(0, TallyVotes(question.Id)); AssertVotesOnQuestion(0, question); }
public void AddAndReadVote() { var user = UserFactory.CreateUser(); var question = SaveQuestion(user); QuestionVoteRepository.CreateOrUpdateVote(user, question, VoteType.ThumbUp); var vote = QuestionVoteRepository.GetVote(user, question); Assert.AreEqual(user.Id, vote.Key.UserId); Assert.AreEqual(question.Id, vote.Key.PostId); Assert.AreEqual(VoteType.ThumbUp, vote.Vote); AssertVotesOnQuestion(1, question); }
public void UpdatingAVoteTwice_DoesntUpdate_ThenUpdateToDifferetnVoteWorks() { var author = UserFactory.CreateUser(); var voter = UserFactory.CreateUser(); var question = SaveQuestion(author); QuestionVoteRepository.CreateOrUpdateVote(voter, question, VoteType.ThumbUp); Assert.AreEqual(1, TallyVotes(question.Id)); AssertVotesOnQuestion(1, question); QuestionVoteRepository.CreateOrUpdateVote(voter, question, VoteType.ThumbUp); Assert.AreEqual(1, TallyVotes(question.Id)); AssertVotesOnQuestion(1, question); QuestionVoteRepository.CreateOrUpdateVote(voter, question, VoteType.ThumbDown); Assert.AreEqual(-1, TallyVotes(question.Id)); AssertVotesOnQuestion(-1, question); }
public void TwoThumbUpsAndOneThumbDown_CountVotesIsCorrect() { // prepare users var askingUser = UserFactory.CreateUser(); var thumbUpper1 = UserFactory.CreateUser(); var thumbUpper2 = UserFactory.CreateUser(); var thumbDowner = UserFactory.CreateUser(); // and question var question = SaveQuestion(askingUser); // vote QuestionVoteRepository.CreateOrUpdateVote(thumbUpper1, question, VoteType.ThumbUp); QuestionVoteRepository.CreateOrUpdateVote(thumbUpper2, question, VoteType.ThumbUp); QuestionVoteRepository.CreateOrUpdateVote(thumbDowner, question, VoteType.ThumbDown); // count votes var voteCount = QuestionVoteRepository.GetVoteCount(question.Id); Assert.AreEqual(2, voteCount.ThumbUps); Assert.AreEqual(1, voteCount.ThumbDowns); AssertVotesOnQuestion(1, question); }
private int TallyVotes(int questionId) { var voteCount = QuestionVoteRepository.GetVoteCount(questionId); return(voteCount.ThumbUps - voteCount.ThumbDowns); }