Commit 823c3fdd authored by Ben Anderson's avatar Ben Anderson

Resolved merge conflict

parents 3335d62c 14dde8b3
......@@ -37,6 +37,12 @@ public class ProductController {
return ResponseEntity.ok(productService.findAllProducts());
}
@PutMapping("/{sku}")
public Mono<ResponseEntity<Product>> updateProduct(@PathVariable String sku, @RequestBody Product product){
return productService.updateProductBySku(sku, product)
.map(updatedProduct -> ResponseEntity.ok(updatedProduct))
.defaultIfEmpty(ResponseEntity.badRequest().build());
}
@PostMapping("")
public Mono<ProductDto> postProduct(@RequestBody Product product) {
......
......@@ -35,6 +35,20 @@ public class ProductService {
.map(ProductDto::generateDtoFromProduct);
}
public Mono<Product> updateProductBySku(String sku, Product product){
return productRepository.findBySku(sku)
.flatMap(dbProduct -> {
dbProduct.setUpc(product.getUpc());
dbProduct.setProductName(product.getProductName());
dbProduct.setProductDescription(product.getProductDescription());
dbProduct.setBrand(product.getBrand());
dbProduct.setCategory(product.getCategory());
dbProduct.setPrice(product.getPrice());
dbProduct.setAvailableStock(product.getAvailableStock());
dbProduct.setProductImageUrl(product.getProductImageUrl());
return productRepository.save(dbProduct);
});
}
public Mono<ProductDto> createProduct(Product product) {
return productRepository.save(product)
......
......@@ -81,7 +81,6 @@ class ProductControllerTest {
.jsonPath("$.sku", sku);
}
@Test
void testFindAllProducts(){
webTestClient.get()
......@@ -101,9 +100,6 @@ class ProductControllerTest {
});
}
@Test
void postProduct() {
String sku = "SH=" + UUID.randomUUID();
......@@ -118,4 +114,38 @@ class ProductControllerTest {
.expectBody()
.jsonPath("$.sku", sku);
}
@Test
public void updateProduct(){
double newPrice = 49.99;
String sku = "SH=1123";
Product product = new Product(sku, "3d2dsd9cm", "Blue Sweater",
"A Nice red sweater", (float) newPrice, 45, "",
"SweatCo", "Sweatshirts");
webTestClient.put().uri("/api/products".concat("/{sku}"),sku)
.contentType(MediaType.valueOf(MediaType.APPLICATION_JSON_VALUE))
.accept(MediaType.valueOf(MediaType.APPLICATION_JSON_VALUE))
.body(Mono.just(product),Product.class)
.exchange()
.expectStatus().isOk()
.expectBody()
.jsonPath("$.price").isEqualTo(newPrice);
}
@Test
public void updateProduct_notFound(){
double newPrice = 49.99;
String sku = "SH=2021";
Product product = new Product(sku, "3d2dsd9cm", "Blue Sweater",
"A Nice red sweater", (float) 23.99, 45, "",
"SweatCo", "Sweatshirts");
webTestClient.put().uri("/api/products".concat("/{sku}"),sku)
.contentType(MediaType.valueOf(MediaType.APPLICATION_JSON_VALUE))
.accept(MediaType.valueOf(MediaType.APPLICATION_JSON_VALUE))
.body(Mono.just(product),Product.class)
.exchange()
.expectStatus().isBadRequest();
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment