Commit 194e8d3a authored by Ben Anderson's avatar Ben Anderson

Created test for product POST route

parent 0fbd2d4a
...@@ -8,11 +8,11 @@ import org.springframework.data.mongodb.core.mapping.Document; ...@@ -8,11 +8,11 @@ import org.springframework.data.mongodb.core.mapping.Document;
@Getter @Getter
@Setter @Setter
@Document @Document(collection = "Products")
public class Product { public class Product {
@Id @Id
private String id; private String id;
@Indexed(unique=true) // @Indexed(name = "sku_index_unique", unique=true)
private String sku; private String sku;
private String upc; private String upc;
private String prodName; private String prodName;
......
...@@ -13,8 +13,9 @@ public class ProductService { ...@@ -13,8 +13,9 @@ public class ProductService {
ProductRepository productRepository; ProductRepository productRepository;
public Mono<ProductDto> createProduct(Product product) { public Mono<ProductDto> createProduct(Product product) {
// TODO: Add explicit check for existing SKU
return productRepository.save(product) return productRepository.save(product)
.map(ProductDto::generateDtoFromProduct) .map(ProductDto::generateDtoFromProduct)
.doOnError(System.out::println); .onErrorMap(throwable -> throwable);
} }
} }
...@@ -4,3 +4,4 @@ server.port=8080 ...@@ -4,3 +4,4 @@ server.port=8080
spring.data.mongodb.uri=mongodb+srv://admin:${db.password}@inventory-promotions.d4nfz.mongodb\ spring.data.mongodb.uri=mongodb+srv://admin:${db.password}@inventory-promotions.d4nfz.mongodb\
.net/${spring.data.mongodb.database}?retryWrites=true&w=majority .net/${spring.data.mongodb.database}?retryWrites=true&w=majority
spring.data.mongodb.database=products-promotions-DB spring.data.mongodb.database=products-promotions-DB
spring.data.mongodb.auto-index-creation= true
package com.nisum.ascend.inventory.controller;
import com.nisum.ascend.inventory.model.Product;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.web.reactive.server.WebTestClient;
import reactor.core.publisher.Mono;
import java.util.UUID;
import static org.junit.jupiter.api.Assertions.*;
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@DirtiesContext
@AutoConfigureWebTestClient
@ActiveProfiles("test")
@Slf4j
class ProductControllerTest {
@Autowired
private WebTestClient webTestClient;
@BeforeEach
void setUp() {
}
@Test
void postProduct() {
String sku = "SH=" + UUID.randomUUID();
Product product = new Product(sku, "3d2dsd9cm", "Red Sweater",
"A Nice red sweater", (float) 23.99, 45, "",
"SweatCo", "Sweatshirts");
webTestClient.post().uri("/api/products")
.contentType(MediaType.valueOf(MediaType.APPLICATION_JSON_VALUE))
.body(Mono.just(product), Product.class)
.exchange()
.expectStatus().isAccepted()
.expectBody()
.jsonPath("$.sku", sku);
}
}
\ No newline at end of file
spring.config.import=classpath:secret.properties
server.port=8080
spring.data.mongodb.uri=mongodb+srv://admin:${db.password}@inventory-promotions.d4nfz.mongodb\
.net/${spring.data.mongodb.database}?retryWrites=true&w=majority
spring.data.mongodb.database=test
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