Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OTSWithFeign
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Bhaskar Katakam
OTSWithFeign
Commits
aebddc48
Commit
aebddc48
authored
May 08, 2020
by
sgandhi@nisum.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
EPE-006 : Added component test cases
parent
86a9dc0a
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
395 additions
and
379 deletions
+395
-379
build.gradle
build.gradle
+1
-1
OfferTransactionControllerIntegrationTest.java
...controller/OfferTransactionControllerIntegrationTest.java
+174
-177
OfferTransactionControllerTest.java
...ionservice/controller/OfferTransactionControllerTest.java
+201
-195
application-integration.properties
src/test/resources/application-integration.properties
+19
-6
No files found.
build.gradle
View file @
aebddc48
...
...
@@ -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
()
...
...
src/test/java/com/nisum/offertransactionservice/controller/OfferTransactionControllerIntegrationTest.java
View file @
aebddc48
//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;
}
}
*/
src/test/java/com/nisum/offertransactionservice/controller/OfferTransactionControllerTest.java
View file @
aebddc48
//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
src/test/resources/application-integration.properties
View file @
aebddc48
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment