Exemple #1
0
        public async Task Details_WithIncorrectSupplementId_ShouldShowErrorMessageAndReturnToHomeIndex()
        {
            const int nonExistingSupplementId = int.MaxValue;
            string    errorMessage            = null;

            //Arrange
            Mock <ISupplementService> supplementService = new Mock <ISupplementService>();

            supplementService
            .Setup(s => s.IsSupplementExistingById(nonExistingSupplementId, false))
            .ReturnsAsync(false);

            Mock <ITempDataDictionary> tempData = new Mock <ITempDataDictionary>();

            tempData
            .SetupSet(t => t[TempDataErrorMessageKey] = It.IsAny <string>())
            .Callback((string key, object message) => errorMessage = message as string);

            SupplementsController supplementsController = new SupplementsController(supplementService.Object)
            {
                TempData = tempData.Object
            };

            //Act
            var result = await supplementsController.Details(nonExistingSupplementId, null, null);

            //Assert
            errorMessage.Should().Be(string.Format(EntityNotFound, SupplementEntity));

            result.Should().BeOfType <RedirectToActionResult>();

            result.As <RedirectToActionResult>().ActionName.Should().Be("Index");
            result.As <RedirectToActionResult>().ControllerName.Should().Be("Home");
        }
Exemple #2
0
        public void ReturnJsonResultWithCorrectModel_WhenGetToSupplementViewModels_Update()
        {
            //Arrange
            var supplementsService    = new Mock <ISupplementsService>();
            var dropDownListPopulator = new Mock <IDropDownListPopulator>();
            var repoUser            = new Mock <IEfGenericRepository <ApplicationUser> >();
            var supplementViewModel = DataHelper.GetAdminSupplementViewModel();
            var kendoDataRequest    = new DataSourceRequest();

            supplementsService.Setup(x => x.Update(It.IsAny <Supplement>())).Verifiable();

            var controller = new SupplementsController(supplementsService.Object, dropDownListPopulator.Object, repoUser.Object);

            //Act
            var     controllerResult = controller.SupplementViewModels_Update(kendoDataRequest, supplementViewModel);
            var     jsonResult       = controllerResult as JsonResult;
            dynamic kendoResultData  = jsonResult.Data;
            var     results          = kendoResultData.Data as IEnumerable <SupplementViewModel>;

            //Assert
            Assert.AreEqual(supplementViewModel, results.FirstOrDefault());
            Assert.AreEqual(supplementViewModel.Id, results.FirstOrDefault().Id);
            Assert.AreEqual(supplementViewModel.Name, results.FirstOrDefault().Name);
            Assert.AreEqual(supplementViewModel.ImageUrl, results.FirstOrDefault().ImageUrl);
            Assert.AreEqual(supplementViewModel.Ingredients, results.FirstOrDefault().Ingredients);
            Assert.AreEqual(supplementViewModel.Use, results.FirstOrDefault().Use);
            Assert.AreEqual(supplementViewModel.Description, results.FirstOrDefault().Description);
        }
