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); }
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); }
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); } }
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); }