コード例 #1
0
        public async Task UpdateProductAsync_IdNotPresent_RequestedResourceNotFoundExceptionThrown()
        {
            var newProduct = new UpdateProductRequest()
            {
                Code = "bb"
            };
            var mockUserContext    = new Mock <IUserContext>();
            var mockProductContext = new Mock <IProductCatalogueContext>();
            List <CatalogueProduct> productList = new List <CatalogueProduct>()
            {
                new CatalogueProduct()
                {
                    Id = 1, Code = "aa"
                },
                new CatalogueProduct()
                {
                    Id = 2, Code = "bb"
                }
            };

            mockProductContext.Setup(c => c.Products).ReturnsEntitySet(productList);
            var service = new ProductCatalogueService(mockProductContext.Object, mockUserContext.Object);

            Assert.ThrowsAsync <RequestedResourceNotFoundException>(() => service.UpdateProductAsync(3, newProduct));
        }
コード例 #2
0
        public async Task UpdateProductAsync_ValidRequest_ProductUpdated()
        {
            var newProduct = new UpdateProductRequest()
            {
                Code = "cc"
            };
            var mockUserContext    = new Mock <IUserContext>();
            var mockProductContext = new Mock <IProductCatalogueContext>();
            List <CatalogueProduct> productList = new List <CatalogueProduct>()
            {
                new CatalogueProduct()
                {
                    Id = 1, Code = "aa"
                },
                new CatalogueProduct()
                {
                    Id = 2, Code = "bb"
                }
            };

            mockUserContext.Setup(c => c.UserId).Returns(1);
            mockProductContext.Setup(c => c.Products).ReturnsEntitySet(productList);
            var service = new ProductCatalogueService(mockProductContext.Object, mockUserContext.Object);

            var updatedProduct = await service.UpdateProductAsync(1, newProduct);

            Assert.Equal(newProduct.Code, updatedProduct.Code);
        }
コード例 #3
0
        public async Task UpdateProductAsync_UpdateProductRequest_Product(
            [Frozen] Mock <IProductCatalogueContext> context,
            ProductCatalogueService service,
            IFixture fixture)
        {
            // arrange
            var updateRequest = fixture.Create <UpdateProductRequest>();

            var dbProducts = fixture.CreateMany <DbProduct>(2).ToList();

            var productId = 1;

            dbProducts[0].Id   = productId + 1;
            dbProducts[0].Code = $"{updateRequest.Code}1";
            dbProducts[1].Id   = productId;
            dbProducts[1].Code = updateRequest.Code;

            context.Setup(s => s.Products).ReturnsEntitySet(dbProducts);

            // act
            var updateProduct = await service.UpdateProductAsync(productId, updateRequest);

            // assert
            Assert.Equal(updateRequest.Code, updateProduct.Code);
            Assert.Equal(updateRequest.Name, updateProduct.Name);
        }
コード例 #4
0
        public async void UpdateProductAsync_NotExistedEntityIdentifier_CustomExceptionThrows([Frozen] Mock <IProductCatalogueContext> context, ProductCatalogueService service, IFixture fixture)
        {
            Configure(context, fixture);
            var updateProductRequest = fixture.Create <UpdateProductRequest>();
            int id = 0;

            await Assert.ThrowsAsync <RequestedResourceNotFoundException>(() => service.UpdateProductAsync(id, updateProductRequest));
        }
コード例 #5
0
        public async void UpdateProductAsync_EntityWithExistedCode_CustomExceptionThrows([Frozen] Mock <IProductCatalogueContext> context, ProductCatalogueService service, IFixture fixture)
        {
            Configure(context, fixture);
            var updateProductRequest = fixture.Create <UpdateProductRequest>();

            updateProductRequest.Code = _product[0].Code;
            int id = _product[1].Id;

            await Assert.ThrowsAsync <RequestedResourceHasConflictException>(() => service.UpdateProductAsync(id, updateProductRequest));
        }