Exemple #3
0
        public async Task Details_WithCorrectSupplementIdAndPageBiggerThanTotalPages_ShouldReturnToDetails()
        {
            const int page          = 10;
            const int totalElements = 10;

            //Arrange
            Mock <IModeratorSupplementService> moderatorSupplementService = new Mock <IModeratorSupplementService>();

            moderatorSupplementService
            .Setup(m => m.GetDetailsWithDeletedCommentsByIdAsync(supplementId, page))
            .ReturnsAsync(new SupplementDetailsWithDeletedCommentsServiceModel());

            Mock <ISupplementService> supplementService = new Mock <ISupplementService>();

            supplementService
            .Setup(s => s.IsSupplementExistingById(supplementId, false))
            .ReturnsAsync(true);
            supplementService
            .Setup(s => s.TotalCommentsAsync(supplementId, true))
            .ReturnsAsync(totalElements);

            SupplementsController supplementsController = new SupplementsController(moderatorSupplementService.Object, supplementService.Object);

            //Act
            var result = await supplementsController.Details(supplementId, supplementName, null, page);

            //Assert
            result.Should().BeOfType <RedirectToActionResult>();

            result.As <RedirectToActionResult>().ActionName.Should().Be("Details");
            result.As <RedirectToActionResult>().RouteValues.Keys.Should().Contain("id");
            result.As <RedirectToActionResult>().RouteValues.Values.Should().Contain(supplementId);
            result.As <RedirectToActionResult>().RouteValues.Keys.Should().Contain("name");
            result.As <RedirectToActionResult>().RouteValues.Values.Should().Contain(supplementName);
        }
        public void ReturnCorrectModelType_WhenGetToAll()
        {
            //Arrange
            var supplementsService    = new Mock <ISupplementsService>();
            var dropDownListPopulator = new Mock <IDropDownListPopulator>();
            var repoUser = new Mock <IEfGenericRepository <ApplicationUser> >();

            var controller = new SupplementsController(supplementsService.Object, dropDownListPopulator.Object, repoUser.Object);

            //Act & Assert
            controller.WithCallTo(c => c.Add()).ShouldRenderView("Add").WithModel <AddSupplementViewModel>();
        }
        public void RunDefaultView_WhenGetToAdd()
        {
            //Arrange
            var supplementsService    = new Mock <ISupplementsService>();
            var dropDownListPopulator = new Mock <IDropDownListPopulator>();
            var repoUser = new Mock <IEfGenericRepository <ApplicationUser> >();

            var controller = new SupplementsController(supplementsService.Object, dropDownListPopulator.Object, repoUser.Object);

            //Act & Assert
            controller.WithCallTo(c => c.Add()).ShouldRenderDefaultView();
        }
Exemple #6
0
        public void ReturnsAnInstance_WhenParameteraAreNotNull()
        {
            // Arrange
            var supplementsService    = new Mock <ISupplementsService>();
            var dropDownListPopulator = new Mock <IDropDownListPopulator>();
            var repoUser = new Mock <IEfGenericRepository <ApplicationUser> >();

            // Act
            var controller = new SupplementsController(supplementsService.Object, dropDownListPopulator.Object, repoUser.Object);

            // Assert
            Assert.IsInstanceOf <SupplementsController>(controller);
        }
Exemple #7
0
        public void ReturnJsonResult_WhenGetToSupplementViewModels_Update()
        {
            //Arrange
            var supplementsService    = new Mock <ISupplementsService>();
            var dropDownListPopulator = new Mock <IDropDownListPopulator>();
            var repoUser            = new Mock <IEfGenericRepository <ApplicationUser> >();
            var supplementViewModel = DataHelper.GetAdminSupplementViewModel();
            var kendoDataRequest    = new DataSourceRequest();

            supplementsService.Setup(x => x.Update(It.IsAny <Supplement>())).Verifiable();

            var controller = new SupplementsController(supplementsService.Object, dropDownListPopulator.Object, repoUser.Object);

            //Act & Assert
            controller.WithCallTo(c => c.SupplementViewModels_Update(kendoDataRequest, supplementViewModel)).ShouldReturnJson();
        }
Exemple #8
0
        public void ReturnJsonResult_WhenGetToSupplementViewModels_Read()
        {
            //Arrange
            var supplementsService    = new Mock <ISupplementsService>();
            var dropDownListPopulator = new Mock <IDropDownListPopulator>();
            var repoUser         = new Mock <IEfGenericRepository <ApplicationUser> >();
            var supplements      = DataHelper.GetSupplements();
            var kendoDataRequest = new DataSourceRequest();

            supplementsService.Setup(x => x.GetAll()).Returns(supplements);

            var controller = new SupplementsController(supplementsService.Object, dropDownListPopulator.Object, repoUser.Object);

            //Act & Assert
            controller.WithCallTo(c => c.SupplementViewModels_Read(kendoDataRequest)).ShouldReturnJson();
        }
        public void SetUp()
        {
            unitOfWork = new Mock <IUnitOfWork>();
            Mapper.Initialize(c => c.AddProfile <MappingProfile>());

            var request = new HttpRequestMessage()
            {
                RequestUri = new Uri("http://localhost:5000/Supplement/New", UriKind.Absolute)
            };
            var controllerContext = new HttpControllerContext
            {
                Request = request
            };

            controller = new SupplementsController(unitOfWork.Object)
            {
                ControllerContext = controllerContext
            };
        }
