Commit f80b22ac authored by Sumaiyya Burney's avatar Sumaiyya Burney

Merge branch 'AFP-60' into 'dev'

AFP-60

See merge request !7
parents f3212ca7 057c3619
File added
File added
......@@ -13,6 +13,7 @@ import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/api/promos")
......@@ -43,9 +44,8 @@ public class PromotionsController {
}
@PostMapping("/bulkSearch")
public Flux<ResponseEntity<PromotionDto>> bulkSearchPromotionsByItemSku(){
//TODO: bulk search by list of item SKUs
return null;
public ResponseEntity<Flux<PromotionDto>> bulkSearchPromotionsByItemSku(@RequestBody List<String> skus){
return ResponseEntity.ok(promotionService.bulkSearchSku(skus));
}
@PutMapping("/{promoId}")
......
......@@ -6,6 +6,7 @@ import com.nisum.ascend.promotions.repository.PromotionRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import java.util.List;
import reactor.core.publisher.Mono;
@Service
......@@ -27,6 +28,10 @@ public class PromotionService {
return promotionRepository.findByProductSku(sku).map(PromotionDto::generateDtoFromPromotion);
}
public Flux<PromotionDto> bulkSearchSku(List<String> skus){
return Flux.fromIterable(skus).flatMap(sku -> findPromotionsByProductSku(sku));
}
public Mono<PromotionDto> createPromotion(Promotion promotion){
return promotionRepository.save(promotion).map(PromotionDto::generateDtoFromPromotion);
}
......
......@@ -15,6 +15,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.web.reactive.server.WebTestClient;
import reactor.core.publisher.Mono;
import java.util.Arrays;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
......@@ -110,4 +111,32 @@ class PromotionsControllerTest {
promos.forEach(p -> assertEquals(skuWithMultiplePromos, p.getProductSku()));
});
}
@Test
public void bulkSearchTest(){
List<String> skus = Arrays.asList("AFP-1", "AFP-2");
webTestClient.post().uri("/api/promos/bulkSearch")
.contentType(MediaType.valueOf(MediaType.APPLICATION_JSON_VALUE))
.body(Mono.just(skus), List.class)
.exchange()
.expectStatus().isOk()
.expectBodyList(PromotionDto.class)
.consumeWith(promo ->{
List<PromotionDto> promos = promo.getResponseBody();
assert promos != null;
promos.forEach(p -> {
String sku = p.getProductSku();
String promotionId = p.getPromotionId();
assertTrue(skus.contains(sku));
System.out.println("Product SKU: " + sku);
System.out.println("Promotion ID: " + promotionId);
} );
});
}
}
\ 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