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); }
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()); }
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)); }
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")); }
async Task GetData() { ViewModel = new StoryDetailsViewModel(); ViewModel.Anouncement = new Anouncement(); ViewModel.Anouncement = await _storiesServices.GetAnouncementAsync(Id); }