public async Task PostFromAnAuthenticatedUserWithExistingVoteWithDifferentValue_DeletesVoteAndReturnsResultWithNewValue() { const int voteValue = 1; const int accountId = 7; const long countdownId = 3; var systemTime = new DateTime(2017, 10, 22, 7, 31, 53); TestableCountdownController controller = TestableCountdownController.Create(); controller.MockContextService.Setup(x => x.CurrentUserAccountId).Returns(accountId); controller.MockSystemClock.Setup(x => x.UtcNow).Returns(systemTime); controller.CountdownRepository.Countdowns = new List <Countdown> { new Countdown { Id = countdownId, CreatedByAccountId = 9 } }; controller.CountdownRepository.CountdownAggregates = new List <CountdownAggregate> { new CountdownAggregate { Id = countdownId, CreatedByAccountId = 9, VoteScore = 3, CurrentUserVote = voteValue } }; controller.VoteRepository.Votes.Add(new Core.Entities.Vote { CountdownId = countdownId, CastedByAccountId = accountId, Value = -1, CastedOn = new DateTime(2017, 10, 11, 7, 31, 53) }); JsonResult result = await controller.Vote(new CountdownVoteViewModel { CountdownId = countdownId, Value = voteValue }) as JsonResult; Assert.IsNotNull(result); CountdownVoteViewModel model = result.Data as CountdownVoteViewModel; Assert.IsNotNull(model); Assert.AreEqual(countdownId, model.CountdownId); Assert.AreEqual(3, model.VoteScore); Assert.AreEqual(voteValue, model.CurrentUserVote); Core.Entities.Vote vote = controller.VoteRepository.Votes.FirstOrDefault(); Assert.IsNotNull(vote); Assert.AreEqual(countdownId, vote.CountdownId); Assert.AreEqual(voteValue, vote.Value); Assert.AreEqual(accountId, vote.CastedByAccountId); Assert.AreEqual(systemTime, vote.CastedOn); }
public Task CreateAsync(Core.Entities.Vote vote) { return(Task.Run(() => Votes.Add(vote))); }