public async Task UpdateProduct_Success() { // Arrange var loggerController = Loggers.ProductControllerLogger(); var loggerRepository = Loggers.ProductRepositoryLogger(); var blobService = BlobService.BlobServiceUpload(); var mapper = Mapper.Get(); var dbContext = _fixture.Context; var oldCategory = NewDatas.NewCategory(); var newCategory = NewDatas.NewCategory(); await dbContext.Categories.AddRangeAsync(oldCategory, newCategory); await dbContext.SaveChangesAsync(); var product = NewDatas.NewProduct(); product.CategoryId = oldCategory.CategoryId; await dbContext.Products.AddAsync(product); await dbContext.SaveChangesAsync(); var productRepository = new ProductRepository(loggerRepository, mapper, blobService, dbContext); var productRequest = NewDatas.NewProductRequest(); productRequest.CategoryId = newCategory.CategoryId; // Act var productController = new ProductsController(loggerController, productRepository); var result = await productController.UpdateProduct(product.ProductId, productRequest); // Assert var updatedResult = Assert.IsType <OkObjectResult>(result.Result); var updatedValue = Assert.IsType <ProductRespone>(updatedResult.Value); Assert.Equal(product.Name, updatedValue.Name); Assert.Equal(product.Price, updatedValue.Price); Assert.Equal(product.Description, updatedValue.Description); Assert.Equal(product.Image, updatedValue.Image); Assert.Equal(product.Rated, updatedValue.Rated); Assert.Equal(newCategory.CategoryId, updatedValue.CategoryId); Assert.Equal(newCategory.Name, updatedValue.CategoryName); }
public async Task Delete_Success() { // Arrange var loggerController = Loggers.ProductControllerLogger(); var loggerRepository = Loggers.ProductRepositoryLogger(); var blobService = BlobService.BlobServiceUpload(); var mapper = Mapper.Get(); var dbContext = _fixture.Context; var category = NewDatas.NewCategory(); await dbContext.Categories.AddRangeAsync(category); await dbContext.SaveChangesAsync(); var product = NewDatas.NewProduct(); product.CategoryId = category.CategoryId; await dbContext.Products.AddAsync(product); await dbContext.SaveChangesAsync(); var productRepository = new ProductRepository(loggerRepository, mapper, blobService, dbContext); var productController = new ProductsController(loggerController, productRepository); // Act var result = await productController.RemoveProduct(product.ProductId); // Assert var deletedResult = Assert.IsType <OkObjectResult>(result.Result); var deletedResultValue = Assert.IsType <ProductRespone>(deletedResult.Value); Assert.Equal(product.Name, deletedResultValue.Name); Assert.Equal(product.Price, deletedResultValue.Price); Assert.Equal(product.Description, deletedResultValue.Description); Assert.Equal(product.Image, deletedResultValue.Image); Assert.Equal(product.Rated, deletedResultValue.Rated); Assert.Equal(category.CategoryId, deletedResultValue.CategoryId); Assert.Equal(category.Name, deletedResultValue.CategoryName); await Assert.ThrowsAsync <NotFoundException>(async() => { await productController.GetProduct(deletedResultValue.ProductId); }); }
public async Task GetById_NotFound(int id) { // Arrange var loggerController = Loggers.ProductControllerLogger(); var loggerRepository = Loggers.ProductRepositoryLogger(); var mapper = Mapper.Get(); var dbContext = _fixture.Context; var productRepository = new ProductRepository(loggerRepository, mapper, dbContext); var productController = new ProductsController(loggerController, productRepository); // Assert & Act await Assert.ThrowsAsync <NotFoundException>(async() => { await productController.GetProduct(id); }); }
public async Task GetAll_Success() { // Arrange var loggerController = Loggers.ProductControllerLogger(); var loggerRepository = Loggers.ProductRepositoryLogger(); var mapper = Mapper.Get(); var dbContext = _fixture.Context; var category = NewDatas.NewCategory(); var product1 = NewDatas.NewProduct(); var product2 = NewDatas.NewProduct(); await dbContext.Categories.AddAsync(category); await dbContext.SaveChangesAsync(); await dbContext.Products.AddRangeAsync(product1, product2); product1.CategoryId = category.CategoryId; product2.CategoryId = category.CategoryId; await dbContext.SaveChangesAsync(); var productRepository = new ProductRepository(loggerRepository, mapper, dbContext); var productController = new ProductsController(loggerController, productRepository); // Act var result = await productController.GetProducts(null); // Assert var getProductsResultType = Assert.IsType <ActionResult <IEnumerable <ProductRespone> > >(result); var getProductsResult = Assert.IsType <OkObjectResult>(result.Result); Assert.NotEmpty(getProductsResult.Value as IEnumerable <ProductRespone>); }