Commit 0c701ae8 authored by sgandhi's avatar sgandhi

test cases added and package corrections.

parent 8dfb835b
package com.nisum.offertransactionservice.dao;
import com.nisum.offertransactionservice.model.OfferTransactionRequest;
import com.nisum.offertransactionservice.model.OfferTransactionResponse;
import com.nisum.offertransactionservice.model.PERequest;
import com.nisum.offertransactionservice.model.PEResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import org.springframework.http.*;
import org.springframework.web.client.*;
@Component
@PropertySource("classpath:application.properties")
public class OfferDao {
@Autowired
private RestTemplate restTemplate;
@Value("${promotion.engine.calculate.discount.url}")
private String promotionEngineUrl ;
public PEResponse callPE(PERequest peRequest) {
ResponseEntity<PEResponse> peResponse = restTemplate.postForEntity("http://localhost:8081"+promotionEngineUrl,peRequest,PEResponse.class);
return peResponse.getBody();
}
}
...@@ -2,17 +2,21 @@ package com.nisum.offertransactionservice.service; ...@@ -2,17 +2,21 @@ package com.nisum.offertransactionservice.service;
import com.nisum.offertransactionservice.converter.OfferConverter; import com.nisum.offertransactionservice.converter.OfferConverter;
import com.nisum.offertransactionservice.converter.PEResponseToOfferTransactionResConverter; import com.nisum.offertransactionservice.converter.PEResponseToOfferTransactionResConverter;
import com.nisum.offertransactionservice.dao.OfferDao;
import com.nisum.offertransactionservice.dao.OfferLookupRepo; import com.nisum.offertransactionservice.dao.OfferLookupRepo;
import com.nisum.offertransactionservice.model.*; import com.nisum.offertransactionservice.model.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.List; import java.util.List;
import static com.google.common.collect.Lists.newArrayList; import static com.google.common.collect.Lists.newArrayList;
@Service @Service
@PropertySource("classpath:application.properties")
public class OfferCallingPEService { public class OfferCallingPEService {
@Autowired @Autowired
private OfferConverter offerConverter; private OfferConverter offerConverter;
...@@ -20,19 +24,23 @@ public class OfferCallingPEService { ...@@ -20,19 +24,23 @@ public class OfferCallingPEService {
@Autowired @Autowired
private OfferLookupRepo offerLookupRepo; private OfferLookupRepo offerLookupRepo;
@Autowired
private OfferDao offerDao;
@Autowired @Autowired
private PEResponseToOfferTransactionResConverter peResponseToOfferTransactionResConverter; private PEResponseToOfferTransactionResConverter peResponseToOfferTransactionResConverter;
@Autowired
private RestTemplate restTemplate;
@Value("${promotion.engine.calculate.discount.url}")
private String promotionEngineUrl ;
public OfferTransactionResponse getDiscountedItemList(OfferTransactionRequest offerTransactionRequest) { public OfferTransactionResponse getDiscountedItemList(OfferTransactionRequest offerTransactionRequest) {
List<OfferLookup> eligibleOffer = newArrayList(); List<OfferLookup> eligibleOffer = newArrayList();
offerLookupRepo.findAll().forEach(eligibleOffer::add); offerLookupRepo.findAll().forEach(eligibleOffer::add);
OfferTransactionResponse offerTransactionResponse ; OfferTransactionResponse offerTransactionResponse ;
PERequest peRequest = offerConverter.apply(offerTransactionRequest); PERequest peRequest = offerConverter.apply(offerTransactionRequest);
peRequest.setEligibleOffers(eligibleOffer); peRequest.setEligibleOffers(eligibleOffer);
PEResponse peResponse = offerDao.callPE(peRequest); ResponseEntity<PEResponse> peResponse = restTemplate.postForEntity("http://localhost:8081"+promotionEngineUrl,peRequest,PEResponse.class);
offerTransactionResponse = peResponseToOfferTransactionResConverter.apply(peResponse); offerTransactionResponse = peResponseToOfferTransactionResConverter.apply(peResponse.getBody());
return offerTransactionResponse; return offerTransactionResponse;
} }
} }
package com.nisum.offertransactionservice.dao;
import com.nisum.offertransactionservice.config.OfferTransactionConfig;
import com.nisum.offertransactionservice.model.Item;
import com.nisum.offertransactionservice.model.OfferLookup;
import com.nisum.offertransactionservice.model.PERequest;
import com.nisum.offertransactionservice.model.PEResponse;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.List;
@RunWith(MockitoJUnitRunner.class)
@PropertySource("classpath:application.properties")
public class OfferDaoTest {
@Mock
private RestTemplate restTemplate;
@InjectMocks
private OfferDao offerDao = new OfferDao();
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Value("${promotion.engine.calculate.discount.url}")
private String promotionEngineUrl ;
@Test
public void test(){
Mockito.when(restTemplate.postForEntity("http://localhost:8081"+promotionEngineUrl,getPeRequest(), PEResponse.class))
.thenReturn(new ResponseEntity<PEResponse>(getPeResponse(), HttpStatus.OK));
PEResponse peResponse = offerDao.callPE(getPeRequest());
Assert.assertEquals(peResponse,getPeResponse());
}
private PERequest getPeRequest(){
PERequest peRequest = new PERequest();
peRequest.setHhId("123");
List<Item> itemList = new ArrayList<>();
Item item1 = new Item("Coke","12",13.05,"cmsCoupons");
Item item2 = new Item("Thumpsup","11",14.05,"cmsCoupons");
itemList.add(item1);
itemList.add(item2);
peRequest.setItemList(itemList);
OfferLookup offerLookup1 = new OfferLookup("1","12","234","02","AND","BOGO");
OfferLookup offerLookup2 = new OfferLookup("2","13","234","02","OR","BXGY");
List<OfferLookup> offerLookups = new ArrayList<>();
offerLookups.add(offerLookup1);
offerLookups.add(offerLookup2);
peRequest.setEligibleOffers(offerLookups);
return peRequest;
}
private PEResponse getPeResponse(){
PEResponse peResponse = new PEResponse();
peResponse.setHhid("123");
List<Item> itemList = new ArrayList<>();
Item item1 = new Item("Coke","12",6.05,"cmsCoupons");
Item item2 = new Item("Thumpsup","11",12.32,"cmsCoupons");
itemList.add(item1);
itemList.add(item2);
peResponse.setDiscountedItemList(itemList);
return peResponse;
}
}
...@@ -2,7 +2,6 @@ package com.nisum.offertransactionservice.service; ...@@ -2,7 +2,6 @@ package com.nisum.offertransactionservice.service;
import com.nisum.offertransactionservice.converter.OfferConverter; import com.nisum.offertransactionservice.converter.OfferConverter;
import com.nisum.offertransactionservice.converter.PEResponseToOfferTransactionResConverter; import com.nisum.offertransactionservice.converter.PEResponseToOfferTransactionResConverter;
import com.nisum.offertransactionservice.dao.OfferDao;
import com.nisum.offertransactionservice.dao.OfferLookupRepo; import com.nisum.offertransactionservice.dao.OfferLookupRepo;
import com.nisum.offertransactionservice.model.*; import com.nisum.offertransactionservice.model.*;
import org.junit.Assert; import org.junit.Assert;
...@@ -11,8 +10,10 @@ import org.junit.Test; ...@@ -11,8 +10,10 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.*; import org.mockito.*;
import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -20,20 +21,25 @@ import java.util.stream.Collectors; ...@@ -20,20 +21,25 @@ import java.util.stream.Collectors;
@RunWith(MockitoJUnitRunner.class) @RunWith(MockitoJUnitRunner.class)
public class OfferServiceTest { public class OfferServiceTest {
@Mock
private RestTemplate restTemplate;
@Mock @Mock
private OfferConverter offerConverter; private OfferConverter offerConverter;
@Mock @Mock
private OfferLookupRepo offerLookupRepo; private OfferLookupRepo offerLookupRepo;
@Mock
private OfferDao offerDao;
@Mock @Mock
private PEResponseToOfferTransactionResConverter peResponseToOfferTransactionResConverter; private PEResponseToOfferTransactionResConverter peResponseToOfferTransactionResConverter;
@InjectMocks @InjectMocks
private OfferCallingPEService offerCallingPEService = new OfferCallingPEService(); private OfferCallingPEService offerCallingPEService = new OfferCallingPEService();
@Value("${promotion.engine.calculate.discount.url}")
private String promotionEngineUrl ;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
...@@ -44,7 +50,8 @@ public class OfferServiceTest { ...@@ -44,7 +50,8 @@ public class OfferServiceTest {
OfferTransactionRequest offerTransactionRequest = getOfferTransactionRequest(); OfferTransactionRequest offerTransactionRequest = getOfferTransactionRequest();
Mockito.when(offerLookupRepo.findAll()).thenReturn(returnOffers()); Mockito.when(offerLookupRepo.findAll()).thenReturn(returnOffers());
Mockito.when(offerConverter.apply(getOfferTransactionRequest())).thenReturn(getPEReq()); Mockito.when(offerConverter.apply(getOfferTransactionRequest())).thenReturn(getPEReq());
Mockito.when(offerDao.callPE(ArgumentMatchers.any())).thenReturn(getPeResponse()); Mockito.when(restTemplate.postForEntity("http://localhost:8081"+promotionEngineUrl,getPEReq(), PEResponse.class))
.thenReturn(new ResponseEntity<PEResponse>(getPeResponse(), HttpStatus.OK));
Mockito.when(peResponseToOfferTransactionResConverter.apply(getPeResponse())).thenReturn(retOfferTransRes()); Mockito.when(peResponseToOfferTransactionResConverter.apply(getPeResponse())).thenReturn(retOfferTransRes());
OfferTransactionResponse offerTransactionResponse = offerCallingPEService.getDiscountedItemList(offerTransactionRequest); OfferTransactionResponse offerTransactionResponse = offerCallingPEService.getDiscountedItemList(offerTransactionRequest);
......
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