public void EditCake_ReturnsBadRequest_Problem()
        {
            // Arrange
            var newCake = new Cake
            {
                Id       = 1,
                Name     = "Royal Cake",
                Category = new Category {
                    Id = 1, Name = "CiocolateCake"
                },
                Description = "Best cake",
                ImageUrl    = "/img/img1.jpg"
            };
            var mockRepositoryWrapper = new Mock <IRepositoryWrapper>();

            mockRepositoryWrapper.Setup(repo => repo.Cake.GetCakeByNameAsNoTracking(newCake.Name));
            var mockAdministrationService = new Mock <IAdministrationService>();
            var controller = new AdministrationController(mockRepositoryWrapper.Object, mockAdministrationService.Object);

            controller.ModelState.AddModelError("Price", "Required!");


            // Act
            var result = controller.EditCake(newCake);

            // Assert
            var badRequestResult = Assert.IsType <BadRequestObjectResult>(result.Result);

            Assert.IsType <SerializableError>(badRequestResult.Value);
        }
        public void EditCake_ReturnsIActionResult_Success()
        {
            //Arrange
            var cake = new Cake
            {
                Id       = 1,
                Name     = "Royal Cake",
                Category = new Category {
                    Id = 1, Name = "CiocolateCake"
                },
                Description     = "Best cake",
                ImageUrl        = "/img/img1.jpg",
                IsCakeOfTheWeek = true,
            };
            var mockRepositoryWrapper = new Mock <IRepositoryWrapper>();

            mockRepositoryWrapper.Setup(repo => repo.Cake.GetByIdAsync(cake.Id));
            mockRepositoryWrapper.Setup(repo => repo.Cake.Update(cake));
            var mockAdministrationService = new Mock <IAdministrationService>();
            var controller = new AdministrationController(mockRepositoryWrapper.Object, mockAdministrationService.Object);

            //Act
            var result = controller.EditCake(cake);

            //Asseet
            var iactionResult = Assert.IsAssignableFrom <IActionResult>(result.Result);

            Assert.NotNull(result.Result);
            Assert.NotNull(iactionResult);
        }
        public void EditCake_ReturnsManageCakeViewModel_Success()
        {
            var cake = new Cake
            {
                Id       = 1,
                Name     = "Royal Cake",
                Category = new Category {
                    Id = 1, Name = "CiocolateCake"
                },
                Description = "Best cake",
                ImageUrl    = "/img/img1.jpg"
            };
            var mockRepositoryWrapper = new Mock <IRepositoryWrapper>();

            mockRepositoryWrapper.Setup(repo => repo.Cake.GetByIdAsync(cake.Id));
            mockRepositoryWrapper.Setup(repo => repo.Category.GetAllAsync());
            var mockAdministrationService = new Mock <IAdministrationService>();
            var controller = new AdministrationController(mockRepositoryWrapper.Object, mockAdministrationService.Object);

            //Act
            var result = controller.EditCake(cake.Id);

            //Assert
            var manageCakeViewModelResult = Assert.IsType <ManageCakeViewModel>(result.Result);

            Assert.NotNull(result.Result);
            Assert.NotNull(manageCakeViewModelResult);
        }