Exemple #10
0
        public void ReturnJsonResultWithCorrectModelInstance_WhenGetToSupplementViewModels_Update()
        {
            //Arrange
            var supplementsService    = new Mock <ISupplementsService>();
            var dropDownListPopulator = new Mock <IDropDownListPopulator>();
            var repoUser            = new Mock <IEfGenericRepository <ApplicationUser> >();
            var supplementViewModel = DataHelper.GetAdminSupplementViewModel();
            var kendoDataRequest    = new DataSourceRequest();

            supplementsService.Setup(x => x.Update(It.IsAny <Supplement>())).Verifiable();

            var controller = new SupplementsController(supplementsService.Object, dropDownListPopulator.Object, repoUser.Object);

            //Act
            var     controllerResult = controller.SupplementViewModels_Update(kendoDataRequest, supplementViewModel);
            var     jsonResult       = controllerResult as JsonResult;
            dynamic kendoResultData  = jsonResult.Data;
            var     results          = kendoResultData.Data as IEnumerable <SupplementViewModel>;

            //Assert
            Assert.IsInstanceOf <IEnumerable <SupplementViewModel> >(results);
        }
Exemple #11
0
        public async Task Details_WithCorrectSupplementIdAndPageLessThanOneOrEqualToZero_ShouldReturnToDetails(int page)
        {
            //Arrange
            Mock <ISupplementService> supplementService = new Mock <ISupplementService>();

            supplementService
            .Setup(s => s.IsSupplementExistingById(supplementId, false))
            .ReturnsAsync(true);

            SupplementsController supplementsController = new SupplementsController(supplementService.Object);

            //Act
            var result = await supplementsController.Details(supplementId, supplementName, null, page);

            //Assert
            result.Should().BeOfType <RedirectToActionResult>();

            result.As <RedirectToActionResult>().ActionName.Should().Be("Details");
            result.As <RedirectToActionResult>().RouteValues.Keys.Should().Contain("id");
            result.As <RedirectToActionResult>().RouteValues.Values.Should().Contain(supplementId);
            result.As <RedirectToActionResult>().RouteValues.Keys.Should().Contain("name");
            result.As <RedirectToActionResult>().RouteValues.Values.Should().Contain(supplementName);
        }
Exemple #12
0
        public async Task Details_WithCorrectSupplementIdAndCorrectPage_ShouldReturnValidPaginationModelAndValidViewModel()
        {
            const string returnUrl     = "returnUrl";
            const int    page          = 3;
            const int    totalElements = 20;

            //Arrange
            Mock <ISupplementService> supplementService = new Mock <ISupplementService>();

            supplementService
            .Setup(s => s.IsSupplementExistingById(supplementId, false))
            .ReturnsAsync(true);
            supplementService
            .Setup(s => s.GetDetailsByIdAsync(supplementId, page))
            .ReturnsAsync(new SupplementDetailsServiceModel
            {
                Comments = new List <CommentAdvancedServiceModel> {
                    new CommentAdvancedServiceModel {
                    }
                }
            });
            supplementService
            .Setup(s => s.TotalCommentsAsync(supplementId, false))
            .ReturnsAsync(totalElements);

            Mock <IUrlHelper> urlHelper = new Mock <IUrlHelper>();

            urlHelper
            .Setup(u => u.IsLocalUrl(It.IsAny <string>()))
            .Returns(true);

            Mock <ITempDataDictionary> tempData = new Mock <ITempDataDictionary>();

            tempData
            .SetupGet(t => t["ReturnUrl"])
            .Returns(returnUrl);

            SupplementsController supplementsController = new SupplementsController(supplementService.Object)
            {
                Url      = urlHelper.Object,
                TempData = tempData.Object
            };

            //Act
            var result = await supplementsController.Details(supplementId, supplementName, returnUrl, page);

            //Assert
            result.Should().BeOfType <ViewResult>();

            result.As <ViewResult>().ViewData.Keys.Should().Contain("ReturnUrl");
            result.As <ViewResult>().ViewData.Values.Should().Contain(returnUrl);

            result.As <ViewResult>().Model.Should().BeOfType <PagingElementViewModel <SupplementDetailsServiceModel> >();

            PagingElementViewModel <SupplementDetailsServiceModel> model = result.As <ViewResult>().Model.As <PagingElementViewModel <SupplementDetailsServiceModel> >();

            model.Element.Comments.Should().HaveCount(1);
            model.Pagination.CurrentPage.Should().Be(page);
            model.Pagination.PreviousPage.Should().Be(2);
            model.Pagination.NextPage.Should().Be(4);
            model.Pagination.TotalPages.Should().Be(4);
            model.Pagination.TotalElements.Should().Be(totalElements);
            model.Pagination.PageSize.Should().Be(CommentPageSize);
        }
