Beispiel #1
0
        public async Task CreateProductAsync_UniqueCode_ProductWithSpecifiedCodeCreated()
        {
            const string newCode    = "cc";
            var          newProduct = new UpdateProductRequest()
            {
                Code = newCode
            };
            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 product = await service.CreateProductAsync(newProduct);

            Assert.Equal(newCode, product.Code);
        }
Beispiel #2
0
        public async Task CreateProductAsync_CodeAlreadyPresent_RequestedResourceHasConflictExceptionThrown()
        {
            var newProduct = new UpdateProductRequest()
            {
                Code = "aa"
            };
            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 <RequestedResourceHasConflictException>(() => service.CreateProductAsync(newProduct));
        }
Beispiel #3
0
        public async void CreateProductAsync_EntityWithExistedCode_CustomExceptionThrows([Frozen] Mock <IProductCatalogueContext> context, ProductCatalogueService service, IFixture fixture)
        {
            Configure(context, fixture);
            var updateProductRequest = fixture.Create <UpdateProductRequest>();

            updateProductRequest.Code = _product[0].Code;

            await Assert.ThrowsAsync <RequestedResourceHasConflictException>(() => service.CreateProductAsync(updateProductRequest));
        }
Beispiel #4
0
        public async void CreateProductAsync_ValidEntity_SuccessfullHiveAddition([Frozen] Mock <IProductCatalogueContext> context, ProductCatalogueService service, IFixture fixture)
        {
            Configure(context, fixture);
            var updateProductRequest = fixture.Create <UpdateProductRequest>();

            var result = await service.CreateProductAsync(updateProductRequest);

            result.Code.Should().Be(updateProductRequest.Code);
            result.Name.Should().Be(updateProductRequest.Name);
        }
        public async Task CreateProduct_AddedSuccessfuly_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.CreateProductAsync(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);
        }
Beispiel #6
0
        public async Task ProductCreateAsync_RequestedResourceHasConflictException(
            [Frozen] Mock <IProductCatalogueContext> context,
            ProductCatalogueService service,
            IFixture fixture)
        {
            var products = fixture.CreateMany <CatalogueProduct>(5).ToList();
            var product  = new UpdateProductRequest {
                Code = products[0].Code
            };

            context.Setup(x => x.Products).ReturnsEntitySet(products);

            Func <Task> act = async() => await service.CreateProductAsync(product);

            act.Should().Throw <RequestedResourceHasConflictException>();
        }
Beispiel #7
0
        public async Task ProductCreateAsync_AddOneElement_ColectionCountSix(
            [Frozen] Mock <IProductCatalogueContext> context,
            ProductCatalogueService service,
            IFixture fixture)
        {
            var products = fixture.CreateMany <CatalogueProduct>(5).ToList();
            var product  = fixture.Create <UpdateProductRequest>();

            context.Setup(x => x.Products).ReturnsEntitySet(products);

            await service.CreateProductAsync(product);

            var result = await service.GetProductsAsync(0, 8);

            result.Count.Should().Be(6);
        }
Beispiel #8
0
        public async Task CreateProductAsync_UpdateProductRequest_RequestedResourceHasConflictException(
            [Frozen] Mock <IProductCatalogueContext> context,
            ProductCatalogueService service,
            IFixture fixture)
        {
            // arrange
            var dbProducts = fixture.CreateMany <DbProduct>(3).ToList();

            var updateRequest = fixture.Create <UpdateProductRequest>();

            updateRequest.Code = dbProducts[1].Code;

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

            // assert
            await Assert.ThrowsAsync <RequestedResourceHasConflictException>(() => service.CreateProductAsync(updateRequest));
        }
Beispiel #9
0
        public async Task CreateProductAsync_UpdateProductRequest_Product(
            [Frozen] Mock <IProductCatalogueContext> context,
            ProductCatalogueService service,
            IFixture fixture)
        {
            // arrange
            var dbProducts = fixture.CreateMany <DbProduct>(3).ToList();

            var updateRequest = fixture.Create <UpdateProductRequest>();

            updateRequest.Code = dbProducts[1].Code;

            dbProducts[1].Code = dbProducts[0].Code;
            dbProducts[2].Code = dbProducts[0].Code;

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

            // act
            var product = await service.CreateProductAsync(updateRequest);

            // assert
            Assert.Equal(updateRequest.Code, product.Code);
        }
        public async Task CreateProduct_ConflictException_Test([Frozen] Mock <IProductCatalogueContext> context, IFixture fixture, ProductCatalogueService productCatalogueService)
        {
            var listEntity    = fixture.CreateMany <CatalogueProduct>(13).ToList();
            var createRequest = fixture.Create <UpdateProductRequest>();

            createRequest.Code = listEntity[0].Code;
            context.Setup(x => x.Products).ReturnsEntitySet(listEntity);
            var ex = await Assert.ThrowsAsync <RequestedResourceHasConflictException>(() => productCatalogueService.CreateProductAsync(createRequest));

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