public async Task ReturnNotFoundError()
        {
            // Arrange
            var productOptionId            = Guid.NewGuid();
            var updateProductOptionRequest =
                new UpdateProductOptionRequestBuilder().Build();

            // Act
            var response = await TestClient.PutAsJsonAsync(
                new UrlFactory(ApiRoutes.ProductOptions.Update).Create(product.Id, productOptionId),
                updateProductOptionRequest);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }
        public async Task UpdateExistingProductOption()
        {
            // Arrange
            var productOption = new ProductOptionBuilder()
                                .Build(product.Id);

            AddRecords(productOption);
            var updateProductOptionRequest =
                new UpdateProductOptionRequestBuilder().Build();

            // Act
            var response = await TestClient.PutAsJsonAsync(
                new UrlFactory(ApiRoutes.ProductOptions.Update).Create(product.Id, productOption.Id),
                updateProductOptionRequest);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.NoContent);

            // Teardown
            RemoveRecords(productOption);
        }
        public async Task ReturnUnprocessableEntityErrorWithLongAttributeValue()
        {
            // Arrange
            var productOption = new ProductOptionBuilder()
                                .Build(product.Id);

            AddRecords(productOption);
            var updateProductOptionRequest =
                new UpdateProductOptionRequestBuilder()
                .Name(Constansts.LONG_PRODUCT_OPTION_NAME)
                .Description(Constansts.LONG_PRODUCT_OPTION_DESCRIPTION)
                .Build();

            // Act
            var response = await TestClient.PutAsJsonAsync(
                new UrlFactory(ApiRoutes.ProductOptions.Update).Create(product.Id, productOption.Id),
                updateProductOptionRequest);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity);

            // Teardown
            RemoveRecords(productOption);
        }
        public async Task ReturnUnprocessableEntityErrorForEmptyAttributes()
        {
            // Arrange
            var productOption = new ProductOptionBuilder()
                                .Build(product.Id);

            AddRecords(productOption);
            var updateProductOptionRequest =
                new UpdateProductOptionRequestBuilder()
                .Name(string.Empty)
                .Description(string.Empty)
                .Build();

            // Act
            var response = await TestClient.PutAsJsonAsync(
                new UrlFactory(ApiRoutes.ProductOptions.Update).Create(product.Id, productOption.Id),
                updateProductOptionRequest);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.UnprocessableEntity);

            // Teardown
            RemoveRecords(productOption);
        }