Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public Task CreateAsync(Core.Entities.Vote vote)
 {
     return(Task.Run(() => Votes.Add(vote)));
 }