コード例 #6
0
        public async void UpdateProductAsync_ValidEntity_SuccessfullHiveEdition([Frozen] Mock <IProductCatalogueContext> context, ProductCatalogueService service, IFixture fixture)
        {
            Configure(context, fixture);
            var updateProductRequest = fixture.Create <UpdateProductRequest>();
            int id = _product[0].Id;

            var result = await service.UpdateProductAsync(id, updateProductRequest);

            result.Id.Should().Be(id);
            result.Code.Should().Be(updateProductRequest.Code);
            result.Name.Should().Be(updateProductRequest.Name);
        }
コード例 #7
0
        public async Task ProductUpdateAsync_RequestedResourceNotFoundException(
            [Frozen] Mock <IProductCatalogueContext> context,
            ProductCatalogueService service,
            IFixture fixture)
        {
            var products      = fixture.CreateMany <CatalogueProduct>(5).ToList();
            var updateProduct = fixture.Create <UpdateProductRequest>();

            context.Setup(x => x.Products).ReturnsEntitySet(products);
            Func <Task> act = async() => await service.UpdateProductAsync(0, updateProduct);

            act.Should().Throw <RequestedResourceNotFoundException>();
        }
コード例 #8
0
        public async Task ProductUpdateAsync_UpdateOneItem_ReturnOneItem(
            [Frozen] Mock <IProductCatalogueContext> context,
            ProductCatalogueService service,
            IFixture fixture)
        {
            var products      = fixture.CreateMany <CatalogueProduct>(5).ToList();
            var updateProduct = fixture.Create <UpdateProductRequest>();

            context.Setup(x => x.Products).ReturnsEntitySet(products);
            var result = await service.UpdateProductAsync(products[0].Id, updateProduct);

            result.Code.Should().Be(service.GetProductAsync(products[0].Id).Result.Code);
        }
コード例 #9
0
        public async Task UpdateProduct_UpdateSuccessfuly_Test([Frozen] Mock <IProductCatalogueContext> context, IFixture fixture, ProductCatalogueService productCatalogueService)
        {
            var listEntity = fixture.CreateMany <CatalogueProduct>(13).ToList();

            context.Setup(x => x.Products).ReturnsEntitySet(listEntity);
            var createRequest = fixture.Create <UpdateProductRequest>();
            var addedProduct  = await productCatalogueService.UpdateProductAsync(listEntity[0].Id, createRequest);

            var product = await productCatalogueService.GetProductAsync(addedProduct.Id);

            Assert.Equal(product.Name, createRequest.Name);
            Assert.Equal(product.ManufacturerCode, createRequest.ManufacturerCode);
            Assert.Equal(product.Code, createRequest.Code);
            Assert.Equal(product.Description, createRequest.Description);
        }
コード例 #10
0
        public async Task UpdateProductAsync_UpdateProductRequest_RequestedResourceNotFoundException(
            [Frozen] Mock <IProductCatalogueContext> context,
            ProductCatalogueService service,
            IFixture fixture)
        {
            // arrange
            var updateRequest = fixture.Create <UpdateProductRequest>();

            var dbProducts = fixture.CreateMany <DbProduct>(2).ToList();

            var productId = 1;

            dbProducts[0].Id   = productId + 1;
            dbProducts[0].Code = $"{updateRequest.Code}1";
            dbProducts[1].Id   = productId + 1;
            dbProducts[1].Code = $"{updateRequest.Code}1";

            context.Setup(s => s.Products).ReturnsEntitySet(dbProducts);

            // assert
            await Assert.ThrowsAsync <RequestedResourceNotFoundException>(() => service.UpdateProductAsync(productId, updateRequest));
        }
コード例 #11
0
        public async Task DeleteProduct_NotFoundException_Test([Frozen] Mock <IProductCatalogueContext> context, IFixture fixture, ProductCatalogueService productCatalogueService, int productCatalogId)
        {
            var listEntity    = fixture.CreateMany <CatalogueProduct>(13).ToList();
            var createRequest = fixture.Create <UpdateProductRequest>();

            context.Setup(x => x.Products).ReturnsEntitySet(listEntity);
            var ex = await Assert.ThrowsAsync <RequestedResourceNotFoundException>(() => productCatalogueService.UpdateProductAsync(productCatalogId, createRequest));

            Assert.Equal(typeof(RequestedResourceNotFoundException), ex.GetType());
        }