コード例 #1
0
        public async Task Create_Review_WithWrongCategoryApi()
        {
            var options     = Utils.GetOptions(nameof(Create_Review_WithWrongCategoryApi));
            var userStore   = new Mock <IUserStore <User> >();
            var userManager = new Mock <UserManager <User> >(userStore.Object, null, null, null,
                                                             null, null, null, null, null);
            var contextAccessor      = new Mock <IHttpContextAccessor>();
            var userPrincipalFactory = new Mock <IUserClaimsPrincipalFactory <User> >().Object;
            var signManager          = new Mock <SignInManager <User> >(userManager.Object, contextAccessor.Object, userPrincipalFactory, null, null, null, null).Object;
            var context = new Mock <HttpContext>();

            contextAccessor.Setup(x => x.HttpContext).Returns(context.Object);
            var userService  = new Mock <IUserService>();
            var photoService = new Mock <IPhotoService>();

            var newReviewDTO = new Mock <NewReviewDTO>().Object;

            newReviewDTO.PhotoId       = Guid.Parse("e165b91f-03bf-414e-88b7-c51b87775683");
            newReviewDTO.Comment       = "new comment";
            newReviewDTO.Score         = 5;
            newReviewDTO.WrongCategory = true;

            using (var arrContext = new PhotoContestContext(options))
            {
                await arrContext.Contests.AddRangeAsync(Utils.SeedContests());

                await arrContext.Ranks.AddRangeAsync(Utils.SeedRanks());

                await arrContext.Categories.AddRangeAsync(Utils.SeedCategories());

                await arrContext.Statuses.AddRangeAsync(Utils.SeedStatuses());

                await arrContext.Photos.AddRangeAsync(Utils.SeedPhotos());

                await arrContext.Juries.AddRangeAsync(Utils.SeedJuries());

                await arrContext.Users.AddRangeAsync(Utils.SeedUsers());

                await arrContext.SaveChangesAsync();
            };
            using (var actContext = new PhotoContestContext(options))
            {
                var userToGet = await actContext.Users.Include(u => u.Rank).Skip(1).FirstAsync();

                var claims = new List <Claim>()
                {
                    new Claim(ClaimTypes.NameIdentifier, userToGet.UserName.ToString()),
                };
                var identity        = new ClaimsIdentity(claims);
                var claimsPrincipal = new ClaimsPrincipal(identity);
                contextAccessor.Setup(x => x.HttpContext.User).Returns(claimsPrincipal);
                userService.Setup(x => x.GetUserByUsernameAsync(It.IsAny <string>())).Returns(Task.FromResult(userToGet));
                var photo = await actContext.Photos
                            .Include(p => p.User)
                            .Include(p => p.Contest)
                            .ThenInclude(p => p.Category)
                            .Include(p => p.Contest)
                            .ThenInclude(c => c.Status)
                            .Where(p => p.IsDeleted == false)
                            .FirstOrDefaultAsync(p => p.Id == Guid.Parse("e165b91f-03bf-414e-88b7-c51b87775683"));

                photoService.Setup(x => x.FindPhotoAsync(It.IsAny <Guid>())).Returns(Task.FromResult(photo));

                var sut    = new ReviewService(actContext, photoService.Object, userService.Object, contextAccessor.Object, userManager.Object, signManager);
                var result = await sut.CreateApiAsync(newReviewDTO);

                Assert.AreEqual("Photo is in a wrong category.", result.Comment);
                Assert.AreEqual(0, result.Score);
                Assert.AreEqual(userToGet.FirstName + " " + userToGet.LastName, result.Evaluator);
                Assert.AreEqual(photo.Title, result.PhotoTitle);
            }
        }
コード例 #2
0
        public async Task Throw_When_ContestIsInvalidPhaseApi()
        {
            var options     = Utils.GetOptions(nameof(Throw_When_ContestIsInvalidPhaseApi));
            var userStore   = new Mock <IUserStore <User> >();
            var userManager = new Mock <UserManager <User> >(userStore.Object, null, null, null,
                                                             null, null, null, null, null);
            var contextAccessor      = new Mock <IHttpContextAccessor>();
            var userPrincipalFactory = new Mock <IUserClaimsPrincipalFactory <User> >().Object;
            var signManager          = new Mock <SignInManager <User> >(userManager.Object, contextAccessor.Object, userPrincipalFactory, null, null, null, null).Object;
            var context = new Mock <HttpContext>();

            contextAccessor.Setup(x => x.HttpContext).Returns(context.Object);
            var userService  = new Mock <IUserService>();
            var photoService = new Mock <IPhotoService>();

            var newReviewDTO = new Mock <NewReviewDTO>().Object;

            newReviewDTO.PhotoId       = Guid.Parse("94499cdd-e18c-4743-b0c4-2e1b7564c46c");
            newReviewDTO.Comment       = "new comment";
            newReviewDTO.Score         = 5;
            newReviewDTO.WrongCategory = false;

            using (var arrContext = new PhotoContestContext(options))
            {
                await arrContext.Contests.AddRangeAsync(Utils.SeedContests());

                await arrContext.Ranks.AddRangeAsync(Utils.SeedRanks());

                await arrContext.Categories.AddRangeAsync(Utils.SeedCategories());

                await arrContext.Statuses.AddRangeAsync(Utils.SeedStatuses());

                await arrContext.Photos.AddRangeAsync(Utils.SeedPhotos());

                await arrContext.Juries.AddRangeAsync(Utils.SeedJuries());

                await arrContext.Users.AddRangeAsync(Utils.SeedUsers());

                await arrContext.SaveChangesAsync();
            };
            using (var actContext = new PhotoContestContext(options))
            {
                var userToGet = await actContext.Users.Include(u => u.Rank).Skip(1).FirstAsync();

                var claims = new List <Claim>()
                {
                    new Claim(ClaimTypes.NameIdentifier, userToGet.UserName.ToString()),
                };
                var identity        = new ClaimsIdentity(claims);
                var claimsPrincipal = new ClaimsPrincipal(identity);
                contextAccessor.Setup(x => x.HttpContext.User).Returns(claimsPrincipal);
                userService.Setup(x => x.GetUserByUsernameAsync(It.IsAny <string>())).Returns(Task.FromResult(userToGet));
                var photo = await actContext.Photos
                            .Include(p => p.User)
                            .Include(p => p.Contest)
                            .ThenInclude(p => p.Category)
                            .Include(p => p.Contest)
                            .ThenInclude(c => c.Status)
                            .Where(p => p.IsDeleted == false)
                            .FirstOrDefaultAsync(p => p.Id == Guid.Parse("94499cdd-e18c-4743-b0c4-2e1b7564c46c"));

                photoService.Setup(x => x.FindPhotoAsync(It.IsAny <Guid>())).Returns(Task.FromResult(photo));

                var sut = new ReviewService(actContext, photoService.Object, userService.Object, contextAccessor.Object, userManager.Object, signManager);
                await Assert.ThrowsExceptionAsync <ArgumentException>(() => sut.CreateApiAsync(newReviewDTO));
            }
        }