public async Task CreateProductOption_Returns_BadResponse_If_Exception_Is_Thrown()
        {
            //Arrange
            Mock <ILogger <ProductsController> > mockLogger = new Mock <ILogger <ProductsController> >();
            Mock <IProductService> mockProductService       = new Mock <IProductService>();

            Guid productId = Guid.Parse("de1287c0-4b15-4a7b-9d8a-dd21b3cafec3");

            CreateProductOptionRequest createProductOptionRequest = new CreateProductOptionRequest
            {
                Name        = "Test Product Option 1",
                Description = "Description 1",
            };

            mockProductService.Setup(m => m.CreateProductOption(productId, It.IsAny <CreateProductOptionRequest>()))
            .ThrowsAsync(new Exception("Error occured!"))
            .Verifiable();

            ProductsController productsController = new ProductsController(mockLogger.Object, mockProductService.Object);

            //Act
            var response = await productsController.CreateProductOption(productId, createProductOptionRequest) as BadRequestObjectResult;

            var responseObject = response.Value as ApiResult;

            //Assert
            Assert.Equal("An error has occured", responseObject.Error);

            mockLogger.VerifyAll();
            mockProductService.VerifyAll();
        }
        public async Task CreateProductOption_Returns_OkResponse_Successfully()
        {
            //Arrange
            Mock <ILogger <ProductsController> > mockLogger = new Mock <ILogger <ProductsController> >();
            Mock <IProductService> mockProductService       = new Mock <IProductService>();

            Guid productId = Guid.Parse("de1287c0-4b15-4a7b-9d8a-dd21b3cafec3");

            CreateProductOptionRequest createProductOptionRequest = new CreateProductOptionRequest
            {
                Name        = "Test Product Option 1",
                Description = "Description 1",
            };

            mockProductService.Setup(m => m.CreateProductOption(productId, It.IsAny <CreateProductOptionRequest>()))
            .ReturnsAsync(new CreateProductOptionResponse
            {
                IsSuccessful = true
            })
            .Verifiable();

            ProductsController productsController = new ProductsController(mockLogger.Object, mockProductService.Object);

            //Act
            var response = await productsController.CreateProductOption(productId, createProductOptionRequest) as OkObjectResult;

            var responseObject = response.Value as CreateProductOptionResponse;

            //Assert
            Assert.True(responseObject.IsSuccessful);

            mockLogger.VerifyAll();
            mockProductService.VerifyAll();
        }
Ejemplo n.º 3
0
        public async void CreateProductOption_Correct_Product_And_Correct_ProductOptions_Returns_No_Content()
        {
            // Arrange
            Product product = TestProduct;
            string  guid    = Guid.NewGuid().ToString();

            repository.Setup(r => r.FindProductById(It.IsAny <Guid>()))
            .ReturnsAsync(product);
            repository.Setup(r => r.Save())
            .ReturnsAsync(true);

            var productOptionCreation = new ProductOptionForCreationDto
            {
                Name        = "New Product Option",
                Description = "New Product Description"
            };

            // Act
            var result = await sut.CreateProductOption(guid, productOptionCreation);

            // Assert
            Assert.IsType <NoContentResult>(result);
        }