Ejemplo n.º 1
0
        public async Task UpdateProduct_ReturnsCreatedResponse_GivenValidPayload()
        {
            using (var client = new TestServerFixture().Client)
            {
                var validAddProduct = new ProductCreateRequestBuilder()
                                      .WithDefaultValues()
                                      .WithDescription("Integration testing Add Product")
                                      .WithName("Integration Testing Add Product")
                                      .Build();

                HttpContent addProductPayload = new StringContent(JsonConvert.SerializeObject(validAddProduct),
                                                                  Encoding.UTF8, "application/json");
                var addProductResponse = await client.PostAsync($"/v1/products", addProductPayload);

                addProductResponse.EnsureSuccessStatusCode();

                Guid.TryParse(JsonConvert.DeserializeObject(await addProductResponse.Content.ReadAsStringAsync()).ToString(),
                              out var validProductId);
                var validUpdateProduct = new ProductUpdateRequestBuilder()
                                         .WithDefaultValues()
                                         .WithId(validProductId)
                                         .WithDescription("UpdateProduct Integration testing")
                                         .WithName("Integration Testing UpdateProduct")
                                         .Build();

                HttpContent updateProductPayload = new StringContent(JsonConvert.SerializeObject(validUpdateProduct),
                                                                     Encoding.UTF8, "application/json");
                var response = await client.PutAsync($"/v1/products/{validProductId}", updateProductPayload);

                response.EnsureSuccessStatusCode();
                response.StatusCode.Should().Be(HttpStatusCode.Created);
            }
        }
        public void ValidateSku_When_not_uniqe_Then_fails()
        {
            var validator = new ProductRequestCustomValidator();
            var request   = ProductCreateRequestBuilder.Create()
                            .WithProduct(ProductDtoBuilder.Create()
                                         .WithVariant(ProductVariantDtoBuilder.Create()
                                                      .WithSku("001")
                                                      .Build())
                                         .WithVariant(ProductVariantDtoBuilder.Create()
                                                      .WithSku("000")
                                                      .Build())
                                         .Build())
                            .Build();

            var errors = new ArgumentErrorsCollection();

            var dbContextMock = GetDbContextMock();

            validator.ValidateSkus(dbContextMock.Object, request, errors);

            dbContextMock.VerifyGet(c => c.Products, Times.AtLeast(request.Product.Variants.Count));

            Assert.IsNotEmpty(errors);
            Assert.IsTrue(errors.HasArgument("Product.Variants.Sku"), errors[0].ArgumentName);
        }
