public void AddCake_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",
            };
            var mockRepositoryWrapper = new Mock <IRepositoryWrapper>();

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

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

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

            Assert.NotNull(result.Result);
            Assert.NotNull(iactionResult);
        }
        public void AddCake_ReturnsBadRequest_Problem()
        {
            // Arrange
            var mockRepositoryWrapper     = new Mock <IRepositoryWrapper>();
            var mockAdministrationService = new Mock <IAdministrationService>();
            var controller = new AdministrationController(mockRepositoryWrapper.Object, mockAdministrationService.Object);

            controller.ModelState.AddModelError("Name", "Too long");
            var newCake = new Cake
            {
                Id       = 1,
                Name     = "Royal Cake",
                Category = new Category {
                    Id = 1, Name = "CiocolateCake"
                },
                Description     = "Best cake",
                ImageUrl        = "/img/img1.jpg",
                IsCakeOfTheWeek = true,
                Price           = 10,
                Weigth          = "12",
                Stock           = 15
            };

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

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

            Assert.IsType <SerializableError>(badRequestResult.Value);
        }
        public void AddCake_ReturnsAddCakeViewModel_Success()
        {
            // Arrange
            var categoryList = new List <Category> {
                new Category {
                    Id = 1, Name = "VanillaCakes"
                }
            };
            var mockRepositoryWrapper = new Mock <IRepositoryWrapper>();

            mockRepositoryWrapper.Setup(repo => repo.Category.GetAllAsync()).Returns(Task.FromResult(categoryList));
            var mockAdministrationService = new Mock <IAdministrationService>();
            var controller = new AdministrationController(mockRepositoryWrapper.Object, mockAdministrationService.Object);

            // Act
            var result = controller.AddCake();

            // Assert
            var addCakeViewModelResult = Assert.IsType <Task <AddCakeViewModel> >(result);

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