Ejemplo n.º 1
0
        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
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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);
        }