Ejemplo n.º 1
0
        public async Task WithCorrectModel_ShouldReturnTrue()
        {
            var unitOfWork = this.GetRedditCloneUnitOfWork();
            var model      = new SubredditCreationBindingModel();

            var result = await this.CallCreateSubredditAsync(unitOfWork, model);

            Assert.True(result);
        }
Ejemplo n.º 2
0
        private async Task <bool> CallCreateSubredditAsync(
            IRedditCloneUnitOfWork unitOfWork,
            SubredditCreationBindingModel model)
        {
            var mockedUserManager     = CommonTestMethods.GetMockedUserManager();
            var mockedClaimsPrincipal = new Mock <ClaimsPrincipal>();

            var service = this.GetService(unitOfWork, mockedUserManager.Object);
            var result  = await service.CreateSubredditAsync(model, mockedClaimsPrincipal.Object);

            return(result);
        }
Ejemplo n.º 3
0
        public async Task WithModelAndUserWithId_ShouldCreateNewSubredditWithCorrectAuthorId()
        {
            var unitOfWork = this.GetRedditCloneUnitOfWork();
            var dbUser     = new User();

            unitOfWork.Users.Add(dbUser);
            unitOfWork.Complete();
            var model = new SubredditCreationBindingModel();

            await this.CallCreateSubredditAsyncWithUser(unitOfWork, model, dbUser.Id);

            var dbSubreddits = await unitOfWork.Subreddits.FindAsync(s => s.AuthorId == dbUser.Id);

            var dbFirstSubreddit = dbSubreddits.First();
            var modelAuthorId    = dbFirstSubreddit.AuthorId;

            Assert.Equal(dbUser.Id, modelAuthorId);
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Create(SubredditCreationBindingModel model)
        {
            if (ModelState.IsValid == false)
            {
                this.AddStatusMessage(ModelState);
                return(this.Redirect("/"));
            }

            var result = await this.userSubredditService.CreateSubredditAsync(model, this.User);

            if (result == false)
            {
                this.AddStatusMessage(AlertConstants.ErrorMessageSubredditNameTaken, AlertConstants.AlertTypeDanger);
                return(this.RedirectToAction("Create"));
            }

            this.AddStatusMessage(AlertConstants.MessageSubredditCreated, AlertConstants.AlertTypeSuccess);
            return(this.Redirect("/"));
        }
Ejemplo n.º 5
0
        public async Task <bool> CreateSubredditAsync(SubredditCreationBindingModel model, ClaimsPrincipal user)
        {
            var subredditsWithName = await this.redditCloneUnitOfWork.Subreddits.FindAsync(s => s.Name == model.Name);

            if (subredditsWithName.Count() > 0)
            {
                return(false);
            }

            var dbSubreddit = this.mapper.Map <Subreddit>(model);
            var dbUserId    = this.userManager.GetUserId(user);

            dbSubreddit.AuthorId = dbUserId;

            this.redditCloneUnitOfWork.Subreddits.Add(dbSubreddit);
            int rowsAffected = await this.redditCloneUnitOfWork.CompleteAsync();

            return(UnitOfWorkValidator.IsUnitOfWorkCompletedSuccessfully(rowsAffected));
        }
Ejemplo n.º 6
0
        public async Task WithModelWithAlreadyExistingName_ShouldReturnFalse()
        {
            const string subredditName = "SubredditName";

            var unitOfWork  = this.GetRedditCloneUnitOfWork();
            var dbSubreddit = new Subreddit()
            {
                Name = subredditName
            };

            unitOfWork.Subreddits.Add(dbSubreddit);
            unitOfWork.Complete();
            var model = new SubredditCreationBindingModel()
            {
                Name = subredditName
            };

            var result = await this.CallCreateSubredditAsync(unitOfWork, model);

            Assert.False(result);
        }
Ejemplo n.º 7
0
        public IActionResult Create()
        {
            var model = new SubredditCreationBindingModel();

            return(View(model));
        }