public void CallToggleLikeMethod_WhenParamsAreValid()
        {
            // Arrange
            var storyServiceMock   = new Mock <IStoryService>();
            var mappingServiceMock = new Mock <IMappingService>();
            var userServiceMock    = new Mock <IUserService>();
            var utilsMock          = new Mock <IUtilitiesService>();

            var controller = new StoriesController(storyServiceMock.Object, mappingServiceMock.Object, userServiceMock.Object, utilsMock.Object);

            var controllerContext = new Mock <ControllerContext>();
            var user = new Mock <IPrincipal>();

            user.Setup(p => p.IsInRole("admin")).Returns(true);
            user.SetupGet(x => x.Identity.Name).Returns("username");
            controllerContext.SetupGet(x => x.HttpContext.User).Returns(user.Object);
            controller.ControllerContext = controllerContext.Object;

            storyServiceMock.Setup(x => x.ToggleLike(It.IsAny <Guid>(), It.IsAny <string>()));
            var story = new Story();

            storyServiceMock.Setup(x => x.GetById(It.IsAny <Guid>())).Returns(story);
            var model = new StoryDetailsViewModel();

            mappingServiceMock.Setup(x => x.Map <StoryDetailsViewModel>(story)).Returns(model);

            // Act
            controller.LikeStory(Guid.NewGuid());

            // Assert
            storyServiceMock.Verify(x => x.ToggleLike(It.IsAny <Guid>(), It.IsAny <string>()), Times.Once);
        }
        public void ReturnPartialViewWithRespectiveModel_WhenParamsAreValid()
        {
            // Arrange
            var storyServiceMock   = new Mock <IStoryService>();
            var mappingServiceMock = new Mock <IMappingService>();
            var userServiceMock    = new Mock <IUserService>();
            var utilsMock          = new Mock <IUtilitiesService>();

            var controller = new StoriesController(storyServiceMock.Object, mappingServiceMock.Object, userServiceMock.Object, utilsMock.Object);

            var controllerContext = new Mock <ControllerContext>();
            var user = new Mock <IPrincipal>();

            user.Setup(p => p.IsInRole("admin")).Returns(true);
            user.SetupGet(x => x.Identity.Name).Returns("username");
            controllerContext.SetupGet(x => x.HttpContext.User).Returns(user.Object);
            controller.ControllerContext = controllerContext.Object;

            storyServiceMock.Setup(x => x.ToggleLike(It.IsAny <Guid>(), It.IsAny <string>()));
            var story = new Story();

            storyServiceMock.Setup(x => x.GetById(It.IsAny <Guid>())).Returns(story);
            var model = new StoryDetailsViewModel();

            mappingServiceMock.Setup(x => x.Map <StoryDetailsViewModel>(story)).Returns(model);

            // Act & Assert
            controller.WithCallTo(x => x.LikeStory(Guid.NewGuid()))
            .ShouldRenderPartialView("_UnlikeButtonStoryPartial")
            .WithModel <StoryDetailsViewModel>(x => x == model);
        }
Exemplo n.º 3
0
        public ActionResult Details(Guid id)
        {
            var story = storyService.GetById(id);
            IEnumerable <string> imageUrls = null;

            if (story.ImageUrls != null && story.ImageUrls.Count > 0)
            {
                imageUrls = story.ImageUrls.Select(i => i.Url);
            }

            IEnumerable <CommentViewModel> storyComments = null;

            if (story.Comments != null && story.Comments.Count > 0)
            {
                storyComments = story.Comments
                                .Where(c => c.IsDeleted == false)
                                .OrderBy(c => c.PublishDate)
                                .Select(
                    c => new CommentViewModel()
                {
                    UserFullName = c.UserId == null ? null : c.User.FirstName + " " + c.User.LastName,
                    UserId       = c.UserId,
                    Comment      = c.Content,
                    PublishDate  = c.PublishDate
                });
            }

            string starLinkClass = "fa-star-o";

            if (this.User.Identity.IsAuthenticated && this.storyService.HasUserStarred(id, this.User.Identity.GetUserId()))
            {
                starLinkClass = "fa-star";
            }

            if (story != null)
            {
                var viewModel = new StoryDetailsViewModel()
                {
                    Id                  = story.Id,
                    Title               = story.Title,
                    Content             = story.Content,
                    UserFullName        = story.User.FirstName + " " + story.User.LastName,
                    UserId              = story.UserId,
                    MainImageUrl        = story.MainImageUrl,
                    PublishDate         = story.PublishDate,
                    ImageUrls           = imageUrls,
                    NumberOfStars       = story.Stars.Count,
                    StarLinkClass       = starLinkClass,
                    Comments            = storyComments,
                    IsUserAllowedToEdit = this.User.Identity.GetUserId() == story.UserId
                };
                return(View(viewModel));
            }

            return(new HttpNotFoundResult());
        }
