Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            });
        }
Exemplo n.º 3
0
        public async Task GetById_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.GetProduct(product1.ProductId);

            // Assert
            var productResult = Assert.IsType <OkObjectResult>(result.Result);
            var productValue  = Assert.IsType <ProductRespone>(productResult.Value);

            Assert.Equal(product1.Name, productValue.Name);
            Assert.Equal(product1.Price, productValue.Price);
            Assert.Equal(product1.Description, productValue.Description);
            Assert.Equal(product1.Image, productValue.Image);
            Assert.Equal(product1.Rated, productValue.Rated);

            Assert.Equal(category.CategoryId, productValue.CategoryId);
            Assert.Equal(category.Name, productValue.CategoryName);
        }
Exemplo n.º 4
0
        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);
            });
        }
Exemplo n.º 5
0
        public async Task CreateProduct_Success()
        {
            // Arrange
            var loggerController = Loggers.ProductControllerLogger();
            var loggerRepository = Loggers.ProductRepositoryLogger();

            var mapper = Mapper.Get();

            var dbContext = _fixture.Context;

            var category = NewDatas.NewCategory();

            await dbContext.Categories.AddRangeAsync(category);

            await dbContext.SaveChangesAsync();

            var productRepository = new ProductRepository(loggerRepository, mapper, dbContext);

            var productRequest = NewDatas.NewProductRequest();

            productRequest.CategoryId = category.CategoryId;

            // Act
            var productController = new ProductsController(loggerController, productRepository);
            var result            = await productController.CreateProduct(productRequest);

            // Assert
            var createdResult = Assert.IsType <CreatedResult>(result.Result);
            var returnValue   = Assert.IsType <ProductRespone>(createdResult.Value);

            Assert.Equal(productRequest.Name, returnValue.Name);
            Assert.Equal(productRequest.Price, returnValue.Price);
            Assert.Equal(productRequest.Description, returnValue.Description);
            Assert.Equal(productRequest.Image, returnValue.Image);
            Assert.Equal(0, returnValue.Rated);
            Assert.Equal(category.CategoryId, returnValue.CategoryId);
            Assert.Equal(category.Name, returnValue.CategoryName);
        }
Exemplo n.º 6
0
        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>);
        }