Exemple #13
0
 public void SetUp()
 {
     controller = new SupplementsController();
 }
Exemple #14
0
        public async Task Details_WithCorrectSupplementIdAndCorrectPageAndIncorrectReturnUrl_ShouldChangeReturnUrlAndReturnValidPaginationModelAndValidViewModel()
        {
            string    expectedReturnUrl = "IncorrectUrl";
            const int page          = 1;
            const int totalElements = CommentPageSize;

            //Arrange
            Mock <IModeratorSupplementService> moderatorSupplementService = new Mock <IModeratorSupplementService>();

            moderatorSupplementService
            .Setup(m => m.GetDetailsWithDeletedCommentsByIdAsync(supplementId, page))
            .ReturnsAsync(new SupplementDetailsWithDeletedCommentsServiceModel()
            {
                Comments = new List <CommentAdvancedServiceModel>()
                {
                    new CommentAdvancedServiceModel()
                }
            });

            Mock <ISupplementService> supplementService = new Mock <ISupplementService>();

            supplementService
            .Setup(s => s.IsSupplementExistingById(supplementId, false))
            .ReturnsAsync(true);
            supplementService
            .Setup(s => s.TotalCommentsAsync(supplementId, true))
            .ReturnsAsync(totalElements);

            Mock <IUrlHelper> urlHelper = new Mock <IUrlHelper>();

            urlHelper
            .Setup(u => u.IsLocalUrl(It.IsAny <string>()))
            .Returns(false)
            .Callback((string url) => { expectedReturnUrl = url; });

            Mock <ITempDataDictionary> tempData = new Mock <ITempDataDictionary>();

            tempData
            .SetupGet(t => t["ReturnUrl"])
            .Returns("/");

            SupplementsController supplementsController = new SupplementsController(moderatorSupplementService.Object, supplementService.Object)
            {
                Url      = urlHelper.Object,
                TempData = tempData.Object
            };

            //Act
            var result = await supplementsController.Details(supplementId, supplementName, null, page);

            //Assert
            result.Should().BeOfType <ViewResult>();

            result.As <ViewResult>().ViewData.Should().ContainKey("ReturnUrl");
            result.As <ViewResult>().ViewData.Should().ContainValue("/");

            result.As <ViewResult>().Model.Should().BeOfType <PagingElementViewModel <SupplementDetailsWithDeletedCommentsServiceModel> >();

            PagingElementViewModel <SupplementDetailsWithDeletedCommentsServiceModel> model = result.As <ViewResult>().Model.As <PagingElementViewModel <SupplementDetailsWithDeletedCommentsServiceModel> >();

            model.Element.Comments.Should().HaveCount(1);
            model.Pagination.CurrentPage.Should().Be(page);
            model.Pagination.PreviousPage.Should().Be(page);
            model.Pagination.NextPage.Should().Be(page);
            model.Pagination.TotalPages.Should().Be(page);
            model.Pagination.TotalElements.Should().Be(totalElements);
            model.Pagination.PageSize.Should().Be(CommentPageSize);
        }