Exemplo n.º 4
0
        public void ThrowInvalidOperationException_WhenModelStateIsInvalid()
        {
            // Arrange
            var storyServiceMock   = new Mock <IStoryService>();
            var mappingServiceMock = new Mock <IMappingService>();
            var userServiceMock    = new Mock <IUserService>();
            var utilsMock          = new Mock <IUtilitiesService>();

            var controller = new StoriesController(storyServiceMock.Object, mappingServiceMock.Object, userServiceMock.Object, utilsMock.Object);

            var model = new StoryDetailsViewModel();

            controller.ViewData.ModelState.AddModelError("asdasda", "asdasdas");

            // Act & Assert
            Assert.Throws <InvalidOperationException>(() => controller.Comment(model, Guid.NewGuid()));
        }
        public ActionResult Comment(StoryDetailsViewModel model, Guid?itemId)
        {
            if (!this.ModelState.IsValid)
            {
                throw new InvalidOperationException();
            }

            var userId = this.User.Identity.GetUserId();

            this.storyService.AddComment((Guid)itemId, userId, model.NewCommentContent);

            var story = this.storyService.GetById((Guid)itemId);

            model = this.mappingService.Map <StoryDetailsViewModel>(story);
            model.ProfilePicSize = AppConstants.StoriesProfilePicSize;
            var user = this.userService.GetById(userId);

            model.CurrentUser = user;

            return(this.PartialView("_CommentBoxPartial", model));
        }
Exemplo n.º 6
0
        public void RenderDetailsView_OnSuccessfulEdit()
        {
            // Arrange
            var storyServiceMock   = new Mock <IStoryService>();
            var mappingServiceMock = new Mock <IMappingService>();
            var userServiceMock    = new Mock <IUserService>();
            var utilsMock          = new Mock <IUtilitiesService>();

            var controller = new StoriesController(storyServiceMock.Object, mappingServiceMock.Object, userServiceMock.Object, utilsMock.Object);

            var story = new Story();

            storyServiceMock.Setup(x => x.GetById(It.IsAny <Guid>())).Returns(story);

            var viewModel = new StoryDetailsViewModel();

            mappingServiceMock.Setup(x => x.Map <StoryDetailsViewModel>(story)).Returns(viewModel);

            var controllerContext = new Mock <ControllerContext>();
            var user = new Mock <IPrincipal>();

            user.Setup(p => p.IsInRole("admin")).Returns(true);
            user.SetupGet(x => x.Identity.Name).Returns("username");
            controllerContext.SetupGet(x => x.HttpContext.User).Returns(user.Object);
            controller.ControllerContext = controllerContext.Object;

            var userModel = new User();

            userServiceMock.Setup(x => x.GetById(It.IsAny <string>())).Returns(userModel);

            storyServiceMock.Setup(x => x.IsStoryLiked(It.IsAny <Guid>(), It.IsAny <string>())).Returns(true);

            var model = new CreateEditStoryViewModel();

            // Act & Assert
            controller.WithCallTo(x => x.EditStory(model))
            .ShouldRenderView("Details")
            .WithModel <StoryDetailsViewModel>(x => x == viewModel);
        }
        public ActionResult Details(int id)
        {
            var story = storyService.GetDetails(id);

            if (story != null)
            {
                var model = new StoryDetailsViewModel
                {
                    Id          = story.Id,
                    Title       = story.Title,
                    Description = story.Description,
                    Content     = story.Content,
                    PostedOn    = story.PostedOn,
                    IsEditable  = story.CreatorId == CurrentUserId,
                    Creator     = new UserViewModel
                    {
                        Id   = story.Creator.Id,
                        Name = story.Creator.Name
                    },
                    Groups = story.Groups.Select(s => new GroupViewModel
                    {
                        Id          = s.Id,
                        Name        = s.Name,
                        Description = s.Description
                    }).ToArray()
                };

                return(View(model));
            }
            else
            {
                ModelState.AddModelError("", "Story was not found");
            }

            return(RedirectToAction("Index", "Story"));
        }
Exemplo n.º 8
0
 async Task GetData()
 {
     ViewModel             = new StoryDetailsViewModel();
     ViewModel.Anouncement = new Anouncement();
     ViewModel.Anouncement = await _storiesServices.GetAnouncementAsync(Id);
 }