public async Task When2UsersVoteForTheSameProductTheAverageVoteShouldBeCorrect() { var list = new List <Vote>(); var mockRepo = new Mock <IRepository <Vote> >(); mockRepo.Setup(x => x.All()).Returns(list.AsQueryable()); mockRepo.Setup(x => x.AddAsync(It.IsAny <Vote>())).Callback((Vote vote) => list.Add(vote)); var service = new VotesService(mockRepo.Object); await service.SetVoteASync(2, "baiGergi", 5); await service.SetVoteASync(2, "baiPesho", 1); await service.SetVoteASync(2, "baiGergi", 2); mockRepo.Verify(x => x.AddAsync(It.IsAny <Vote>()), Times.Exactly(2)); Assert.Equal(2, list.Count); Assert.Equal(1.5, service.GetAverageVotes(2)); }
public async Task WhenUserVotes2TimesOnly1VoteShouldBeCounted() { var list = new List <Vote>(); var mockRepo = new Mock <IRepository <Vote> >(); mockRepo.Setup(x => x.All()).Returns(list.AsQueryable()); mockRepo.Setup(x => x.AddAsync(It.IsAny <Vote>())).Callback((Vote vote) => list.Add(vote)); var service = new VotesService(mockRepo.Object); await service.SetVoteASync(1, "1", 1); await service.SetVoteASync(1, "1", 5); await service.SetVoteASync(1, "1", 5); await service.SetVoteASync(1, "1", 5); await service.SetVoteASync(1, "1", 5); Assert.Single(list); Assert.Equal(5, list.First().Value); }