Commit aebddc48 authored by sgandhi@nisum.com's avatar sgandhi@nisum.com

EPE-006 : Added component test cases

parent 86a9dc0a
......@@ -19,7 +19,7 @@ configurations {
repositories {
flatDir {
dirs 'C:\\Users\\abogari\\.m2\\repository\\com\\nisum\\exceptionservice\\0.0.1'
dirs '/Users/sivanagasomeswaragandhijatla/.m2/repository/com/nisum/exceptionservice/0.0.1'
// dirs '/Users/sivanagagasomeswaragandhijatla/.m2/repository/com/nisum/exceptionservice/0.0.1'
}
mavenCentral()
......
//package com.nisum.offertransactionservice.controller;
//
//import com.github.tomakehurst.wiremock.junit.WireMockRule;
//import com.nisum.offertransactionservice.config.FeignClientConfig;
//import com.nisum.offertransactionservice.dto.*;
//import com.nisum.offertransactionservice.model.OfferLookup;
//import org.junit.ClassRule;
//import org.junit.jupiter.api.Assertions;
//import org.junit.jupiter.api.BeforeEach;
//import org.junit.jupiter.api.Test;
//import org.junit.jupiter.api.extension.RegisterExtension;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.boot.test.web.client.TestRestTemplate;
//import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock;
//import org.springframework.cloud.openfeign.EnableFeignClients;
//import org.springframework.cloud.openfeign.FeignClient;
//import org.springframework.core.ParameterizedTypeReference;
//import org.springframework.http.HttpMethod;
//import org.springframework.http.RequestEntity;
//import org.springframework.http.ResponseEntity;
//import org.springframework.web.bind.annotation.PostMapping;
//
//import java.net.URI;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.stream.Collectors;
//
//import static com.github.tomakehurst.wiremock.client.WireMock.*;
//
//
//@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.DEFINED_PORT)
//@AutoConfigureWireMock
/*
package com.nisum.offertransactionservice.controller;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
import com.nisum.offertransactionservice.client.PromotionEngineFeignClient;
import com.nisum.offertransactionservice.config.FeignClientConfig;
import com.nisum.offertransactionservice.dto.*;
import com.nisum.offertransactionservice.model.OfferLookup;
import org.junit.ClassRule;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.mockito.Mock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpMethod;
import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
@SpringBootTest
@AutoConfigureWireMock
//@EnableFeignClients(clients = OfferTransactionControllerIntegrationTest.PromotionEngineFeignClient.class)
//public class OfferTransactionControllerIntegrationTest{
//
// @RegisterExtension
// @ClassRule
// public WireMockRule wireMockRule = new WireMockRule(9090);
//
// @Autowired
// private TestRestTemplate testRestTemplate;
//
//
//
// @FeignClient(name = "${pe.application.name}", url="${pe.application.url}", configuration = FeignClientConfig.class)
// public interface PromotionEngineFeignClient {
//
// @PostMapping(value = "${endpoint.url.promotionEngineUrl}")
// ResponseEntity<PEResponse> callPEService(PERequest peRequest);
// }
//
// @Autowired
// PromotionEngineFeignClient feignClientService;
//
// @BeforeEach
// public void setUp() {
// mockForOfferTransactionCall();
// mockForEndOfSale();
// mockForEndOfTransaction();
// }
//
// private void mockForOfferTransactionCall() {
// wireMockRule.stubFor(post(urlEqualTo("/promotionEngine/calculateDiscount"))
// .willReturn(aResponse()
// .withStatus(200)
// .withHeader("Content-Type", "application/json")
// .withBodyFile("response.json")
// ));
// }
//
// private void mockForEndOfSale() {
// wireMockRule.stubFor(post(urlEqualTo("/endOfSale"))
// .willReturn(aResponse()
// .withStatus(200)
// .withHeader("Content-Type", "application/json")
// .withBodyFile("endOfSale-response.json")
// ));
// }
//
// private void mockForEndOfTransaction() {
// wireMockRule.stubFor(post(urlEqualTo("/endOfTransaction"))
// .willReturn(aResponse()
// .withStatus(200)
// .withHeader("Content-Type", "application/json")
// .withBodyFile("endOfTransaction-response.json")
// ));
// }
//
// @Test
// public void getOfferTransactionResponseTest() {
// URI uri = URI.create("http://localhost:7072/offer-service/offerTransactionCall");
// RequestEntity requestEntity = new RequestEntity(getOfferTransactionRequest(),HttpMethod.POST,uri);
//
// ResponseEntity<OfferTransactionResponse> responseEntity = testRestTemplate.exchange("http://localhost:7072/offer-service/offerTransactionCall", HttpMethod.POST,requestEntity,
// new ParameterizedTypeReference<OfferTransactionResponse>(){}
// );
// OfferTransactionResponse offerTransactionResponse = responseEntity.getBody();
// System.out.println(offerTransactionResponse);
// Assertions.assertNotNull(offerTransactionResponse.getTransactionId());
//
// }
//
// @Test
// public void endOfSaleTest() {
// URI uri = URI.create("http://localhost:7072/endOfSale");
// RequestEntity requestEntity = new RequestEntity(getEndOfSaleReq(),HttpMethod.POST,uri);
//
// ResponseEntity<EndOfSaleResponse> responseEntity = testRestTemplate.exchange("http://localhost:7072/endOfSale", HttpMethod.POST,requestEntity,
// new ParameterizedTypeReference<EndOfSaleResponse>(){}
// );
// EndOfSaleResponse endOfSaleResponse = responseEntity.getBody();
// Assertions.assertNotNull(endOfSaleResponse.getUuId());
//
// }
//
// @Test
// public void endOfTransactionTest() {
// URI uri = URI.create("http://localhost:7072/endOfTransaction");
// String uuid = "86fd4146-0540-405b-b621-a95f4ccdfa0d";
// RequestEntity requestEntity = new RequestEntity(uuid,HttpMethod.POST,uri);
//
// ResponseEntity<String> responseEntity = testRestTemplate.exchange("http://localhost:7072/endOfTransaction", HttpMethod.POST,requestEntity,
// new ParameterizedTypeReference<String>(){}
// );
// String endOfTransactionRes = responseEntity.getBody();
// Assertions.assertNotNull(endOfTransactionRes);
//
// }
//
// private EndOfSaleReq getEndOfSaleReq() {
// EndOfSaleReq endOfSaleReq = new EndOfSaleReq();
// endOfSaleReq.setOfferTransactionResponse(retOfferTransRes());
// endOfSaleReq.setOffers(returnOffers());
// return endOfSaleReq;
// }
//
//
// private OfferTransactionResponse retOfferTransRes() {
// OfferTransactionResponse offerTransactionResponse = new OfferTransactionResponse();
// offerTransactionResponse.setHhid("123");
// List<Item> itemList = new ArrayList<>();
// Item item1 = new Item("Coke", "12", 6.05);
// Item item2 = new Item("Thumpsup", "11", 12.32);
// itemList.add(item1);
// itemList.add(item2);
// offerTransactionResponse.setDiscountedItemList(itemList);
// offerTransactionResponse.setTransactionId("123456788899999998");
// return offerTransactionResponse;
// }
//
//
//
// public List<OfferLookup> returnOffers() {
// OfferLookup offerLookup1 = new OfferLookup("1", "12", 23L, "02", "AND", "BOGO");
// OfferLookup offerLookup2 = new OfferLookup("2", "13", 24L, "02", "OR", "BXGY");
// List<OfferLookup> offerLookups = new ArrayList<>();
// offerLookups.add(offerLookup1);
// offerLookups.add(offerLookup2);
// return offerLookups.stream().collect(Collectors.toList());
// }
//
// private OfferTransactionRequest getOfferTransactionRequest() {
// OfferTransactionRequest offerTransactionRequest = new OfferTransactionRequest();
// offerTransactionRequest.setHhId("54321");
// offerTransactionRequest.setItemList(getItemList());
// return offerTransactionRequest;
// }
//
// private List<Item> getItemList() {
// List<Item> itemList = new ArrayList<>();
// Item item1 = new Item("Coke", "12", 13.05);
// Item item2 = new Item("Thumpsup", "11", 14.05);
// itemList.add(item1);
// itemList.add(item2);
// return itemList;
// }
//}
public class OfferTransactionControllerIntegrationTest{
@RegisterExtension
@ClassRule
public WireMockRule wireMockRule = new WireMockRule();
@Mock
PromotionEngineFeignClient feignClientService;
@BeforeEach
public void setUp() {
mockForOfferTransactionCall();
mockForEndOfSale();
mockForEndOfTransaction();
}
private void mockForOfferTransactionCall() {
wireMockRule.stubFor(post(urlEqualTo("/promotionEngine/calculateDiscount"))
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "application/json")
.withBodyFile("response.json")
));
}
private void mockForEndOfSale() {
wireMockRule.stubFor(post(urlEqualTo("/endOfSale"))
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "application/json")
.withBodyFile("endOfSale-response.json")
));
}
private void mockForEndOfTransaction() {
wireMockRule.stubFor(post(urlEqualTo("/endOfTransaction"))
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "application/json")
.withBodyFile("endOfTransaction-response.json")
));
}
@Test
public void getOfferTransactionResponseTest() {
*/
/*URI uri = URI.create("http://localhost:7072/offer-service/offerTransactionCall");
RequestEntity requestEntity = new RequestEntity(getOfferTransactionRequest(),HttpMethod.POST,uri);
ResponseEntity<OfferTransactionResponse> responseEntity = feignClientService.exchange("http://localhost:7072/offer-service/offerTransactionCall", HttpMethod.POST,requestEntity,
new ParameterizedTypeReference<OfferTransactionResponse>(){}
);
OfferTransactionResponse offerTransactionResponse = responseEntity.getBody();
System.out.println(offerTransactionResponse);
Assertions.assertNotNull(offerTransactionResponse.getTransactionId());*//*
}
@Test
public void endOfSaleTest() {
URI uri = URI.create("http://localhost:7072/endOfSale");
RequestEntity requestEntity = new RequestEntity(getEndOfSaleReq(),HttpMethod.POST,uri);
ResponseEntity<EndOfSaleResponse> responseEntity = testRestTemplate.exchange("http://localhost:7072/endOfSale", HttpMethod.POST,requestEntity,
new ParameterizedTypeReference<EndOfSaleResponse>(){}
);
EndOfSaleResponse endOfSaleResponse = responseEntity.getBody();
Assertions.assertNotNull(endOfSaleResponse.getUuId());
}
@Test
public void endOfTransactionTest() {
URI uri = URI.create("http://localhost:7072/endOfTransaction");
String uuid = "86fd4146-0540-405b-b621-a95f4ccdfa0d";
RequestEntity requestEntity = new RequestEntity(uuid,HttpMethod.POST,uri);
ResponseEntity<String> responseEntity = testRestTemplate.exchange("http://localhost:7072/endOfTransaction", HttpMethod.POST,requestEntity,
new ParameterizedTypeReference<String>(){}
);
String endOfTransactionRes = responseEntity.getBody();
Assertions.assertNotNull(endOfTransactionRes);
}
private EndOfSaleReq getEndOfSaleReq() {
EndOfSaleReq endOfSaleReq = new EndOfSaleReq();
endOfSaleReq.setOfferTransactionResponse(retOfferTransRes());
endOfSaleReq.setOffers(returnOffers());
return endOfSaleReq;
}
private OfferTransactionResponse retOfferTransRes() {
OfferTransactionResponse offerTransactionResponse = new OfferTransactionResponse();
offerTransactionResponse.setHhid("123");
List<Item> itemList = new ArrayList<>();
Item item1 = new Item("Coke", "12", 6.05);
Item item2 = new Item("Thumpsup", "11", 12.32);
itemList.add(item1);
itemList.add(item2);
offerTransactionResponse.setDiscountedItemList(itemList);
offerTransactionResponse.setTransactionId("123456788899999998");
return offerTransactionResponse;
}
public List<OfferLookup> returnOffers() {
OfferLookup offerLookup1 = new OfferLookup("1", "12", 23L, "02", "AND", "BOGO");
OfferLookup offerLookup2 = new OfferLookup("2", "13", 24L, "02", "OR", "BXGY");
List<OfferLookup> offerLookups = new ArrayList<>();
offerLookups.add(offerLookup1);
offerLookups.add(offerLookup2);
return offerLookups.stream().collect(Collectors.toList());
}
private OfferTransactionRequest getOfferTransactionRequest() {
OfferTransactionRequest offerTransactionRequest = new OfferTransactionRequest();
offerTransactionRequest.setHhId("54321");
offerTransactionRequest.setItemList(getItemList());
return offerTransactionRequest;
}
private List<Item> getItemList() {
List<Item> itemList = new ArrayList<>();
Item item1 = new Item("Coke", "12", 13.05);
Item item2 = new Item("Thumpsup", "11", 14.05);
itemList.add(item1);
itemList.add(item2);
return itemList;
}
}
*/
//package com.nisum.offertransactionservice.controller;
//
//import com.nisum.offertransactionservice.client.ClientService;
//import com.nisum.offertransactionservice.dao.EndOfSaleRepo;
//import com.nisum.offertransactionservice.dao.OfferLookupRepo;
//import com.nisum.offertransactionservice.dao.OfferMetaDataRepo;
//import com.nisum.offertransactionservice.dto.*;
//import com.nisum.offertransactionservice.model.EndOfSaleEntity;
//import com.nisum.offertransactionservice.model.OfferLookup;
//import com.nisum.offertransactionservice.model.OfferMeta;
//import com.nisum.offertransactionservice.service.OfferCallingPEService;
//import org.junit.jupiter.api.Test;
//import org.junit.jupiter.params.ParameterizedTest;
//import org.junit.jupiter.params.provider.ValueSource;
//import org.mockito.ArgumentMatchers;
//import org.mockito.InjectMocks;
//import org.mockito.Mock;
//import org.mockito.Mockito;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.context.annotation.Description;
//import reactor.core.publisher.Mono;
//
//import java.io.IOException;
//import java.time.LocalDateTime;
//import java.util.*;
//
//import static org.junit.jupiter.api.Assertions.assertEquals;
//import static org.mockito.Mockito.when;
//
//@SpringBootTest
//class OfferTransactionControllerTest {
//
// @InjectMocks
// @Autowired
// private OfferTransactionController offerTransactionController;
//
// @Mock
// private OfferLookupRepo offerLookupRepo;
//
// @Mock
// private OfferMetaDataRepo offerMetaDataRepo;
//
// @Mock
// private EndOfSaleRepo endOfSaleRepo;
//
// @Mock
// private ClientService clientService;
//
// private String HH_ID_FOR_END_OF_SALE = "id01";
//
// private String TRANSACTION_ID_FOR_END_OF_SALE = "tx01";
//
// private final String UU_ID_FOR_END_OF_TRANSACTION = "id01";
//
// private String DISCOUNT_DESC = "10 percent";
//
//
// @Mock
// private OfferCallingPEService offerCallingPEService;
//
// @Description("Component test for getOfferTransactionResponse method")
// @Test
// void getOfferTransactionResponse() throws InterruptedException {
// when(offerLookupRepo.findByHhId(ArgumentMatchers.any(),ArgumentMatchers.any())).thenReturn(getOffers());
// when(clientService.getPeResponseFlux(Mockito.any(PERequest.class))).thenReturn(getPeResponse());
// when(offerCallingPEService.getOfferMetaDto(ArgumentMatchers.any())).thenReturn(getOfferLookupDto());
// Mockito.doReturn(Optional.of(getOfferMeta())).when(offerMetaDataRepo).findByOfferIdAndOfferStatusIgnoreCase(Mockito.anyLong(), Mockito.anyString());
// OfferTransactionResponse offerTransactionResponse = offerTransactionController.getOfferTransactionResponse(getOfferTransactionRequest());
// assertEquals(true,Objects.nonNull(offerTransactionResponse.getTransactionId()));
// }
//
// @Description("Component test for endOfSale method")
// @Test
// void endOfSale() throws IOException {
// when(endOfSaleRepo.save(Mockito.any(EndOfSaleEntity.class))).thenReturn(new EndOfSaleEntity());
// assertEquals(true,Objects.nonNull(offerTransactionController.endOfSale(buildEndOfSaleReq())));
// }
//
// @Description("Component test for endOfTransaction method")
// @ParameterizedTest
// @ValueSource(strings = {UU_ID_FOR_END_OF_TRANSACTION})
// void endOfTransaction(String uuId) {
// when(clientService.getStringMono(Mockito.anyString())).thenReturn(getMonoOfString());
// assertEquals(true,Objects.nonNull(offerTransactionController.endOfTransaction(uuId)));
// }
//
// private List<OfferLookup> getOffers() {
// OfferLookup offerLookup1 = new OfferLookup("123", "12", 234L, "02", "AND", "BOGO");
// OfferLookup offerLookup2 = new OfferLookup("1213", "13", 234L, "02", "OR", "BXGY");
// List<OfferLookup> offerLookups = new ArrayList<>();
// offerLookups.add(offerLookup1);
// offerLookups.add(offerLookup2);
// return offerLookups;
// }
//
// private OfferTransactionRequest getOfferTransactionRequest() {
// OfferTransactionRequest offerTransactionRequest = new OfferTransactionRequest();
// offerTransactionRequest.setHhId("54321");
// offerTransactionRequest.setItemList(getItemList());
// return offerTransactionRequest;
// }
//
// private PEResponse getPeResponse() {
// PEResponse peResponse = new PEResponse();
// peResponse.setHhid(123L);
// peResponse.setDiscountedItemList(getItemList());
// return peResponse;
// }
//
// private EndOfSaleReq buildEndOfSaleReq() {
// OfferTransactionResponse offerTransactionResponse = new OfferTransactionResponse(HH_ID_FOR_END_OF_SALE, TRANSACTION_ID_FOR_END_OF_SALE, getItemList(),DISCOUNT_DESC);
// EndOfSaleReq endOfSaleReq = new EndOfSaleReq(offerTransactionResponse, getOffers());
// return endOfSaleReq;
// }
//
// private List<Item> getItemList() {
// List<Item> itemList = new ArrayList<>();
// Item item1 = new Item("Coke", "12", 13.05);
// Item item2 = new Item("Thumpsup", "11", 14.05);
// itemList.add(item1);
// itemList.add(item2);
// return itemList;
// }
// private Mono<String> getMonoOfString() {
// return Mono.just("MONO_TO_STRING");
// }
//
//
// private OfferMeta getOfferMeta(){
// OfferMeta offerMetaDTO = new OfferMeta();
// offerMetaDTO.setDiscount("discount");
// offerMetaDTO.setEligibility("eligibility");
// offerMetaDTO.setExpiryTime(LocalDateTime.of(2021,01,01,01,01));
// offerMetaDTO.setStartTime(LocalDateTime.of(2020,01,01,01,01));
// offerMetaDTO.setOfferDesc("30 percent");
// offerMetaDTO.setOfferId(1L);
// offerMetaDTO.setOfferStatus("Active");
// offerMetaDTO.setRcptTxt("text");
// offerMetaDTO.setOfferType("aaa");
// return offerMetaDTO;
// }
//
//
// private List<OfferLookupDTO> getOfferLookupDto(){
// OfferLookupDTO offerLookupDTO = new OfferLookupDTO();
// offerLookupDTO.setId("123");
// offerLookupDTO.setIdType("1234");
// offerLookupDTO.setOfferId(1L);
// offerLookupDTO.setPreCondition("And");
// offerLookupDTO.setStoreId("001");
// offerLookupDTO.setTerminal("001");
//
// OfferMetaDTO offerMetaDTO = new OfferMetaDTO();
// offerMetaDTO.setDiscount("discount");
// offerMetaDTO.setEligibility("eligibility");
// offerMetaDTO.setExpiryTime(LocalDateTime.of(2021,01,01,01,01));
// offerMetaDTO.setStartTime(LocalDateTime.of(2020,01,01,01,01));
// offerMetaDTO.setOfferDesc("30 percent");
// offerMetaDTO.setOfferId(1L);
// offerMetaDTO.setOfferStatus("Active");
// offerMetaDTO.setRcptTxt("text");
// offerMetaDTO.setOfferType("aaa");
//
// offerLookupDTO.setOfferMetaDTO(offerMetaDTO);
//
//
// OfferLookupDTO offerLookupDTO1 = new OfferLookupDTO();
// offerLookupDTO1.setId("123");
// offerLookupDTO1.setIdType("1234");
// offerLookupDTO1.setOfferId(1L);
// offerLookupDTO1.setPreCondition("And");
// offerLookupDTO1.setStoreId("001");
// offerLookupDTO1.setTerminal("001");
//
// OfferMetaDTO offerMetaDTO1 = new OfferMetaDTO();
// offerMetaDTO1.setDiscount("discount");
// offerMetaDTO1.setEligibility("eligibility");
// offerMetaDTO1.setExpiryTime(LocalDateTime.of(2021,01,01,01,01));
// offerMetaDTO1.setStartTime(LocalDateTime.of(2020,01,01,01,01));
// offerMetaDTO1.setOfferDesc("20 percent");
// offerMetaDTO1.setOfferId(1L);
// offerMetaDTO1.setOfferStatus("Active");
// offerMetaDTO1.setRcptTxt("text");
// offerMetaDTO1.setOfferType("aaa");
//
// offerLookupDTO1.setOfferMetaDTO(offerMetaDTO);
//
//
// List<OfferLookupDTO> offerLookupDTOList = Arrays.asList(offerLookupDTO1, offerLookupDTO);
// return offerLookupDTOList;
//
//
// }
//}
\ No newline at end of file
package com.nisum.offertransactionservice.controller;
import com.nisum.offertransactionservice.client.PromotionEngineFeignClient;
import com.nisum.offertransactionservice.client.StoreProducerFeignClient;
import com.nisum.offertransactionservice.dao.EndOfSaleRepo;
import com.nisum.offertransactionservice.dao.OfferLookupRepo;
import com.nisum.offertransactionservice.dao.OfferMetaDataRepo;
import com.nisum.offertransactionservice.dto.*;
import com.nisum.offertransactionservice.model.EndOfSaleEntity;
import com.nisum.offertransactionservice.model.OfferLookup;
import com.nisum.offertransactionservice.model.OfferMeta;
import com.nisum.offertransactionservice.service.OfferCallingPEService;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.ArgumentMatchers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Description;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import reactor.core.publisher.Mono;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.when;
@SpringBootTest
class OfferTransactionControllerTest {
@InjectMocks
@Autowired
private OfferTransactionController offerTransactionController;
@Mock
private OfferLookupRepo offerLookupRepo;
@Mock
private OfferMetaDataRepo offerMetaDataRepo;
@Mock
private EndOfSaleRepo endOfSaleRepo;
@Mock
private PromotionEngineFeignClient clientService;
@Mock
private StoreProducerFeignClient storeProducerFeignClient;
private String HH_ID_FOR_END_OF_SALE = "id01";
private String TRANSACTION_ID_FOR_END_OF_SALE = "tx01";
private final String UU_ID_FOR_END_OF_TRANSACTION = "id01";
private String DISCOUNT_DESC = "10 percent";
@Mock
private OfferCallingPEService offerCallingPEService;
@Description("Component test for getOfferTransactionResponse method")
@Test
void getOfferTransactionResponse() throws InterruptedException {
when(offerLookupRepo.findByHhId(ArgumentMatchers.any(),ArgumentMatchers.any())).thenReturn(getOffers());
when(clientService.callPEService(Mockito.any(PERequest.class))).thenReturn(getPeResponse());
when(offerCallingPEService.getOfferMetaDto(ArgumentMatchers.any())).thenReturn(getOfferLookupDto());
Mockito.doReturn(Optional.of(getOfferMeta())).when(offerMetaDataRepo).findByOfferIdAndOfferStatusIgnoreCase(Mockito.anyLong(), Mockito.anyString());
OfferTransactionResponse offerTransactionResponse = offerTransactionController.getOfferTransactionResponse(getOfferTransactionRequest());
assertEquals(true,Objects.nonNull(offerTransactionResponse.getTransactionId()));
}
@Description("Component test for endOfSale method")
@Test
void endOfSale() throws IOException {
when(endOfSaleRepo.save(Mockito.any(EndOfSaleEntity.class))).thenReturn(new EndOfSaleEntity());
assertEquals(true,Objects.nonNull(offerTransactionController.endOfSale(buildEndOfSaleReq())));
}
@Description("Component test for endOfTransaction method")
@ParameterizedTest
@ValueSource(strings = {UU_ID_FOR_END_OF_TRANSACTION})
void endOfTransaction(String uuId) {
when(storeProducerFeignClient.callStoreProducer(Mockito.anyString())).thenReturn(getResponseEntityString());
assertEquals(true,Objects.nonNull(offerTransactionController.endOfTransaction(uuId)));
}
private List<OfferLookup> getOffers() {
OfferLookup offerLookup1 = new OfferLookup("123", "12", 234L, "02", "AND", "BOGO");
OfferLookup offerLookup2 = new OfferLookup("1213", "13", 234L, "02", "OR", "BXGY");
List<OfferLookup> offerLookups = new ArrayList<>();
offerLookups.add(offerLookup1);
offerLookups.add(offerLookup2);
return offerLookups;
}
private OfferTransactionRequest getOfferTransactionRequest() {
OfferTransactionRequest offerTransactionRequest = new OfferTransactionRequest();
offerTransactionRequest.setHhId("54321");
offerTransactionRequest.setItemList(getItemList());
return offerTransactionRequest;
}
private ResponseEntity<PEResponse> getPeResponse() {
PEResponse peResponse = new PEResponse();
peResponse.setHhid(123L);
peResponse.setDiscountedItemList(getItemList());
return new ResponseEntity<PEResponse>(peResponse,HttpStatus.ACCEPTED);
}
private EndOfSaleReq buildEndOfSaleReq() {
OfferTransactionResponse offerTransactionResponse = new OfferTransactionResponse(HH_ID_FOR_END_OF_SALE, TRANSACTION_ID_FOR_END_OF_SALE, getItemList(),DISCOUNT_DESC);
EndOfSaleReq endOfSaleReq = new EndOfSaleReq(offerTransactionResponse, getOffers());
return endOfSaleReq;
}
private List<Item> getItemList() {
List<Item> itemList = new ArrayList<>();
Item item1 = new Item("Coke", "12", 13.05);
Item item2 = new Item("Thumpsup", "11", 14.05);
itemList.add(item1);
itemList.add(item2);
return itemList;
}
private ResponseEntity<String> getResponseEntityString() {
return new ResponseEntity<String> ("STRING",HttpStatus.ACCEPTED);
}
private OfferMeta getOfferMeta(){
OfferMeta offerMetaDTO = new OfferMeta();
offerMetaDTO.setDiscount("discount");
offerMetaDTO.setEligibility("eligibility");
offerMetaDTO.setExpiryTime(LocalDateTime.of(2021,01,01,01,01));
offerMetaDTO.setStartTime(LocalDateTime.of(2020,01,01,01,01));
offerMetaDTO.setOfferDesc("30 percent");
offerMetaDTO.setOfferId(1L);
offerMetaDTO.setOfferStatus("Active");
offerMetaDTO.setRcptTxt("text");
offerMetaDTO.setOfferType("aaa");
return offerMetaDTO;
}
private List<OfferLookupDTO> getOfferLookupDto(){
OfferLookupDTO offerLookupDTO = new OfferLookupDTO();
offerLookupDTO.setId("123");
offerLookupDTO.setIdType("1234");
offerLookupDTO.setOfferId(1L);
offerLookupDTO.setPreCondition("And");
offerLookupDTO.setStoreId("001");
offerLookupDTO.setTerminal("001");
OfferMetaDTO offerMetaDTO = new OfferMetaDTO();
offerMetaDTO.setDiscount("discount");
offerMetaDTO.setEligibility("eligibility");
offerMetaDTO.setExpiryTime(LocalDateTime.of(2021,01,01,01,01));
offerMetaDTO.setStartTime(LocalDateTime.of(2020,01,01,01,01));
offerMetaDTO.setOfferDesc("30 percent");
offerMetaDTO.setOfferId(1L);
offerMetaDTO.setOfferStatus("Active");
offerMetaDTO.setRcptTxt("text");
offerMetaDTO.setOfferType("aaa");
offerLookupDTO.setOfferMetaDTO(offerMetaDTO);
OfferLookupDTO offerLookupDTO1 = new OfferLookupDTO();
offerLookupDTO1.setId("123");
offerLookupDTO1.setIdType("1234");
offerLookupDTO1.setOfferId(1L);
offerLookupDTO1.setPreCondition("And");
offerLookupDTO1.setStoreId("001");
offerLookupDTO1.setTerminal("001");
OfferMetaDTO offerMetaDTO1 = new OfferMetaDTO();
offerMetaDTO1.setDiscount("discount");
offerMetaDTO1.setEligibility("eligibility");
offerMetaDTO1.setExpiryTime(LocalDateTime.of(2021,01,01,01,01));
offerMetaDTO1.setStartTime(LocalDateTime.of(2020,01,01,01,01));
offerMetaDTO1.setOfferDesc("20 percent");
offerMetaDTO1.setOfferId(1L);
offerMetaDTO1.setOfferStatus("Active");
offerMetaDTO1.setRcptTxt("text");
offerMetaDTO1.setOfferType("aaa");
offerLookupDTO1.setOfferMetaDTO(offerMetaDTO);
List<OfferLookupDTO> offerLookupDTOList = Arrays.asList(offerLookupDTO1, offerLookupDTO);
return offerLookupDTOList;
}
}
\ No newline at end of file
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/storedb
spring.datasource.username=postgres
spring.datasource.password=dbpwd
server.port = 7072
spring.application.name=ots
# PE Application properties
pe.application.name=pe
pe.application.url=http://localhost:9090
endpoint.url.promotionEngineUrl=/promotionEngine/calculateDiscount
endpoint.url.peBaseUrl=http://localhost:7073
# Store Producer Application properties
storeproducer.application.name=storeproducer
endpoint.url.storeProducerUrl=/store/producer
endpoint.url.spBaseUrl=http://localhost:7070
server.port = 7072
\ No newline at end of file
#Eureka server url
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka
endpoints.restart.enabled=true
endpoints.shutdown.enabled=true
endpoints.health.sensitive=false
maxattempts=3
backoff=2000
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