public void TestsTakeAndDeleteUser()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var repository =
                new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options.Options));
            var studentEfRepository =
                new EfRepository <StudentJob>(new ApplicationDbContext(options.Options));
            var userSkillRepository =
                new EfRepository <UsersSkill>(new ApplicationDbContext(options.Options));
            var jobRepository =
                new EfDeletableEntityRepository <Job>(new ApplicationDbContext(options.Options));
            var jobService      = new JobsService(jobRepository, studentEfRepository);
            var skillRepository =
                new EfDeletableEntityRepository <Skill>(new ApplicationDbContext(options.Options));
            var skillService = new SkillsService(skillRepository, userSkillRepository);
            var usersService = new ApplicationUsersService(repository, jobService, studentEfRepository, jobRepository,
                                                           skillService, userSkillRepository, skillRepository);
            var user = new ApplicationUser
            {
                Description = "test",
                Type        = UserType.Employer,
            };

            repository.AddAsync(user).GetAwaiter().GetResult();
            repository.SaveChangesAsync().GetAwaiter().GetResult();
            AutoMapperConfig.RegisterMappings(typeof(CompaniesServiceTests.MyTest).Assembly);
            usersService.DeleteAsync(user.Id).GetAwaiter().GetResult();
            Assert.Empty(repository.All());
            repository.Delete(user);
            repository.SaveChangesAsync().GetAwaiter().GetResult();
        }
        public void TestAddExistUserinSkill()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var repository =
                new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options.Options));
            var studentEfRepository =
                new EfRepository <StudentJob>(new ApplicationDbContext(options.Options));
            var userSkillRepository =
                new EfRepository <UsersSkill>(new ApplicationDbContext(options.Options));
            var jobRepository =
                new EfDeletableEntityRepository <Job>(new ApplicationDbContext(options.Options));
            var jobService      = new JobsService(jobRepository, studentEfRepository);
            var skillRepository =
                new EfDeletableEntityRepository <Skill>(new ApplicationDbContext(options.Options));
            var skillService = new SkillsService(skillRepository, userSkillRepository);
            var usersService = new ApplicationUsersService(repository, jobService, studentEfRepository, jobRepository, skillService, userSkillRepository, skillRepository);
            var user         = new ApplicationUser
            {
                Description = "test",
                Type        = UserType.Student,
            };
            var skill = new Skill
            {
                Name = "test",
            };

            skillRepository.AddAsync(skill).GetAwaiter().GetResult();
            skillRepository.SaveChangesAsync().GetAwaiter().GetResult();
            repository.AddAsync(user).GetAwaiter().GetResult();
            repository.SaveChangesAsync().GetAwaiter().GetResult();
            AutoMapperConfig.RegisterMappings(typeof(CompaniesServiceTests.MyTest).Assembly);
            Assert.Throws <ArgumentException>(() => usersService.AddSkillAsync(skill.Id, user.Id).GetAwaiter().GetResult());
        }
        public void TestGetCompaniesCount()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var repository =
                new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options.Options));
            var studentEfRepository =
                new EfRepository <StudentJob>(new ApplicationDbContext(options.Options));
            var userSkillRepository =
                new EfRepository <UsersSkill>(new ApplicationDbContext(options.Options));
            var jobRepository =
                new EfDeletableEntityRepository <Job>(new ApplicationDbContext(options.Options));
            var jobService      = new JobsService(jobRepository, studentEfRepository);
            var skillRepository =
                new EfDeletableEntityRepository <Skill>(new ApplicationDbContext(options.Options));
            var skillService = new SkillsService(skillRepository, userSkillRepository);
            var usersService = new ApplicationUsersService(repository, jobService, studentEfRepository, jobRepository, skillService, userSkillRepository, skillRepository);

            AutoMapperConfig.RegisterMappings(typeof(CompaniesServiceTests.MyTest).Assembly);
            var user = new ApplicationUser
            {
                FullName = "IvanIvanov",
                Email    = "test@test",
                Type     = UserType.Employer,
            };

            repository.AddAsync(user);
            repository.SaveChangesAsync();
            Assert.Equal(1, usersService.GetCompaniesCount());
            repository.Delete(user);
            repository.SaveChangesAsync();
        }
        public void GetUserSubscribtionsWorksCorrectly()
        {
            var webtoons = new List <Webtoon>();
            var webtoon  = new Webtoon()
            {
                Id       = "789",
                AuthorId = "test",
                Author   = new ApplicationUser()
                {
                    UserName = "******"
                },
                Genre = new Genre()
                {
                    Name = "action"
                },
                Title       = "work",
                TitleNumber = "123"
            };

            webtoon.Subscribers.Add(new WebtoonsSubscribers()
            {
                SubscriberId = "456",
                WebtoonId    = "789"
            });
            var episode = new Episode()
            {
                Id           = "012",
                WebtoonId    = "789",
                EpisodeLikes = new List <EpisodeLike>(),
            };

            episode.EpisodeLikes.Add(new EpisodeLike()
            {
                EpisodeId         = "012",
                ApplicationUserId = "ivan",
                HasLiked          = true
            });
            webtoon.Episodes.Add(episode);
            webtoons.Add(webtoon);
            var mockWebtoonsRepo = new Mock <IWebtoonsRepository>();

            mockWebtoonsRepo.Setup(x => x.All()).Returns(webtoons.AsQueryable());
            var mockEpisodesRepo = new Mock <IEpisodesRepository>();

            mockEpisodesRepo.Setup(x => x.GetEpisodesByWebtoonId("789")).Returns(webtoon.Episodes);
            var mockEpisodeLikesService = new Mock <IEpisodesLikesService>();

            mockEpisodeLikesService.Setup(x => x.GetEpisodeLikes("012")).Returns(episode.EpisodeLikes.Sum(x => x.HasLiked ? 1 : 0));

            var service = new ApplicationUsersService(mockWebtoonsRepo.Object, null, null, null, mockEpisodeLikesService.Object, mockEpisodesRepo.Object);

            var result = service.GetUserSubscribtions("456");

            Assert.Equal("pesho", result.First().Author);
            Assert.Equal(1, result.First().Episodes.Count);
            Assert.Equal("action", result.First().Genre);
            Assert.Equal("work", result.First().Title);
            Assert.Equal("123", result.First().TitleNumber);
            Assert.Equal(1, result.First().Likes);
        }
        public void GetNewUsersCountShouldReturnCorrectNumber()
        {
            var repository = GetMockedRepository();

            var service = new ApplicationUsersService(repository.Object);

            Assert.Equal(2, service.GetNewUsersCount());
            repository.Verify(x => x.AllAsNoTracking(), Times.Once);
        }
        public void GetUserReviewsWorksCorrectly()
        {
            var reviews  = new List <Review>();
            var dateTime = new DateTime(1994, 01, 01);
            var review   = new Review()
            {
                Id             = "012",
                ReviewAuthorId = "gosho",
                ReviewNumber   = "123",
                ReviewInfo     = "work",
                CreatedOn      = dateTime,
                WebtoonId      = "456",
                Webtoon        = new Webtoon()
                {
                    Title       = "test",
                    TitleNumber = "789"
                },
                ReviewVotes = new List <ReviewVote>()
            };
            var reviewVote = new ReviewVote()
            {
                ApplicationUserId = "ivan",
                ReviewId          = "012",
                Vote = MyWebtoonWebProject.Data.Models.Enums.VoteType.UpVote
            };

            review.ReviewVotes.Add(reviewVote);
            reviews.Add(review);
            var mockReviewRepo = new Mock <IReviewsRepository>();

            mockReviewRepo.Setup(x => x.All()).Returns(reviews.AsQueryable());

            var service = new ApplicationUsersService(null, mockReviewRepo.Object, null, null, null, null);

            var result = service.GetUserReviews("gosho");

            Assert.Equal(new DateTime(1994, 01, 01), result.First().CreatedOn);
            Assert.Equal(0, result.First().Dislikes);
            Assert.Equal(1, result.First().Likes);
            Assert.Equal("gosho", result.First().ReviewAuthorId);
            Assert.Equal("123", result.First().ReviewNumber);
            Assert.Equal("789", result.First().WebtoonTitleNumber);
            Assert.Equal("test", result.First().WebtoonTitle);
            Assert.Equal("work", result.First().ReviewInfo);
        }
        public void DeleteSkill()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var repository =
                new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options.Options));
            var studentEfRepository =
                new EfRepository <StudentJob>(new ApplicationDbContext(options.Options));
            var userSkillRepository =
                new EfRepository <UsersSkill>(new ApplicationDbContext(options.Options));
            var jobRepository =
                new EfDeletableEntityRepository <Job>(new ApplicationDbContext(options.Options));
            var jobService      = new JobsService(jobRepository, studentEfRepository);
            var skillRepository =
                new EfDeletableEntityRepository <Skill>(new ApplicationDbContext(options.Options));
            var skillService = new SkillsService(skillRepository, userSkillRepository);
            var usersService = new ApplicationUsersService(repository, jobService, studentEfRepository, jobRepository, skillService, userSkillRepository, skillRepository);
            var user         = new ApplicationUser
            {
                FullName = "Gosho"
            };

            var skill = new Skill
            {
                Name = "C#",
            };

            var userSkill = new UsersSkill
            {
                SkillId           = skill.Id,
                ApplicationUserId = user.Id,
            };

            repository.AddAsync(user).GetAwaiter().GetResult();
            repository.SaveChangesAsync().GetAwaiter().GetResult();
            skillRepository.AddAsync(skill).GetAwaiter().GetResult();
            skillRepository.SaveChangesAsync().GetAwaiter().GetResult();
            userSkillRepository.AddAsync(userSkill).GetAwaiter().GetResult();
            userSkillRepository.SaveChangesAsync();
            userSkillRepository.Delete(userSkill);
            skillService.DeleteAsync(skill.Id, user.Id).GetAwaiter().GetResult();
            Assert.Equal(1, skillRepository.All().Count());
        }
        public void TestNoUsers()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var repository =
                new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options.Options));
            var studentEfRepository =
                new EfRepository <StudentJob>(new ApplicationDbContext(options.Options));
            var userSkillRepository =
                new EfRepository <UsersSkill>(new ApplicationDbContext(options.Options));
            var jobRepository =
                new EfDeletableEntityRepository <Job>(new ApplicationDbContext(options.Options));
            var jobService      = new JobsService(jobRepository, studentEfRepository);
            var skillRepository =
                new EfDeletableEntityRepository <Skill>(new ApplicationDbContext(options.Options));
            var skillService = new SkillsService(skillRepository, userSkillRepository);
            var usersService = new ApplicationUsersService(repository, jobService, studentEfRepository, jobRepository, skillService, userSkillRepository, skillRepository);

            AutoMapperConfig.RegisterMappings(typeof(CompaniesServiceTests.MyTest).Assembly);
            Assert.Empty(usersService.GetAll <CompaniesServiceTests.MyTest>());
        }
 public ApplicationUserController(ApplicationUsersService service)
 {
     _service = service;
 }
        public void GetUserCommentsWorksCorrectly()
        {
            var comments = new List <Comment>();
            var comment  = new Comment()
            {
                CommentAuthorId = "gosho",
                CommentInfo     = "test",
                CommentNumber   = "123",
                Id        = "456",
                CreatedOn = new DateTime(1994, 01, 01),
                Episode   = new Episode()
                {
                    EpisodeNumber = "789",
                    Webtoon       = new Webtoon()
                    {
                        Title       = "works",
                        TitleNumber = "012",
                    }
                },
                CommentVotes = new List <CommentVote>(),
            };
            var commentVote = new CommentVote()
            {
                CommentId         = "456",
                ApplicationUserId = "ivan",
                Vote = MyWebtoonWebProject.Data.Models.Enums.VoteType.UpVote
            };
            var secondCommentVote = new CommentVote()
            {
                CommentId         = "456",
                ApplicationUserId = "pesho",
                Vote = MyWebtoonWebProject.Data.Models.Enums.VoteType.DownVote
            };

            comment.CommentVotes.Add(commentVote);
            comment.CommentVotes.Add(secondCommentVote);
            comments.Add(comment);
            var mockCommentsRepo = new Mock <ICommentsRepository>();

            mockCommentsRepo.Setup(x => x.All()).Returns(comments.AsQueryable());
            var mockCommentsVote = new Mock <ICommentsVotesRepository>();
            var commentVotes     = new List <CommentVote>();

            commentVotes.Add(commentVote);
            commentVotes.Add(secondCommentVote);

            var service = new ApplicationUsersService(null, null, mockCommentsRepo.Object, mockCommentsVote.Object, null, null);

            var result = service.GetUserComments("gosho");

            Assert.Equal("gosho", result.First().CommentAuthorId);
            Assert.Equal("456", result.First().CommentId);
            Assert.Equal("test", result.First().CommentInfo);
            Assert.Equal("123", result.First().CommentNumber);
            Assert.Equal(2, result.First().CommentVotes.Count);
            Assert.Equal(new DateTime(1994, 01, 01), result.First().CreatedOn);
            Assert.Equal(1, result.First().Likes);
            Assert.Equal(1, result.First().Dislikes);
            Assert.Equal("789", result.First().EpisodeNumber);
            Assert.Equal("works", result.First().WebtoonTitle);
            Assert.Equal("012", result.First().WebtoonTitleNumber);
        }