Ejemplo n.º 3
0
        public async Task GetProductById_ReturnsSuccess_GivenValidInput()
        {
            using (var client = new TestServerFixture().Client)
            {
                var validProduct = new ProductCreateRequestBuilder()
                                   .WithDefaultValues()
                                   .WithDescription("Integration testing Get ProductById")
                                   .WithName("Integration Testing Product")
                                   .Build();

                HttpContent content = new StringContent(JsonConvert.SerializeObject(validProduct), Encoding.UTF8,
                                                        "application/json");
                var addProductResponse = await client.PostAsync($"/v1/products", content);

                addProductResponse.EnsureSuccessStatusCode();

                Guid.TryParse(JsonConvert.DeserializeObject(await addProductResponse.Content.ReadAsStringAsync()).ToString(),
                              out var validProductId);

                var response = await client.GetAsync($"/v1/products/{validProductId}");

                response.EnsureSuccessStatusCode();

                var result =
                    JsonConvert.DeserializeObject <ProductResponseDto>(await response.Content.ReadAsStringAsync());

                result.Should().NotBeNull();
                result.Id.Should().Be(validProductId);
            }
        }
        public void ValidateRequestCustom_When_newIds_Then_success_validation()
        {
            ProductCreateRequest request = ProductCreateRequestBuilder.Create()
                                           .WithProduct(ProductDtoBuilder.Create()
                                                        .WithName("TEST")
                                                        .WithCategoryId(1)
                                                        .WithDescription("TEST DESCRIPTION")
                                                        .WithOption(ProductOptionDtoBuilder.Create()
                                                                    .WithIndex(1)
                                                                    .WithName("TEST")
                                                                    .Build())
                                                        .WithVariant(ProductVariantDtoBuilder.Create()
                                                                     .WithPrice(10)
                                                                     .WithQuantity(10)
                                                                     .WithOptionValue(ProductVariantOptionValueDtoBuilder.Create()
                                                                                      .WithIndex(1)
                                                                                      .WithValue("TEST")
                                                                                      .Build())
                                                                     .Build())
                                                        .Build())
                                           .Build();

            SetupMocks(request);

            CommandMock.Object.ValidateRequestCustom();

            ValidatorMock.Verify(s => s.ValidateNewIds(It.IsAny <IDbContext>(),
                                                       It.IsAny <ProductCreateRequest>(),
                                                       It.IsAny <ArgumentErrorsCollection>()),
                                 Times.Once);
        }
        public void Execute_When_correct_request_Then_validates_Then_calls_execute()
        {
            var request = ProductCreateRequestBuilder.Create()
                          .WithProduct(ProductDtoBuilder.Create()
                                       .WithName("TEST")
                                       .WithCategoryId(1)
                                       .WithDescription("TEST DESCRIPTION")
                                       .WithOption(ProductOptionDtoBuilder.Create()
                                                   .WithIndex(1)
                                                   .WithName("TEST")
                                                   .Build())
                                       .WithVariant(ProductVariantDtoBuilder.Create()
                                                    .WithPrice(10)
                                                    .WithQuantity(10)
                                                    .WithOptionValue(ProductVariantOptionValueDtoBuilder.Create()
                                                                     .WithIndex(1)
                                                                     .WithValue("TEST")
                                                                     .Build())
                                                    .Build())
                                       .Build())
                          .Build();

            SetupMocks(request);

            CommandMock.Setup(c => c.ValidateRequestCustom());

            CommandMock.Object.Execute(request);

            CommandMock.Protected().Verify("ValidateRequest", Times.Once());
            CommandMock.Verify(c => c.ValidateRequestCustom(), Times.Once);
        }
Ejemplo n.º 6
0
        public async Task AddProduct_ReturnsBadRequest_GivenInvalidPayload()
        {
            using (var client = new TestServerFixture().Client)
            {
                var validProduct = new ProductCreateRequestBuilder()
                                   .WithDefaultValues()
                                   .WithEmptyName()
                                   .Build();

                HttpContent content = new StringContent(JsonConvert.SerializeObject(validProduct), Encoding.UTF8,
                                                        "application/json");
                var response = await client.PostAsync($"/v1/products", content);

                response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
            }
        }
Ejemplo n.º 7
0
        private static async Task <Guid> GenerateValidProductId(HttpClient client)
        {
            //Add Product
            var validProduct = new ProductCreateRequestBuilder()
                               .WithDefaultValues()
                               .Build();

            HttpContent addProductPayload = new StringContent(JsonConvert.SerializeObject(validProduct), Encoding.UTF8,
                                                              "application/json");
            var addProductResponse = await client.PostAsync($"/v1/products", addProductPayload);

            addProductResponse.EnsureSuccessStatusCode();

            Guid.TryParse(JsonConvert.DeserializeObject(await addProductResponse.Content.ReadAsStringAsync()).ToString(),
                          out var validProductId);
            return(validProductId);
        }
        public void ValidateSku_When_unique_Then_passes()
        {
            var validator = new ProductRequestCustomValidator();

            var request = ProductCreateRequestBuilder.Create().WithProduct(
                ProductDtoBuilder.Create().WithVariant(
                    ProductVariantDtoBuilder.Create().WithSku("001")
                    .Build())
                .Build())
                          .Build();

            var errors = new ArgumentErrorsCollection();

            var dbContextMock = GetDbContextMock();

            validator.ValidateSkus(dbContextMock.Object, request, errors);

            dbContextMock.VerifyGet(c => c.Products, Times.Once);

            Assert.IsEmpty(errors);
        }