public async Task When2UsersVoteForTheSameRecipeTheAverageVoteShouldBeCorrect() { var votesList = new List <Vote>(); var mockRepo = new Mock <IRepository <Vote> >(); mockRepo.Setup(method => method.All()) .Returns(votesList.AsQueryable()); mockRepo.Setup(m => m.AddAsync(It.IsAny <Vote>())) .Callback((Vote vote) => votesList.Add(vote)); var service = new VotesService(mockRepo.Object); await service.SetVoteAsync(2, "Niki", 5); await service.SetVoteAsync(2, "Pesho", 1); await service.SetVoteAsync(2, "Niki", 2); // mockRepo.Verify(m => m.All(), Times.Exactly(3)); // Можем да проверим колко пъти е извикан даден метод. В случая, дали метода All() е извикан точно три пъти. mockRepo.Verify(m => m.AddAsync(It.IsAny <Vote>()), Times.Exactly(2)); Assert.Equal(2, votesList.Count()); Assert.Equal(1.5, service.GetAverageVotes(2)); }
public async Task When2UsersVoteForTheSameRecipeTheAverageVoteShouldBeCorrect() { 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, "Niki", 5); await service.SetVoteAsync(2, "Pesho", 1); await service.SetVoteAsync(2, "Niki", 2); mockRepo.Verify(x => x.AddAsync(It.IsAny <Vote>()), Times.Exactly(2)); Assert.Equal(2, list.Count); Assert.Equal(1.5, service.GetAverageVotes(2)); // TODO: Only 1 vote; // TODO: if vote is 5 }
public async Task GetAverageVotesShouldReturnCorrectValue() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options; var dbContext = new ApplicationDbContext(options); var repository = new EfRepository <Vote>(dbContext); var clientRepository = new EfDeletableEntityRepository <Client>(dbContext); var workoutslistRepository = new EfDeletableEntityRepository <WorkoutsList>(dbContext); var clientsService = new ClientsService(clientRepository, workoutslistRepository); var service = new VotesService(repository, clientsService); var vote1 = new Vote() { Id = 1, CoachId = "id", Value = 4, }; var vote2 = new Vote() { Id = 2, CoachId = "id", Value = 2, }; var vote3 = new Vote() { Id = 3, CoachId = "id", Value = 5, }; var vote4 = new Vote() { Id = 4, CoachId = "id2", Value = 4, }; dbContext.Add(vote1); dbContext.Add(vote2); dbContext.Add(vote3); dbContext.Add(vote4); await dbContext.SaveChangesAsync(); var result = service.GetAverageVotes("id"); var resultTwo = service.GetAverageVotes("id2"); Assert.Equal(3.6666666666666665, result); Assert.Equal(4, resultTwo); }
public async Task WhenTwoUsersVoteForTheSameRecipeTheAverageVoteShouldBeCorrect() { 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", 4); await service.SetVoteAsync(1, "2", 5); // Check if the method AddAsync is called exactly 2 times mockRepo.Verify(x => x.AddAsync(It.IsAny <Vote>()), Times.Exactly(2)); Assert.Equal(4.5, service.GetAverageVotes(1)); }
public async Task GetAverageVotesShouldReturnCorrectly() { ApplicationDbContext db = GetDb(); var vote = new Vote() { MealId = 1, UserId = "userId", Value = 2 }; var voteTwo = new Vote() { MealId = 1, UserId = "userId1", Value = 3 }; var voteThree = new Vote() { MealId = 1, UserId = "userId3", Value = 5 }; var voteFour = new Vote() { MealId = 2, UserId = "userId3", Value = 5 }; await db.Votes.AddAsync(vote); await db.Votes.AddAsync(voteTwo); await db.Votes.AddAsync(voteThree); await db.Votes.AddAsync(voteFour); await db.SaveChangesAsync(); var voteReposotory = new EfRepository <Vote>(db); var service = new VotesService(voteReposotory); var result = service.GetAverageVotes(1); Assert.Equal(3.3333333333333335, result); }